From de45880eb3ab8559e3f3c7cbf37272676c9ad553 Mon Sep 17 00:00:00 2001 From: Damien Bouvy Date: Mon, 19 Dec 2016 17:34:06 +0100 Subject: [PATCH] [FIX] payment_paypal: html-decode PDT responses Courtesy of DynApps --- addons/payment_paypal/controllers/main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/payment_paypal/controllers/main.py b/addons/payment_paypal/controllers/main.py index f0bd3bb04ae..92db9af6408 100644 --- a/addons/payment_paypal/controllers/main.py +++ b/addons/payment_paypal/controllers/main.py @@ -6,6 +6,7 @@ except ImportError: import json import logging import pprint +import urllib import urllib2 import werkzeug @@ -29,7 +30,7 @@ class PaypalController(http.Controller): return return_url def _parse_pdt_response(self, response): - """ Parse a text reponse for a PDT verification . + """ Parse a text response for a PDT verification . :param response str: text response, structured in the following way: STATUS\nkey1=value1\nkey2=value2...\n @@ -40,6 +41,9 @@ class PaypalController(http.Controller): lines = filter(None, response.split('\n')) status = lines.pop(0) pdt_post = dict(line.split('=', 1) for line in lines) + # html unescape + for post in pdt_post: + pdt_post[post] = urllib.unquote_plus(pdt_post[post]).decode('utf8') return status, pdt_post def paypal_validate_data(self, **post):