summaryrefslogtreecommitdiff
path: root/addons/account_payment/controllers/payment.py
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2017-10-26 16:03:19 +0200
committerThibault Delavallée <tde@odoo.com>2017-10-27 10:36:07 +0200
commitb72b10c1914a6a756e7eff53cd584cce706efb6e (patch)
treef9e9e20a275fdfadeb6027640f3bcc5da02e8974 /addons/account_payment/controllers/payment.py
parent4cc85168403971cb439fb0168582bb0408f4e4c1 (diff)
[FIX] (account, sale)_payment: fix URL generation in payment
Redirections are not correctly computed when the error or success urls already contain some query parameters, like the access token. We now use a function added in portal module that correctly computed the redirection using standard werkzeug methods.
Diffstat (limited to 'addons/account_payment/controllers/payment.py')
-rw-r--r--addons/account_payment/controllers/payment.py11
1 files changed, 5 insertions, 6 deletions
diff --git a/addons/account_payment/controllers/payment.py b/addons/account_payment/controllers/payment.py
index ecd331d2d9c..7427d768dad 100644
--- a/addons/account_payment/controllers/payment.py
+++ b/addons/account_payment/controllers/payment.py
@@ -1,9 +1,8 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from werkzeug import url_encode
-
from odoo import http, _
+from odoo.addons.portal.controllers.portal import _build_url_w_params
from odoo.http import request, route
@@ -68,7 +67,7 @@ class PaymentPortal(http.Controller):
invoice_sudo = request.env['account.invoice'].sudo().browse(invoice_id)
if not invoice_sudo:
params['error'] = 'pay_invoice_invalid_doc'
- return request.redirect('%s?%s' % (error_url, url_encode(params)))
+ return request.redirect(_build_url_w_params(error_url, params))
try:
token = request.env['payment.token'].sudo().browse(int(pm_id))
@@ -76,7 +75,7 @@ class PaymentPortal(http.Controller):
token = False
if not token:
params['error'] = 'pay_invoice_invalid_token'
- return request.redirect('%s?%s' % (error_url, url_encode(params)))
+ return request.redirect(_build_url_w_params(error_url, params))
# find an existing tx or create a new one
tx = request.env['payment.transaction'].sudo()._check_or_create_invoice_tx(
@@ -97,7 +96,7 @@ class PaymentPortal(http.Controller):
res = tx.confirm_invoice_token()
if res is not True:
params['error'] = res
- return request.redirect('%s?%s' % (error_url, url_encode(params)))
+ return request.redirect(_build_url_w_params(error_url, params))
params['success'] = 'pay_invoice'
- return request.redirect('%s?%s' % (success_url, url_encode(params)))
+ return request.redirect(_build_url_w_params(success_url, params))