【问题标题】:Paypal C# Return Url贝宝 C# 返回网址
【发布时间】:2014-08-17 19:54:35
【问题描述】:

我有一个 C# MVC(使用 Umbraco)网站,我需要通过 paypal 提交付款。我已经设置了一个沙盒商家和买家帐户。我能够提交付款,并且那里一切正常。但是,我的网站需要知道付款何时成功完成,因为我将发送电子邮件并进行一些数据库操作,这就是我遇到问题的地方。我无法让贝宝自动返回我的网站。我需要返回 URL:

 http://localhost:56733/payment-confirmation

这不是这个问题的重复: Setting PayPal return URL and making it auto return?

我使用的是 C#,而不是 PHP。另外,我正在尝试在本地运行它。上述问题中列出的解决方案不起作用。行为和结果是一样的。

我确实得到了显示以下内容的屏幕:

You just completed your payment. XXXX, you just completed your payment. Your transaction ID for this payment is: XXXXXXXXXXXXX.

We'll send a confirmation email to XX@XXXX.com. This transaction will appear on your statement as PAYPAL.

Go to PayPal account overview

【问题讨论】:

标签: c# paypal


【解决方案1】:

不建议对任何返回 URL 进行后付款处理。即使启用了自动返回,也不能保证用户会到达那里,如果他们不这样做,那么代码将永远不会运行,并且您最终会遇到无法按预期完成的任务。

即使您使用 Express Checkout API 以保证您最终访问自己的网站,但在那里处理所有数据更新和电子邮件内容仍然不明智,因为付款可能处于待处理状态。在未结清付款之前,您不会想交付任何产品或类似物品。

正确处理所有这些的方法是使用Instant Payment Notification (IPN)。无论用户是否将其返回到返回 URL,这都会触发,并且您将获得多个 IPN 用于状态更新的事务,以便您可以自动、实时地处理这些事务。

查看 IPN 的文档,但不要因为其中包含大量信息而吓坏了您。它实际上只不过是向您指定的侦听器 URL 发送数据的 POST。在该脚本中,您将像接收表单 POST 一样接收数据。设置起来真的很简单,你可以用它做各种很酷的事情。

【讨论】:

  • 所以在这种情况下,我也无法在本地调试整个过程,因为我需要有一个公共可用的 URL 供 IPN 回发?如果是这样就好了。我仍然可以用我自己的数据轻松地测试一个帖子,它只是不会来自 Paypal,所以在我在服务器上运行它之前我无法确定。
  • 您确实需要一个公开可用的地址,但是您可以使用本地测试服务器来做到这一点,这没有问题。只需使用您的公共 IP 地址或设置指向您的公共 IP 地址的子域。例如,www.angelleye.com 是我的实时站点,但 paypal.angelleye.com 指向我的本地测试服务器。
猜你喜欢
  • 2010-12-25
  • 2012-10-13
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
相关资源
最近更新 更多