From 70f3d453b5a76bbcb88943ed0cba24962ebff8a1 Mon Sep 17 00:00:00 2001 From: Nikunj Ladava Date: Mon, 12 Feb 2018 16:03:27 +0530 Subject: [PATCH] [FIX] payment_adyen: fix error while making payment with adyen * in _adyen_generate_merchant_sig_sha256 no need to encode dict key as we have a normal dict. Because of this encoding it will search for byte string key but we have string key; * _adyen_generate_merchant_sig method requires the latest computed data from adyen_form_generate_values method. If we directly pass the dictionary while updating it, it will pass only business parameters and we don't need it. After updating values we have actual transaction data. This commit is related to task ID 1815966. --- addons/payment_adyen/models/payment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/payment_adyen/models/payment.py b/addons/payment_adyen/models/payment.py index dbc24ced0c0..3b15e51d44f 100644 --- a/addons/payment_adyen/models/payment.py +++ b/addons/payment_adyen/models/payment.py @@ -78,7 +78,7 @@ class AcquirerAdyen(models.Model): ] hmac_key = binascii.a2b_hex(self.adyen_skin_hmac_key.encode('ascii')) - raw_values = {k: values.get(k.encode('ascii'), '') for k in keys if k in values} + raw_values = {k: values.get(k, '') for k in keys if k in values} raw_values_ordered = OrderedDict(sorted(raw_values.items(), key=lambda t: t[0])) return signParams(raw_values_ordered) @@ -151,8 +151,8 @@ class AcquirerAdyen(models.Model): 'sessionValidity': tmp_date, 'resURL': urls.url_join(base_url, AdyenController._return_url), 'merchantReturnData': json.dumps({'return_url': '%s' % values.pop('return_url')}) if values.get('return_url') else False, - 'merchantSig': self._adyen_generate_merchant_sig('in', values), }) + values['merchantSig'] = self._adyen_generate_merchant_sig('in', values) return values