使用 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 示例的主要内容,如果未能解决你的问题,请参考以下文章

接收 PayPal IPN 时不获取任何参数

PayPal 没有向听众发送 IPN

Paypal:IPN 侦听器未收到 IPN 消息

Paypal IPN自定义确认邮件

使用 Paypal ipn 和 pdt 进行付款

Paypal IPN状态 - 排队