我的问题是:
步骤1)使用所需数据调用“SetExpressCheckout”。
步骤2)获取tocken并重定向用户支付0.01美元。 (一切都很好,用户看到了0.01美元)
步骤3)获取买家详细信息...“GetExpressCheckoutDetails”并保存(一切顺利)
这是一个大问题:
步骤4)使用TOKEN,PAYER_ID等调用api:“DoExpressCheckoutPayment”支付总金额
在这一步中,我错误地将TOTAL AMOUNT添加为500美元 - 硬编码,在最终确定订单后,500美元从买家帐户转移到我的帐户而不是0.01美元。
这怎么可能???为什么paypal不会使用DoExpressCheckoutPayment的总金额来检查setExpressCheckout的总金额,因为tocken是相同的。
在我看来,这是一个重大的安全问题。
答案 0 :(得分:0)
这是设计上的。 SetExpressCheckout设置付款,但在您调用GetExpressCheckoutDetails之前,您的应用程序将不知道(在最佳实践场景中)买方的送货地址。此时,您可以相应地计算运费和销售税,并将其添加到订单中,显示最终审核页面,然后调用DoExpressCheckoutPayment,并收取最终订单金额。
所以,是的,无论你在DECP中传递的是什么都会被收费,所以你要确保这是正确的。
至于测试,您只需在http://developer.paypal.com创建一个帐户,然后在其中创建沙盒帐户。您可以通过单击每个沙盒帐户的配置文件来获取沙盒帐户的API凭据。无需等待任何确认电子邮件或任何其他内容。不确定你在那里指的是什么,但我绝对建议在沙盒上进行测试。