summaryrefslogtreecommitdiff
path: root/addons/payment_sips/models
diff options
context:
space:
mode:
authorDemaret Rivarola Johan <jde@odoo.com>2018-09-18 09:18:07 +0200
committerToufik Benjaa <tbe@odoo.com>2018-09-25 10:04:36 +0200
commit5dd187c566428df67bee54d6e7f944af371be093 (patch)
tree98d1083c9b9857ad022bd962dfd247a11a3e65d7 /addons/payment_sips/models
parent2521b9990ec5c001a39bb9f1d23a6724def93c9e (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.py13
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