[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.
This commit is contained in:
Nikunj Ladava
2018-03-19 14:33:04 +01:00
committed by Thibault Delavallée
parent 3869b080ae
commit 70f3d453b5
+2 -2
View File
@@ -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