[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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user