使用 PayPal IPN 的任何 python 示例
Posted
技术标签:
【中文标题】使用 PayPal IPN 的任何 python 示例【英文标题】:Any python example working with PayPal IPN 【发布时间】:2016-01-06 21:00:11 【问题描述】:我在使用 Paypal 的 IPN 时遇到问题。我已经在我的卖家账户上启用了 IPN。一旦付款通过,我会被定向到感谢页面。但是我在 notify_url 中指定的后端实际上从未真正获得“触摸”,这就是我无法更新数据库的原因。 :(请帮帮我!!
【问题讨论】:
【参考方案1】:这是我开始工作的最简单的 Python 代码。 大部分来自:https://flyingspaniel.blogspot.de/2014/12/do-frameworks-get-in-way.html,我的改动不大。
虽然很重要:当我测试时,IPN 验证只通过沙盒而不是通过 IPN 模拟器工作!
#!/usr/bin/python3
import sys
import cgi
import requests
import os; import json; import collections;
import urllib; from urllib import parse
inputraw =sys.stdin.read()
f = open('logfile','w')
print("content-type: text/html\r\n\r\n")
PAYPAL_URL = "https://sandbox.paypal.com/cgi-bin/webscr"
formData ="cmd=_notify-validate&"+ parse.unquote(inputraw)
f.write(formData); f.write("\n") # write into file 1st data package from paypal
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) # write back into file what you received from paypal the 2nd time
f.write("\n")
if (not status == "b'VERIFIED'"):
f.write("OH NO")
#ERROR
else:
#HERE WE WILL TRIGGER STUFF WITH THE DATA FROM PAYPAL
f.write("OH YES")
f.write("\n")
f.close()
【讨论】:
【参考方案2】:您可能希望按照IPN Simulator 上的说明测试您的 IPN URL 第一的。
如果模拟器出现 4XX/5XX 错误,或者您的服务器访问日志显示 PayPal 没有“触摸”,您可能需要对服务器防火墙/路由设置进行故障排除,确保它没有将 PayPal 域或 IP 地址列入黑名单.
【讨论】:
以上是关于使用 PayPal IPN 的任何 python 示例的主要内容,如果未能解决你的问题,请参考以下文章