0

我正在开发一个捐赠页面,该页面允许用户输入捐赠金额,然后使用 PayPal 付款。我已经使用 PayPal 成功创建了一个沙盒帐户。完成此操作后,我创建了一个用于接收付款的企业帐户和一个用于付款的个人帐户。

我想要做的是利用即时付款通知功能,它允许开发人员验证用户是否确实在 PayPal 的付款页面上进行了交易(以便我可以将其记录在数据库中)。

我尝试在企业帐户上发布我的 IPN 页面的 URL。问题是它不接受 URL。这是我提供的 URL:

http://localhost:54866/Default.aspx

该网站不是在线托管的。请问这怎么做?我应该如何提供网址?谢谢 :)

PS 我正在使用 C# 和 ASP.NET

4

2 回答 2

4

是的,你是对的,你不能给本地主机(它会尝试解析到贝宝自己的服务器......)所以你必须做一些诡计。

你需要做的是:

假设您的商店将成为 www.mynewshop.com

1)在贝宝中设置为IPN重定向

2)更改您的 HOST文件以将 www.mynewshop.com 重定向到 127.0.0.1(例如 localhost)

您可以通过尝试在浏览器中键入例如 www.mynewshop.com 来测试第 2 步是否正常工作 - 如果您在端口 80 上有一个服务器,它将解析为 localhost:80 或者说您有 devweb 服务器在 :1234 上运行,输入 www.mynewshop .com:1234 在浏览器地址栏中并检查解决

3)将项目上的端口设置为:80(因为我认为您不能在贝宝中指定除 :80 以外的任何内容)。您可以通过 project.properties 设置项目测试服务器端口 - 将其设置为非动态端口,然后您可以设置固定:80

将会发生的事情是,Paypal 会尝试将您重定向回您的 PC 尝试访问的 www.mynewshop.com,但在幕后您最终会访问 localhost。

从内存中,您还可以设置项目属性以启动浏览器,例如 www.mynewshop.com,这意味着即使在开发中您似乎正在使用实时 URL。这可以有其优势,例如,它将帮助您发现由于 localhost 与实时主机 URL 而导致的错误 URL/部署差异。

玩得开心!:) (并将其标记为答案 - 我知道它有效,因为我很久以前自己解决了这个问题)

于 2012-04-24T16:54:57.323 回答
1

您必须在路由器上设置端口转发。“localhost”不可公开路由,因此 PayPal 无法访问它。

如果您将路由器上的端口(公共 IP)转发到本地 PC,则可以使用 IP 地址和端口组合作为 IPN url 进行测试。例如1.2.3.4:8080,它将转发到您的测试服务器的内部 IP 地址。

PayPal IPN 的工作方式是在交易发生后或交易信息发生变化时联系您的服务器,因此 PayPal 必须能够访问您的 IPN URL。它独立于您的主机文件或任何访问者。

于 2012-04-24T16:56:31.860 回答