PayPal快速结账集成响应

6

我目前很难理解我的PayPal EC集成的响应。

GetExpressCheckoutDetails的响应如下:

[CHECKOUTSTATUS] => PaymentActionNotInitiated

但是在DoExpressCheckout响应中,

[PAYMENTINFO_0_PAYMENTSTATUS] => Completed

我有点糊涂了,这是否意味着买家已经被收费并且支付成功了?我在PayPal论坛和门户网站上也找不到答案... 呜呜呜
以下是完整的响应细节:
GetExpressCheckout响应:
        [TOKEN] => EC-76768931K5394210Y
        [CHECKOUTSTATUS] => PaymentActionNotInitiated
        [TIMESTAMP] => 2012-10-20T07:15:22Z
        [CORRELATIONID] => 2b85ff556730a
        [ACK] => Success
        [VERSION] => 94.0
        [BUILD] => 3926908
        [EMAIL] => testpp_per_1348562981_per@gmail.com
        [PAYERID] => 3PCFRVX65A7Y8
        [PAYERSTATUS] => verified
        [FIRSTNAME] => Test
        [LASTNAME] => Peepee
        [COUNTRYCODE] => US
        [CURRENCYCODE] => PHP
        [AMT] => 895.00
        [ITEMAMT] => 895.00
        [SHIPPINGAMT] => 0.00
        [HANDLINGAMT] => 0.00
        [TAXAMT] => 0.00
        [INVNUM] => 1231313213213
        [INSURANCEAMT] => 0.00
        [SHIPDISCAMT] => 0.00
        [L_NAME0] => Test Item
        [L_QTY0] => 1
        [L_TAXAMT0] => 0.00
        [L_AMT0] => 895.00
        [L_ITEMWEIGHTVALUE0] =>    0.00000
        [L_ITEMLENGTHVALUE0] =>    0.00000
        [L_ITEMWIDTHVALUE0] =>    0.00000
        [L_ITEMHEIGHTVALUE0] =>    0.00000
        [PAYMENTREQUEST_0_CURRENCYCODE] => PHP
        [PAYMENTREQUEST_0_AMT] => 895.00
        [PAYMENTREQUEST_0_ITEMAMT] => 895.00
        [PAYMENTREQUEST_0_SHIPPINGAMT] => 0.00
        [PAYMENTREQUEST_0_HANDLINGAMT] => 0.00
        [PAYMENTREQUEST_0_TAXAMT] => 0.00
        [PAYMENTREQUEST_0_INVNUM] => 1231313213213
        [PAYMENTREQUEST_0_INSURANCEAMT] => 0.00
        [PAYMENTREQUEST_0_SHIPDISCAMT] => 0.00
        [PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED] => false
        [L_PAYMENTREQUEST_0_NAME0] => Test Item
        [L_PAYMENTREQUEST_0_QTY0] => 1
        [L_PAYMENTREQUEST_0_TAXAMT0] => 0.00
        [L_PAYMENTREQUEST_0_AMT0] => 895.00
        [L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE0] =>    0.00000
        [L_PAYMENTREQUEST_0_ITEMLENGTHVALUE0] =>    0.00000
        [L_PAYMENTREQUEST_0_ITEMWIDTHVALUE0] =>    0.00000
        [L_PAYMENTREQUEST_0_ITEMHEIGHTVALUE0] =>    0.00000
        [PAYMENTREQUESTINFO_0_ERRORCODE] => 0

DoExpressCheckout 响应:

        [TOKEN] => EC-76768931K5394210Y
        [SUCCESSPAGEREDIRECTREQUESTED] => false
        [TIMESTAMP] => 2012-10-20T07:15:27Z
        [CORRELATIONID] => ec7af38c18968
        [ACK] => Success
        [VERSION] => 94.0
        [BUILD] => 3926908
        [INSURANCEOPTIONSELECTED] => false
        [SHIPPINGOPTIONISDEFAULT] => false
        [PAYMENTINFO_0_TRANSACTIONID] => 02800680NT5556907
        [PAYMENTINFO_0_TRANSACTIONTYPE] => expresscheckout
        [PAYMENTINFO_0_PAYMENTTYPE] => instant
        [PAYMENTINFO_0_ORDERTIME] => 2012-10-20T07:15:26Z
        [PAYMENTINFO_0_AMT] => 895.00
        [PAYMENTINFO_0_FEEAMT] => 49.91
        [PAYMENTINFO_0_TAXAMT] => 0.00
        [PAYMENTINFO_0_CURRENCYCODE] => PHP
        [PAYMENTINFO_0_PAYMENTSTATUS] => Completed
        [PAYMENTINFO_0_PENDINGREASON] => None
        [PAYMENTINFO_0_REASONCODE] => None
        [PAYMENTINFO_0_PROTECTIONELIGIBILITY] => Ineligible
        [PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE] => None
        [PAYMENTINFO_0_SECUREMERCHANTACCOUNTID] => K3TTNE7MKRJUN
        [PAYMENTINFO_0_ERRORCODE] => 0
        [PAYMENTINFO_0_ACK] => Success

非常感谢!:)
1个回答

9

只有在您调用DoExpressCheckout之后,付款才会发生。

在第一步(SetExpressCheckout + 重定向到PayPal),买家授权您收取款项。现在,您需要通过调用DoExpressCheckout来实际获取他的钱。

如果您在DoExpressCheckout之后调用GetExpressCheckoutDetails,则应该会得到支付完成的响应。

编辑: 您可能希望在调用DoExpresCheckout之前先调用GetExpressCheckoutDetails,以获取买家选择的地址,以防它可能会改变总额,因此这仍然是一个有效的用例。


我明白了,这就是为什么会让人感到困惑。我按照PayPal Express Checkout Integration Guide(最后更新日期:2012年8月7日)的指引进行操作,其中是SetExpressCheckout -> GetExpressCheckoutDetails -> DoExpressCheckoutPayment。好的,我将忽略GetExpressCheckout checkout_status并使用DoExpressCheckoutPayment返回的数据进行处理。谢谢! :) - Woppi
正确,我们在执行DoExpressCheckout之前先执行GetExpressCheckoutDetails以获取国家信息,这样我们就可以决定是否添加增值税。 - Dave Sumter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接