From a3c6afb2a9b4f2275bf9fd5b287b255f5dcaaf89 Mon Sep 17 00:00:00 2001 From: Valentin Chevalier Date: Thu, 26 Oct 2023 12:13:19 +0200 Subject: [PATCH] [IMP] payment(_*): make express checkout work again Following 7e012dd, the express checkout flow stopped working. This commit makes the express checkout flow works again. task-3526289 closes odoo/odoo#139854 closes odoo/odoo#140085 Signed-off-by: Antoine Vandevenne (anv) --- .../static/src/js/express_checkout_form.js | 2 +- .../views/express_checkout_templates.xml | 28 +++++++++++-------- addons/payment_stripe/const.py | 1 + .../static/src/js/express_checkout_form.js | 6 ++-- addons/website_sale/controllers/main.py | 1 + 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/addons/payment/static/src/js/express_checkout_form.js b/addons/payment/static/src/js/express_checkout_form.js index 2e7d4870914..c511299ba02 100644 --- a/addons/payment/static/src/js/express_checkout_form.js +++ b/addons/payment/static/src/js/express_checkout_form.js @@ -59,7 +59,7 @@ publicWidget.registry.PaymentExpressCheckoutForm = publicWidget.Widget.extend({ _prepareTransactionRouteParams(providerId) { return { 'provider_id': parseInt(providerId), - 'payment_method_id': 1, // TODO VCR + 'payment_method_id': parseInt(this.paymentContext['paymentMethodUnknownId']), 'token_id': null, 'flow': 'direct', 'tokenization_requested': false, diff --git a/addons/payment/views/express_checkout_templates.xml b/addons/payment/views/express_checkout_templates.xml index 8c11a5120a8..627eed2d893 100644 --- a/addons/payment/views/express_checkout_templates.xml +++ b/addons/payment/views/express_checkout_templates.xml @@ -2,13 +2,15 @@ diff --git a/addons/payment_stripe/const.py b/addons/payment_stripe/const.py index f6391503d5f..c28fb5d4d2f 100644 --- a/addons/payment_stripe/const.py +++ b/addons/payment_stripe/const.py @@ -26,6 +26,7 @@ PAYMENT_METHODS_MAPPING = { 'becs_direct_debit': 'au_becs_debit', 'afterpay': 'afterpay_clearpay', 'clearpay': 'afterpay_clearpay', + 'unknown': 'card', # For express checkout. } # Mapping of transaction states to Stripe objects ({Payment,Setup}Intent, Refund) statuses. diff --git a/addons/payment_stripe/static/src/js/express_checkout_form.js b/addons/payment_stripe/static/src/js/express_checkout_form.js index dcaeb8789aa..bd62412ae81 100644 --- a/addons/payment_stripe/static/src/js/express_checkout_form.js +++ b/addons/payment_stripe/static/src/js/express_checkout_form.js @@ -20,12 +20,12 @@ paymentExpressCheckoutForm.include({ */ _getOrderDetails(deliveryAmount) { const pending = this.paymentContext['shippingInfoRequired'] && deliveryAmount === undefined; - const amount = deliveryAmount ? this.paymentContext['minorAmount'] + deliveryAmount - : this.paymentContext['minorAmount']; + const amount = deliveryAmount ? parseInt(this.paymentContext['minorAmount'] + deliveryAmount) + : parseInt(this.paymentContext['minorAmount']); const displayItems = [ { label: _t("Your order"), - amount: this.paymentContext['minorAmount'], + amount: parseInt(this.paymentContext['minorAmount']), }, ]; if (this.paymentContext['shippingInfoRequired'] && deliveryAmount !== undefined) { diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 2d509e34b7d..eb383dd0129 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -1668,6 +1668,7 @@ class WebsiteSale(payment_portal.PaymentPortal): 'transaction_route': f'/shop/payment/transaction/{order.id}', 'express_checkout_route': self._express_checkout_route, 'landing_route': '/shop/payment/validate', + 'payment_method_unknown_id': request.env.ref('payment.payment_method_unknown').id, }) if request.website.is_public_user(): payment_form_values['partner_id'] = -1