diff --git a/addons/payment_acquirer_paypal/controllers/main.py b/addons/payment_acquirer_paypal/controllers/main.py index 5f1a3259494..9e3c5868307 100644 --- a/addons/payment_acquirer_paypal/controllers/main.py +++ b/addons/payment_acquirer_paypal/controllers/main.py @@ -4,6 +4,10 @@ from openerp.addons.web import http from openerp.addons.web.http import request from openerp.addons.website.models import website +try: + import simplejson as json +except ImportError: + import json import logging import pprint import requests @@ -56,8 +60,11 @@ class PaypalController(http.Controller): def paypal_dpn(self, **post): """ Paypal DPN """ _logger.info('Beginning Paypal DPN form_feedback with post data %s', pprint.pformat(post)) # debug + return_url = post.pop('return_url', '') + if not return_url: + custom = json.loads(post.pop('custom', '{}')) + return_url = custom.pop('return_url', '/') self.paypal_validate_data(**post) - return_url = post.pop('return_url', '/') return request.redirect(return_url) @website.route([ diff --git a/addons/payment_acquirer_paypal/models/paypal.py b/addons/payment_acquirer_paypal/models/paypal.py index 39722bdc093..50b16d0e818 100644 --- a/addons/payment_acquirer_paypal/models/paypal.py +++ b/addons/payment_acquirer_paypal/models/paypal.py @@ -67,7 +67,7 @@ class AcquirerPaypal(osv.Model): 'cancel_return': '%s' % urlparse.urljoin(base_url, PaypalController._cancel_url), } if tx_custom_values and tx_custom_values.get('return_url'): - tx_values['custom'] = 'return_url=%s' % tx_custom_values.pop('return_url') + tx_values['custom'] = json.dumps({'return_url': '%s' % tx_custom_values.pop('return_url')}) if tx_custom_values: tx_values.update(tx_custom_values) return tx_values