[FIX] payment_stripe: Make stripe.js code more generic
- Stripe.js was limited to only a few pages, which means, if you tried to implement a new payment route it would never work without modifying stripe.js to support the new case. This commit allows stripe.js to be generic and work with any page.
This commit is contained in:
@@ -87,74 +87,30 @@ odoo.define('payment_stripe.stripe', function(require) {
|
||||
payment_form.append('<i class="fa fa-spinner fa-spin"/>');
|
||||
payment_form.attr('disabled','disabled');
|
||||
|
||||
var acquirer_id = payment_form.find('input[type="radio"][data-provider="stripe"]:checked').data('acquirer-id');
|
||||
if (! acquirer_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var payment_tx_url = payment_form.find('input[name="prepare_tx_url"]').val();
|
||||
var access_token = $("input[name='access_token']").val() || $("input[name='token']").val() || '';
|
||||
var so_id = $("input[name='return_url']").val().match(/quote\/([0-9]+)/) || undefined;
|
||||
if (so_id) {
|
||||
so_id = parseInt(so_id[1]);
|
||||
}
|
||||
var invoice_id = $("input[name='return_url']").val().match(/invoices\/([0-9]+)/) || undefined;
|
||||
if (invoice_id) {
|
||||
invoice_id = parseInt(invoice_id[1]);
|
||||
|
||||
var get_input_value = function(name) {
|
||||
return provider_form.find('input[name="' + name + '"]').val();
|
||||
}
|
||||
|
||||
var currency = $("input[name='currency']").val();
|
||||
var currency_id = $("input[name='currency_id']").val();
|
||||
var amount = parseFloat($("input[name='amount']").val() || '0.0');
|
||||
var acquirer_id = parseInt(provider_form.find('#acquirer_stripe').val());
|
||||
var amount = parseFloat(get_input_value("amount") || '0.0');
|
||||
var currency = get_input_value("currency");
|
||||
var email = get_input_value("email");
|
||||
var invoice_num = get_input_value("invoice_num");
|
||||
var merchant = get_input_value("merchant");
|
||||
|
||||
|
||||
if ($('.o_website_payment').length !== 0) {
|
||||
var invoice_num = $("input[name='invoice_num']").val();
|
||||
var url = _.str.sprintf("/website_payment/transaction/v2/%f/%s/%s",
|
||||
amount, currency_id, invoice_num);
|
||||
|
||||
var create_tx = ajax.jsonRpc(url, 'call', {
|
||||
acquirer_id: acquirer_id
|
||||
}).then(function (data) {
|
||||
try { provider_form[0].innerHTML = data; } catch (e) {}
|
||||
});
|
||||
}
|
||||
else if ($('.o_website_quote').length !== 0) {
|
||||
var url = _.str.sprintf("/quote/%s/transaction/", so_id);
|
||||
var create_tx = ajax.jsonRpc(url, 'call', {
|
||||
access_token: access_token,
|
||||
acquirer_id: acquirer_id
|
||||
}).then(function (data) {
|
||||
try { provider_form[0].innerHTML = data; } catch (e) {};
|
||||
});
|
||||
} else if (window.location.href.includes("/my/orders/")) {
|
||||
var create_tx = ajax.jsonRpc('/pay/sale/' + so_id + '/form_tx/', 'call', {
|
||||
access_token: access_token,
|
||||
acquirer_id: acquirer_id
|
||||
}).then(function (data) {
|
||||
try { provider_form.innerHTML = data; } catch (e) {};
|
||||
});
|
||||
} else if (window.location.href.includes("/my/invoices/")) {
|
||||
var create_tx = ajax.jsonRpc('/invoice/pay/' + invoice_id + '/form_tx/', 'call', {
|
||||
access_token: access_token,
|
||||
acquirer_id: acquirer_id
|
||||
}).then(function (data) {
|
||||
try { provider_form.innerHTML = data; } catch (e) {};
|
||||
});
|
||||
}
|
||||
else {
|
||||
var create_tx = ajax.jsonRpc('/shop/payment/transaction/' + acquirer_id, 'call', {
|
||||
so_id: so_id,
|
||||
access_token: access_token,
|
||||
acquirer_id: acquirer_id
|
||||
}).then(function (data) {
|
||||
try { provider_form.innerHTML = data; } catch (e) {};
|
||||
});
|
||||
}
|
||||
create_tx.done(function () {
|
||||
ajax.jsonRpc(payment_tx_url, 'call', {
|
||||
acquirer_id: acquirer_id,
|
||||
access_token: access_token,
|
||||
}).then(function(data) {
|
||||
try { provider_form[0].innerHTML = data; } catch (e) {};
|
||||
}).done(function () {
|
||||
getStripeHandler().open({
|
||||
name: $("input[name='merchant']").val(),
|
||||
description: $("input[name='invoice_num']").val(),
|
||||
email: $("input[name='email']").val(),
|
||||
name: merchant,
|
||||
description: invoice_num,
|
||||
email: email,
|
||||
currency: currency,
|
||||
amount: _.contains(int_currencies, currency) ? amount : amount * 100,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user