[FIX] payment_stripe: support payments through website_quote

Contrary to other payment acquirers all transactions through stripe are
s2s transactions. Because of this payment_stripe has to create it's own
payment.transactions which is unusual.

Because of this payment_stripe needs a sale order id which will be
provided by website_sale in request.session. website_quote doesn't do
this so this extracts it from the return_url, just like
website_quotation.js does.

opw-678117
This commit is contained in:
Joren Van Onder
2016-05-30 13:42:04 +02:00
parent 5e4f1f5ab3
commit 2d0053a80a
2 changed files with 12 additions and 3 deletions
+5 -2
View File
@@ -30,10 +30,13 @@ class StripeController(http.Controller):
Expects the result from the user input from checkout.js popup"""
acquirer = request.env['payment.acquirer'].browse(int(post.get('acquirer_id')))
order = request.env['sale.order'].sudo().browse(int(request.session.get('sale_order_id')))
sale_order_id = int(request.session.get('sale_order_id') or post.get('sale_order_id'))
order = request.env['sale.order'].sudo().browse(sale_order_id)
tx = request.env['payment.transaction'].sudo().create({
'acquirer_id': acquirer.id,
'reference': str(post.get('invoice_num')),
'reference': 'STRIPE-%s' % order.id,
'amount': float(post.get('amount')),
'currency_id': request.env['res.currency'].search([('name', '=', post.get('currency'))], limit=1).id,
'partner_id': request.env.user.partner_id.id,
@@ -12,6 +12,11 @@ odoo.define('payment_stripe.stripe', function(require) {
}
},
token: function(token, args) {
var sale_order_id = $("input[name='return_url']").val().match(/quote\/([0-9]+)/);
if (sale_order_id) {
sale_order_id = parseInt(sale_order_id[1]);
}
handler.isTokenGenerate = true;
ajax.jsonRpc("/payment/stripe/create_charge", 'call', {
tokenid: token.id,
@@ -20,7 +25,8 @@ odoo.define('payment_stripe.stripe', function(require) {
acquirer_id: $("#acquirer_stripe").val(),
currency: $("input[name='currency']").val(),
invoice_num: $("input[name='invoice_num']").val(),
return_url: $("input[name='return_url']").val()
return_url: $("input[name='return_url']").val(),
sale_order_id: sale_order_id,
}).done(function(data){
handler.isTokenGenerate = false;
window.location.href = data;