将PayPal IPN 集成到网站中
本文关键字:网站 集成 PayPal IPN | 更新日期: 2023-09-27 18:32:04
我正在开发一个捐赠页面,允许用户输入捐赠金额,然后用PayPal付款。 我已经成功地创建了一个PayPal沙盒帐户。 完成此操作后,我创建了一个企业帐户以接收付款,并创建了一个个人帐户以进行付款。
我正在尝试做的是利用即时付款通知功能,该功能允许开发人员验证用户是否确实在PayPal的付款页面上进行了交易(以便我可以将其记录在数据库中)。
我尝试在企业帐户上发布我的 IPN 页面的 URL。 问题是它不接受 URL。 这是我提供的网址:
http://localhost:54866/Default.aspx
该网站不是在线托管的。 请问怎么能做到这一点? 我应该如何提供网址? 谢谢:)
附言我正在使用 C# 和 ASP.NET
是的,你是对的,你不能给本地主机(它会尝试解析到 paypals 自己的服务器......),所以你必须做一些诡计。
您需要做的是:
假设您的商店将 www.mynewshop.com
1) 将其设置为PayPal IPN 重定向
2)更改您的HOST文件以 www.mynewshop.com 重定向到127.0.0.1(例如本地主机)
您可以通过尝试在浏览器中键入例如 www.mynewshop.com 来测试步骤 2 是否正常工作 - 如果您在端口 80 上有服务器,它将解析为 localhost:80 或说您有 devweb 服务器运行在 :1234 在浏览器地址栏中键入 www.mynewshop.com:1234 并检查解析
3) 将您在项目上的端口设置为 :80(因为我认为您也不能在 PayPal 中指定除 :80 以外的任何内容)。您可以通过 project.properties 设置项目测试服务器端口 - 将其设置为 NOT 动态端口,然后您可以设置 fixed :80
将要发生的事情是PayPal试图将您重定向回您的 PC 尝试访问 www.mynewshop.com 但在幕后您最终会访问 localhost。
从内存中,您还可以设置项目属性以启动浏览器,例如 www.mynewshop.com 这意味着即使在开发中,您似乎也在使用实时URL。这可以有其优势,例如,它将帮助您发现由于本地主机与实时主机 URL 而导致的错误 URL/部署差异。
玩得开心!:)(并将其标记为答案 - 我知道它有效,因为我很久以前就自己解决了这个问题)
您必须在路由器上设置一个端口。 "localhost"不是公开路由的,因此PayPal无法访问它。
如果将路由器上的端口(公共 IP)转发到本地 PC,则可以使用 IP 地址和端口组合作为 IPN URL 进行测试。 例如 1.2.3.4:8080
将转发到测试服务器的内部 IP 地址。
PayPal IPN 的工作原理是在交易发生后或有关交易的信息发生变化时联系您的服务器,因此PayPal必须能够访问您的 IPN URL。 它独立于您的主机文件或任何访问者。