我正试图获得在PHP中使用Express Checkout的最简单版本。
我的购物篮中有一个按钮,它将用户发送给由结帐向导提供的名为expresscheckout.php
的脚本。
在返回URL页面上,我拨打GetShippingDetails($_SESSION['TOKEN'])
以获取用户的送货细节。看似没有记录,我在响应中得到键/值'CHECKOUTSTATUS' => 'PaymentActionNotInitiated'
。 This question解释说,要完成交易,我必须拨打DoExpressCheckout
,这是由贝宝提供的PHP函数ConfirmPayment($FinalPaymentAmt)
包装。
为什么需要$FinalPaymentAmt
参数?如果我是正确的:
- 有三种类型的
paymentType
:Sale
,Authorisation
和Order
,其中第一个在PHP脚本expresscheckout.php
使用,并根据this page“可立即完成”。由于在重定向到贝宝之前在脚本的号召,贝宝调用中指定的支付金额提供包装:
CallShortcutExpressCheckout(($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL);
问题:
- 为什么它也有在
ConfirmPayment($FinalPaymentAmt)
中指定?如果为$paymentAmount
和$finalPaymentAmount
指定的值不同,会发生什么情况? - 是否
$FinalPaymentAmt
只在必要/使用如果$paymentType
不是“销售”?