【问题标题】:Rejecting a PayPal IPN request for security reasons出于安全原因拒绝 PayPal IPN 请求
【发布时间】:2020-06-20 20:30:58
【问题描述】:

当我从 PayPal(或类似服务)获得 IPN 以表明销售时,他们要求:

  1. 发回200 OK
  2. 发回请求正文。

如您所知,客户在订购 100 美元的产品时可以轻松地玩弄数字并将价格设置为 0,或者只是收到一条虚假销售的恶搞信息。

在这种情况下,他们建议查看云端的IPN 消息。 但是在这个阶段销售已经完成,如果这是一个黑客,卖家将不得不退款,整个计划听起来是错误的。

看来我真的不能发送400 而不是200 OK

我读了这个How to explicitly reject an IPN request,发现在您将付款请求与您的数据库进行比较并发现有问题后,您无法真正拒绝。

那么我怎样才能确保销售是真实的呢?

【问题讨论】:

  • 不要使用IPN,准备一个支付服务器端,然后将用户重定向到paypal api返回给你的URL,如果客户端接受了支付,那么他将被重定向回你的您可以批准付款的服务器,因此这种情况没有问题
  • 完全不知道您提供什么,但我代表(如市场)付款,所以personaA 支付personB,我只是提供服务。
  • 好的,我明白你的意思了,但这听起来有点像一个不好的做法,因为所有网关都以另一种方式工作。贝宝的文档没有提到这个选项。另外,当我有付款链接时,我需要将其发送给客户以重定向他,所以这又不安全
  • 其实不是,这实际上是 Paypal 接受付款的首选方式,您可以在此处阅读developer.paypal.com/docs/integration/direct/payments/…,您可以看到“创建 PayPal 付款”阶段,然后是“获取付款”阶段赞同。”最后有“执行付款”。但是,这是接受付款的最佳方式,例如对于电子商务,收款人始终是您,如果您能做到这一点,也可以更改收款人
  • 1.在您收到正确的付款之前,没有销售。 2. 如果您的申请流程是在您收到钱之前执行销售,请修复它。在你破产之前快速修复它。 3. 您没有义务向欺诈者退款。

标签: security paypal paypal-ipn


【解决方案1】:

最好的解决方案是使用server-side front end UI 与服务器上的两条路由配对以“设置事务”和“捕获事务”“:https://developer.paypal.com/docs/checkout/reference/server-integration/。那么你根本不需要IPN,任何事情。


但是,如果您要使用 IPN,请在此处记录:https://developer.paypal.com/docs/api-basics/notifications/ipn/

有一个验证步骤,您将 IPN 消息发回 PayPal 以检查它是否有效。这回答了你的问题。


如果您想要完成的是由于金额或描述无效而拒绝交易,此时在销售类型交易的情况下已经为时已晚。您所能做的就是通过 API 退款。

【讨论】:

  • “有一个验证步骤,您可以在其中发布 IPN..” 这正是问题所在,此时销售已完成。这让我想到:PayPal 的工程师是怎么想的?说真的,你为什么不能先给我发 IPN 来批准?然后确认销售?很明显客户端可以更改前端,所以...?
  • IPN 不是为此而设计的,它只是一个交易状态的附加通知服务。如果您想决定是否捕获交易,请参阅我上面关于服务器端集成的第一段,这也是您应该使用的。
猜你喜欢
  • 2019-01-06
  • 2017-07-08
  • 2015-07-26
  • 2014-06-09
  • 2021-09-08
  • 2014-11-09
  • 2020-05-28
  • 2020-06-19
  • 2018-10-05
相关资源
最近更新 更多