【问题标题】:Handling of PayPal IPN: is necessary? Can I use another method?处理 PayPal IPN:有必要吗?我可以使用其他方法吗?
【发布时间】:2011-03-28 10:59:55
【问题描述】:

阅读 PayPal 开发人员文档(这是很多文档)我不确定 IPN 是否是强制性的,或者我可以忽略它。

当然,我必须执行一些其他机制才能知道付款是否正确。我想这样做:

  • 在 returnUrl 和 cancelUrl 中使用不同的代码创建新的付款(通过 Web 服务)。每次付款都会随机生成此代码并存储在数据库中。

  • 当用户完成付款(OK 或 KO)时,PayPal 会将其页面重定向到我的网站,我将能够知道代码是否正确。

  • 如果出现问题(用户关闭窗口、响应未到达、代码不匹配...)将在 PayPal 网站上手动查看交易。

你觉得这样好吗?

谢谢。

【问题讨论】:

  • 用户通过什么机制“完成支付”?您是否正在为他们启动付款页面?在我看来,PayPal 会将其视为收款人在购买前查看 returnUrl 和 cancelUrl 的“权利”。
  • 是的,我将启动 PayPal 支付页面。你认为在源代码中返回 url 会是可见的吗?好吧,我会考虑的。
  • 不仅在源代码中,而且观察Web浏览器发出的HTTP请求的人或程序肯定会看到它们。

标签: paypal paypal-ipn paypal-soap


【解决方案1】:

不,我认为这听起来很糟糕。

用户可以跳过付款步骤,只需将所需的 URL 一起编辑,然后将其粘贴到浏览器地址栏中。那会给他们免费的产品。

收到 URL 后,您可以使用 PayPal SOAP API 来验证交易。您只是不能在收到该 URL 的那一刻就盲目相信它。

您需要小心,不要让用户向您发送其他人付款的 URL,从而两次收到该付款的产品。 (一次给真正的收款人,一次给欺诈者……)

请务必确认您收到的金额正确。 (假设你关心你得到了正确的金额。)

一般而言,当您与 PayPal 交互时,无论您使用何种方法,了解软件安全和威胁建模都很重要。否则,您真正免受欺诈的可能性很小。

【讨论】:

【解决方案2】:

Paypal 已将他们的系统设计为在逻辑上尽可能安全。我不会开始重新设计他们花了很长时间开发和思考的系统。您只是忽略了许多有益于您的安全功能。

如果这两个密钥在任何时候都可以在原始格式的客户端访问,那么您就有了一个易于破解的系统。只需点击到 Paypal 付款页面,然后在浏览器中输入退货地址而不实际付款,您的系统会将其视为有效交易,除非您在发货前手动检查自己(对于电子商品,为时已晚不过)。

或者黑客可以猜出返回键。它必须很长,并且高度随机化,如果它是一个递增的密钥,那么你又拥有一个超级容易破解的系统。

对于验证支付 IPN 是必不可少的。不走捷径,有钱就走。

【讨论】:

  • 其实IPN是异步的。可以改用 SOAP API。
  • 用户永远不会知道我随机生成的代码。但我不得不承认它很丑。
  • @Heath:那么,在您看来,我可以使用 PayPal SOAP 服务获得相同(甚至更多)的信息?
  • 说他们永远不会知道代码是一件很危险的事情,在某些情况下可以通过巧妙的方法提取代码。理论上,如果知道代码,你就会被利用,我宁愿按照 paypal 推荐的方式实现它。
  • 你说得对,这不是一个好主意。但我真正的问题是关于 IPN 是否真的有必要或者还有其他一些有效的方法。例如,SOAP。您认为这是一个有效的解决方案吗?
猜你喜欢
  • 2011-11-17
  • 1970-01-01
  • 2011-03-10
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 2023-01-05
相关资源
最近更新 更多