【问题标题】:How to make safe Rails PayPal payment?如何进行安全的 Rails PayPal 支付?
【发布时间】:2019-04-28 17:17:13
【问题描述】:

我正在使用本指南 https://launchschool.com/blog/basic-paypal-checkout-processing-in-rails 通过简单的获取请求将用户重定向到特殊的 PayPal 页面。

然后网站将在特殊的钩子页面等待 PayPal 回答,以允许用户获得他的货物。但是 PayPal 回答只是一个简单的发布请求,如何确定这是一个真正的 PayPal 回答,而不是来自第三方应用程序的具有相同参数的虚假请求?

已解决

需要额外的逻辑层。根据文档,当 PayPal 向我们的钩子处理程序发送一个发布请求时,我们应该将其重新发送到特殊的验证地址 https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNImplementation/

如果它回答“已验证” - 我们可以继续处理请求

【问题讨论】:

  • 参数中没有只有你和PayPal共享的秘钥吗?
  • 我正在寻找它

标签: ruby-on-rails paypal


【解决方案1】:

当它提到return_url 时,它是在谈论Payment Data Transfer (PDT)

当它提到notification_url 时,它指的是Instant Payment Notification (IPN)

它们的相似之处在于您将 POST 请求发送回 PayPal 以进行验证。如果数据实际上来自他们,您将得到一个已验证的结果。如果不是,它将是无效的。

如果该指南中包含的示例代码不包含此回调,则它不是完整的指南(并且缺少重要的拼图部分。)

上面链接的文档中提供了有关此过程的详细信息。

【讨论】:

  • 确切值是:“return” - 这是我的网站页面,用户在付款完成后将被重定向到该页面。 “notify_url” - 我的网站发布处理程序,PayPal 将在其中发送包含此付款的任何详细信息的发布请求(成功或因任何原因取消)。当然,他们将数据发回给我,但如何检查其验证?我可以发送相同的post请求,其他人也可以这样做,如何检查?
  • 你有没有看我的回答?我准确地解释了它是如何工作的,我链接的文档提供了技术细节。您从 PDT/IPN 数据构建请求,然后将其发布回 PayPal 进行验证。然后他们的系统将回复 VERIFIED 或 INVALID。如果您从自己的服务器发送它,脚本中的 PayPal 验证将返回无效,您应该相应地构建您的代码逻辑。
  • 谢谢,德鲁,你是对的。我错了,因为变量名称相似但不准确。不幸的是,指南中完全遗漏了该部分。没有它,任何人都可以回答,我会将这个答案视为实际的 PayPal。
猜你喜欢
  • 2012-08-31
  • 2017-02-24
  • 2013-02-27
  • 2020-10-13
  • 2014-11-01
  • 2011-10-07
  • 2021-06-21
  • 2021-10-11
  • 2018-11-01
相关资源
最近更新 更多