From d7790b57cd2f4cff82886712ff641c30bd2f75d9 Mon Sep 17 00:00:00 2001 From: "Anita (anko)" Date: Thu, 19 Oct 2023 13:48:38 +0000 Subject: [PATCH] [FIX] payment_adyen: not send False information If customer did not have address,email and telephone fields, "False" would be send to Adyen resulting in these field containing False values, which in some cases was falsely triggering anti-fraud system. task-3159378 closes odoo/odoo#146990 X-original-commit: 0de6864e32cff260393fde391250cff0fa6d9653 Signed-off-by: anko-odoo --- addons/payment_adyen/controllers/main.py | 4 ++-- addons/payment_adyen/i18n/payment_adyen.pot | 7 +++++++ addons/payment_adyen/utils.py | 12 ++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/addons/payment_adyen/controllers/main.py b/addons/payment_adyen/controllers/main.py index 10e63b29de4..95ba2d9b4ab 100644 --- a/addons/payment_adyen/controllers/main.py +++ b/addons/payment_adyen/controllers/main.py @@ -97,9 +97,9 @@ class AdyenController(http.Controller): 'recurringProcessingModel': 'CardOnFile', # Most susceptible to trigger a 3DS check 'shopperIP': payment_utils.get_customer_ip_address(), 'shopperInteraction': 'Ecommerce', - 'shopperEmail': tx_sudo.partner_email, + 'shopperEmail': tx_sudo.partner_email or "", 'shopperName': adyen_utils.format_partner_name(tx_sudo.partner_name), - 'telephoneNumber': tx_sudo.partner_phone, + 'telephoneNumber': tx_sudo.partner_phone or "", 'storePaymentMethod': tx_sudo.tokenize, # True by default on Adyen side 'additionalData': { 'authenticationData.threeDSRequestData.nativeThreeDS': True, diff --git a/addons/payment_adyen/i18n/payment_adyen.pot b/addons/payment_adyen/i18n/payment_adyen.pot index accc3a6d590..e05813567f9 100644 --- a/addons/payment_adyen/i18n/payment_adyen.pot +++ b/addons/payment_adyen/i18n/payment_adyen.pot @@ -139,6 +139,13 @@ msgstr "" msgid "Payment processing failed" msgstr "" +#. module: payment_adyen +#. odoo-python +#: code:addons/payment_adyen/utils.py:0 +#, python-format +msgid "Please complete your address details." +msgstr "" + #. module: payment_adyen #. odoo-python #: code:addons/payment_adyen/models/payment_transaction.py:0 diff --git a/addons/payment_adyen/utils.py b/addons/payment_adyen/utils.py index 4f269330fff..6527faf05dd 100644 --- a/addons/payment_adyen/utils.py +++ b/addons/payment_adyen/utils.py @@ -1,3 +1,6 @@ +from odoo import _ +from odoo.exceptions import ValidationError + from odoo.addons.payment import utils as payment_utils @@ -47,12 +50,17 @@ def format_partner_address(partner): :rtype: dict """ street_data = partner._get_street_split() - return { + address = { 'city': partner.city, 'country': partner.country_id.code or 'ZZ', # 'ZZ' if the country is not known. - 'stateOrProvince': partner.state_id.code, + 'stateOrProvince': partner.state_id.code or '', # The state is not always required. 'postalCode': partner.zip, # Fill in the address fields if the format is supported, or fallback to the raw address. 'street': street_data.get('street_name', partner.street), 'houseNumberOrName': street_data.get('street_number'), } + for key, value in address.items(): + if key == 'stateOrProvince' and partner.country_id.code not in ['CA', 'US', 'GB']: + continue + if not value: + raise ValidationError(_("Please complete your address details."))