diff options
| author | Demaret Rivarola Johan <jde@odoo.com> | 2018-09-18 09:18:07 +0200 |
|---|---|---|
| committer | Toufik Benjaa <tbe@odoo.com> | 2018-09-25 10:04:36 +0200 |
| commit | 5dd187c566428df67bee54d6e7f944af371be093 (patch) | |
| tree | 98d1083c9b9857ad022bd962dfd247a11a3e65d7 /addons/payment_sips/models | |
| parent | 2521b9990ec5c001a39bb9f1d23a6724def93c9e (diff) | |
[FIX] payment, payment_sips: compute reference correctly and encode return url
Sips does not accept special characters as a transaction reference.
Replacing '-' solve this issue.
Parsing Sips response was failing when the return url had query parameters.
This was due to the split on '='. Encoding the url solve this issue.
Diffstat (limited to 'addons/payment_sips/models')
| -rw-r--r-- | addons/payment_sips/models/payment.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/addons/payment_sips/models/payment.py b/addons/payment_sips/models/payment.py index bdcc73f3a55..7d46d56da2b 100644 --- a/addons/payment_sips/models/payment.py +++ b/addons/payment_sips/models/payment.py @@ -5,6 +5,7 @@ import json import logging import re +import time from hashlib import sha256 from werkzeug import urls @@ -98,7 +99,7 @@ class AcquirerSips(models.Model): return_context = {} if sips_tx_values.get('return_url'): - return_context[u'return_url'] = u'%s' % sips_tx_values.pop('return_url') + return_context[u'return_url'] = u'%s' % urls.url_quote(sips_tx_values.pop('return_url')) return_context[u'reference'] = u'%s' % sips_tx_values['reference'] sips_tx_values['Data'] += u'|returnContext=%s' % (json.dumps(return_context)) @@ -124,13 +125,11 @@ class TxSips(models.Model): @api.model def _compute_reference(self, values=None, prefix=None): - acquirer = self.env['payment.acquirer'].browse(values['acquirer_id']) + res = super(TxSips, self)._compute_reference(values=values, prefix=prefix) + acquirer = self.env['payment.acquirer'].browse(values.get('acquirer_id')) if acquirer and acquirer.provider == 'sips': - if not prefix and values: - prefix = self._compute_reference_prefix(values) - prefix = re.sub(r'[^0-9a-zA-Z-]+', 'x', prefix) - - return super(TxSips, self)._compute_reference(values=values, prefix=prefix) + return re.sub(r'[^0-9a-zA-Z]+', 'x', res) + 'x' + str(int(time.time())) + return res # -------------------------------------------------- # FORM RELATED METHODS |
