我已经建立了一个简单的paypal-ipn侦听器:它侦听paypal发送给我的http POST,读出它的数据并将其发送回paypal,如果接收的数据与发送的数据匹配,则paypal应回答有效。
我正在使用Paypal IPN-Simulator发送IPN。
我基本上是从here复制了代码,并且总是返回无效的代码。看着来自stdin的rawinput数据,我感觉我遗漏了一些关于编码的东西,但我对所有这些东西都太新了,无法弄清楚。
#!/usr/bin/python3
import sys
import cgi
import os; import json; import collections;import urllib; from urllib import parse
PAYPAL_URL = "https://sandbox.paypal.com/cgi-bin/webscr"
inputraw =sys.stdin.read()
f = open('test','w')
print("content-type: text/html\r\n\r\n")
formData ="cmd=_notify-validate&"+parse.unquote(inputraw)
f.write(formData+"\n")
req = urllib.request.Request(PAYPAL_URL, formData.encode())
req.add_header("Content-type", "application/x-www-form-urlencoded")
response = urllib.request.urlopen(req)
status = str(response.read())
f.write(status); f.write("\n")
if (not status == "b'VERIFIED'"):
f.write("OH NO")
else:
f.write("OH YES")
f.write("\n")
f.close()我也不知道如何发送一个纯HTTP200响应,而仅仅因为它工作而使用print("content-type: text/html\r\n\r\n")行。
https://stackoverflow.com/questions/38121463
复制相似问题