使用paypal IPN我在验证付款时遇到问题。
Paypal返回Python / Django网站,该网站启动了原始交易,其中payer_status未经验证。然后,该网站会将所有帖子参数和“cmd”参数设置为“_notify-validate”发回“https://www.paypal.com/cgi-bin/webscr”以验证付款。 PayPal IPN返回为无效。
这是正确的还是我错过了什么?
它使用Requests Python HTTP库。我不认为它是代码,因为大多数交易都经过验证。
def paypalIPN(request):
post_content = dict(request.POST.copy())
return_data = {'cmd':'_notify-validate'}
if not post_content.keys():
raise Http404("Post not found")
for key in post_content.keys():
return_data[key]=post_content[key][0]
paypal_url = "https://www.paypal.com/cgi-bin/webscr"
response = requests.post(paypal_url, data=return_data)
答案 0 :(得分:2)
我认为您通过迭代cmd
字典来覆盖return_data
中的post_content
键/值。我认为你不需要这样做。只需复制POST参数,然后更改cmd
值:
parameters = dict(request.POST.copy())
parameters['cmd'] = '_notify-validate'
paypal_url = "https://www.paypal.com/cgi-bin/webscr"
response = requests.post(paypal_url, data=parameters)
这基本上就是我在我的应用程序中所做的,尽管我没有使用请求库。