Paypal 快速结帐支付更多(问题)

Posted

技术标签:

【中文标题】Paypal 快速结帐支付更多(问题)【英文标题】:Paypal express checkout payed more (issue) 【发布时间】:2013-09-28 12:44:46 【问题描述】:

大家好。 我刚刚在我的网站中实施了贝宝结帐快递。 一切都很顺利,直到我对其进行了现场测试。(没有沙箱,因为他们没有向我发送确认电子邮件,我无法获得 api 凭据) - 我使用了自己的 paypal 帐户。

我的问题是:

第 1 步)使用所需数据调用“SetExpressCheckout”。

第 2 步)获取代币并重定向用户支付 0.01 美元。 (一切都好,用户看到了 0.01 美元)

第3步)获取买家详细信息...“GetExpressCheckoutDetails”并保存(都很好)

这是一个大问题:

第 4 步)调用 api: "DoExpressCheckoutPayment" with TOKEN, PAYER_ID ...etc 还有PAYMENT TOTAL AMOUNT

在这一步中,我错误地将总金额添加为 500 美元 - 硬编码,在完成订单后,500 美元从买家账户而不是 0.01 美元转入我的账户。

这怎么可能???为什么paypal不检查setExpressCheckout的总金额和DoExpressCheckoutPayment的总金额,因为tocken是一样的。

在我看来,这是一个重大的安全问题。

【问题讨论】:

【参考方案1】:

这是设计使然。 SetExpressCheckout 设置付款,但在您调用 GetExpressCheckoutDetails 之前,您的应用程序不会知道(在最佳实践方案中)买家的送货地址。此时,您可以相应地计算运费和销售税并将其添加到订单中,显示最终审核页面,然后调用 DoExpressCheckoutPayment 并告知最终订单金额。

所以,是的,无论你在 DECP 中传递什么,都会被收取费用,所以你要确保它是正确的。

至于测试,您只需要在http://developer.paypal.com 创建一个帐户,然后在其中创建沙盒帐户。您可以通过单击每个沙盒帐户的配置文件来获取沙盒帐户的 API 凭据。无需等待任何确认电子邮件或任何东西。不确定你指的是什么,但我绝对建议在沙盒上进行测试。

【讨论】:

在我确认我的电子邮件之前,我无法获得 api 凭据。即使在沙盒中。我不知道为什么这么有必要。 沙盒帐户甚至不使用真实的电子邮件地址。这一切都是通过开发者帐户处理的。这一切都可以在几分钟内完成。 那为什么我无法获取 api 凭据?通过转到 Profile->Api Access->Option 2(没有第三方)我得到这个:“请在请求 API 证书之前确认您的电子邮件地址。”。我相信你有更多的经验,告诉我:为什么买家直到交易完成才看到他支付(将支付)500 美元?

以上是关于Paypal 快速结帐支付更多(问题)的主要内容,如果未能解决你的问题,请参考以下文章

Paypal 上下文快速结帐 - 模式窗口不正确

Magento 2 - Paypal 错误“我们无法启动快速结帐”。

Paypal 快速结帐 vs REST api?

用于 nodejs 应用程序的 Paypal 快速结帐

Paypal 快速结帐。在 onAuthorize 函数中将数据存储在 DB 中是不是安全?

Bigcommerce 无头网站与 PayPal express 集成 [关闭]