2016-09-11 54 views
0

我的网站上有一个贝宝html按钮,应该返回到我的网站的数据。我的理解是有一个返回url(带有返回方法)和一个可以做到这一点的通知url。通知网址需要一个IPN监听器,看起来好像是进行验证检查,这很好。我没有看到任何返回网址的验证检查,但似乎我想根据大多数情况下验证检查的结果更新返回网址(例如,支付是否成功)。而且,我需要知道PayPal实际上要求返回url来更新db,否则这似乎会通过返回url打开csrf攻击的大门。贝宝按钮返回网址的使用情况

我是PayPal按钮的新手,但我没有看到任何有关使用通知网址和返回网址的信息。那么,为了解决这些问题,我应该怎么做呢?

回答

1

为了缓解这样的困惑:

  1. return_url只是名字要返回时完成贝宝的过程中你的web应用的页面。还有一个cancel_url,如果您想为用户取消单独的页面,可以使用它。回到return_url并不意味着你有钱。这确实意味着客户已经完成了PayPal交易,但可能会出现资金延迟,最终可能会发生支付失败,因此请不要对您的鸡只进行计数。

  2. notify_url是Web应用程序中POST处理程序的URL。不是一个页面。 POST处理程序应该执行您提到的验证步骤,然后它应该检查txn_type和其他变量以查看正在通知的内容。这可能是付款,订阅,终止,付款失败,逆转,取消逆转......仅这些交易类型中的一些意味着您实际上已从客户那里收到款项。

我需要知道的PayPal实际请求返回URL来更新数据库

没有丝毫。这里不采取任何商业行为。

  • return_url页面,你应该感谢他们的业务,并告诉他们的行动/购买/订阅等,他们要求将定稿一旦Paypal付款过程完成。

  • notify_url处理程序应该处理所有与接收付款,取得逆转,退订等return_urlcancel_url网页不应该做任何的是相关联的业务操作。没有钱=>没有行动。

+0

好的。我想我仍然想要理解请求的顺序,因为看起来PayPal可能会异步或同步地将它们踢到两页,具体取决于它们的设计,这可能会影响我的设计选择。 – Slayer0248

+0

返回到'return_url'或'cancel_url'是同步的:它发生在用户按下按钮时。调用notify_url是异步的,可能会在几分钟或几小时或几天后发生,甚至可能永远不会发生。正如我所说的,您的设计选择只需通过'notify_url'采取实际的业务行动。 – EJP

+0

关于此主题的最后一个问题。我有我自己的内部ID,我必须在通知中链接到txnIds。我可以看到,一直工作的唯一方法是如果我在自定义字段中传递某些内容。那么在那一点上,相同的自定义值会在未来的所有请求中发送给此事务的通知URL?它也似乎是如果用户通过关闭选项卡付款之前离开PayPal网址,则不会有交易,但我已经坚持实质上是活动会话ID。那么如何知道这个会话ID是否在没有超时的情况下处于非活动状态 – Slayer0248