【发布时间】:2016-11-02 10:51:09
【问题描述】:
我已经构建了一个简单的 paypal-ipn 监听器:它监听 paypal 向我发送一个 http POST,读取它的数据并将其发送回 paypal,如果接收到的数据与发送的数据匹配,它应该回答 VALID。
我正在使用 Paypal IPN-Simulator 发送 IPN。
我基本上是从here 复制代码并且我一直返回无效。查看来自标准输入的原始输入数据,我觉得我在这里缺少关于编码的一些东西,但我对所有这些东西都太陌生了,无法弄清楚。
#!/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()
我也不知道如何发送纯 HTTP 200 响应并使用 print("content-type: text/html\r\n\r\n") 行只是因为它有效。
【问题讨论】:
标签: python paypal paypal-ipn urlencode server-side-scripting