2010-08-11 40 views
1

阅读PayPal开发者文档(这是很多文档)我不确定IPN是强制还是我可以忽略它。处理PayPal IPN:是否有必要?我可以使用其他方法吗?

当然,我必须实施一些其他的机制才能知道付款是否正确。我认为是这样做的:

  • 在returnUrl和cancelUrl中使用不同的代码创建一个新的支付(通过web服务)。这些代码是为每笔付款随机生成的,并存储在数据库中。

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

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

你认为这样可以吗?

谢谢。

+0

用户通过什么机制“完成付款?”您是否为他们启动付款页面?在我看来,PayPal会将其视为收款人在购买前查看returnUrl和cancelUrl的“正确”。 – 2010-08-11 16:14:07

+0

是的,我将启动PayPal付款页面。你认为在源代码中返回的URL将是可见的吗?那么,我会考虑一下。 – sinuhepop 2010-08-11 16:37:22

+0

不仅在源代码中,而且观察从Web浏览器发出的HTTP请求的人或程序肯定会看到它们。 – 2010-08-13 06:30:33

回答

1

不,我觉得这听起来很糟糕。

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

您可以使用PayPal SOAP API在收到URL后验证事务。你不能盲目地信任那个URL,你只能接受它。

您需要小心,不要让用户向您发送其他人的付款网址,并且为该付款接收产品两次。 (一次给真正的收款人,一次给欺诈者......)

重要的是你要确认你支付了正确的金额。 (假设你很在意你支付了正确的金额)。

一般来说,当你使用PayPal接口时,无论你使用什么方法,重要的是你要了解软件安全和威胁建模。否则,只有很少的机会可以避免欺诈。

+0

不,我承认它很丑,但我认为它不容易被破解。但我喜欢使用PayPal SOAP服务的想法。我必须使用一项服务(https://svcs.sandbox.paypal.com/AdaptivePayments/Pay/)才能将信息发送至PayPal并生成PayKey,另一项服务(https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails)当用户回到我的网站。可以吗? – sinuhepop 2010-08-11 15:50:16

1

贝宝设计了他们的系统,尽可能在逻辑上是安全的,因为他们认为它可以。我不会开始重新设计他们花费很长时间开发和思考的系统。你只是忽略了那么多的安全功能,为你的利益。

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

或者黑客可以猜测返回键。这将会持续很长时间,并且是高度随机化的,如果这是一个递增的关键,那么您又会拥有一个超级简单易用的系统。

验证付款IPN是必不可少的。不要采取捷径,在涉及金钱的情况下做对。

+0

实际上IPN是异步的。 SOAP API可以用来代替。 – 2010-08-11 15:26:27

+0

用户永远不会知道我的随机生成的代码。但我不得不承认它的丑陋。 – sinuhepop 2010-08-11 15:43:58

+0

@Heath:那么,您认为我可以使用PayPal SOAP服务获得相同(以及更多)的信息? – sinuhepop 2010-08-11 15:46:09

相关问题