diff --git a/addons/payment_stripe/controllers/main.py b/addons/payment_stripe/controllers/main.py index 3075ec68399..f2f2d60b8f5 100644 --- a/addons/payment_stripe/controllers/main.py +++ b/addons/payment_stripe/controllers/main.py @@ -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, diff --git a/addons/payment_stripe/static/src/js/stripe.js b/addons/payment_stripe/static/src/js/stripe.js index a2399f5ea25..6c9577925e5 100644 --- a/addons/payment_stripe/static/src/js/stripe.js +++ b/addons/payment_stripe/static/src/js/stripe.js @@ -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;