我在驗證IPN請求時遇到unicode問題。Paypal在Django中的IPN驗證
我使用以下函數來驗證請求。
def verify(self):
parameters = self.params
parameters['cmd'] = '_notify-validate'
parameters = urllib.urlencode(dict([(k, v.encode(parameters['charset'])) for k, v in parameters.items()]))
return self.call_paypal(parameters) == 'VERIFIED'
的self.parmas是request.POST,這引發以下錯誤:
UnicodeEncodeError: 'charmap' codec can't encode character u'\ufffd' in position 1: character maps to <undefined>
後的轉儲可以在這裏找到:http://pastebin.com/sd2iwu41
我覺得很奇怪,有是一種編碼錯誤,因爲我使用的是PayPal發送給我的相同編碼。
參數是一個Django QueryDict嗎?如果是這樣,你可以簡單地執行'return self.call_paypal(parameters.urlencode())'。 – 2012-03-07 21:58:19
我可能是錯的,但不是一個QueryDict只讀? – Pickels 2012-03-07 23:26:39
我會發佈一個答案。 – 2012-03-08 00:16:14