【问题标题】:PayPal button return url usagePayPal 按钮返回 url 使用
【发布时间】:2017-01-19 08:59:34
【问题描述】:

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

我是 PayPal 按钮的新手,但我还没有看到有关同时使用通知 url 和返回 url 的任何信息。那么我应该怎么做才能通过返回 url 解决这些问题呢?

【问题讨论】:

    标签: security paypal paypal-ipn verification paypal-buttons


    【解决方案1】:

    为了消除混乱:

    1. return_url 仅命名您希望在完成 Paypal 流程后返回的 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 页面不应执行任何这些操作。没有钱 => 还没有行动。

    【讨论】:

    • 好的。我想我仍然想了解请求的顺序,因为 PayPal 似乎可以根据它们的设计将它们异步或同步地启动到两个页面,这可能会影响我的设计选择。
    • 返回return_urlcancel_url 是同步的:它发生在用户按下按钮时。调用您的notify_url 是异步的,可能会在几分钟、几小时或几天后发生,甚至可能永远不会发生。正如我所说,您的设计选择只需要通过notify_url 采取实际的业务操作。
    • 关于这个主题的最后一个问题。我有自己的内部 id,我必须在 notify 中链接到 txnIds。我可以看到始终如一地工作的唯一方法是如果我在自定义字段中传递一些东西。那么到那时,相同的自定义值会在所有未来请求中发送到此事务的通知 url?似乎如果用户在通过关闭选项卡付款之前离开 PayPal 网址,则不会有交易,但我已经在保留本质上是活动会话 ID 的内容。那么我如何知道这个会话 id 是否在没有超时的情况下处于非活动状态?
    • 实际上可能已经找到了我在这里寻找的东西,这似乎表明这可能不是正确的方法。 stackoverflow.com/questions/6054318/…
    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 2012-12-15
    • 2018-10-05
    • 2020-08-08
    • 2015-05-21
    • 2013-12-25
    • 1970-01-01
    • 2016-04-01
    相关资源
    最近更新 更多