将PayPal IPN集成到网站中

时间:2012-04-24 16:50:12

标签: c# asp.net paypal paypal-ipn

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

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

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

http://localhost:54866/Default.aspx

该网站不在线托管。怎么能这样呢?我该如何提供网址?谢谢:))

P.S。我正在使用C#和ASP.NET

2 个答案:

答案 0 :(得分:4)

你是对的,你不能给localhost(它会尝试解析为paypals自己的服务器然后...)所以你必须做一些诡计。

您需要做的是:

让我们说你的商店将成为www.mynewshop.com

1)在paypal中将其设置为IPN重定向

2)Change your HOST文件将www.mynewshop.com重定向到127.0.0.1(例如localhost)

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

3)将项目上的端口设置为:80(因为你不能指定除了以外的任何东西:我认为是Paypal中的80)。您可以通过project.properties设置项目测试服务器端口 - 将其设置为NOT动态端口,然后您可以设置fixed:80

Paypal会尝试将您重定向回www.mynewshop.com,您的电脑会尝试访问该网站,但在幕后您最终会访问本地主机。

从内存中你也可以设置项目属性来启动浏览器,例如www.mynewshop.com,这意味着即使在开发中你似乎也在使用实时URL。这可以具有其优点,例如它将帮助您发现由于localhost vs live host URL导致的URL /部署差异。

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

答案 1 :(得分:1)

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

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

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