0

https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECRelatedAPIOps/#authorization-payment-action-for-express-checkoutで説明されているように、私のチェックアウト フローには複数の承認とキャプチャが必要です。

注文には別々に出荷される可能性のある複数のアイテムが含まれているため、別々の認証とキャプチャを行う必要があります。

まずSetExpressCheckout、 のアクションで を呼び出しますAuthorization

cancelUrl=xxxxxxx&
PAYMENTREQUEST_0_PAYMENTACTION=Authorization&
PAYMENTREQUEST_0_CURRENCYCODE=USD&
L_BILLINGAGREEMENTDESCRIPTION0=ClubUsage&
VERSION=204&
PAYMENTREQUEST_0_AMT=30.00&
L_BILLINGTYPE0=MerchantInitiatedBilling&
METHOD=SetExpressCheckout&
USER=xxxxxxx&
PWD=xxxxxxx&
returnUrl=xxxxxxx&
SIGNATURE=xxxxxxx

トークン付きの応答を受け取ります。

TOKEN=EC-2EP3671xxxxxxxx&
TIMESTAMP=xxxxxxx&
CORRELATIONID=xxxxxxx&
ACK=Success&
VERSION=204&
BUILD=xxxxxxx

次に、ユーザーをペイパルにリダイレクトして、サインインして同意します。彼らが戻ってきたら、後日参照トランザクションを行うため、Billing Agreement を作成するために電話をかけます。これは正常に動作します。次に、最初の認証呼び出しを行います。

PAYMENTREQUEST_0_PAYMENTACTION=Authorization&
PAYMENTREQUEST_0_PAYMENTREQUESTID=200001&
PAYERID=xxxxxxx&
VERSION=204&
PAYMENTREQUEST_0_AMT=25.00&
METHOD=DoExpressCheckoutPayment&
USER=xxxxxxx&
PWD=xxxxxxx&
SIGNATURE=xxxxxxx&
TOKEN=EC-2EP3671xxxxxxx

そして、私は成功した応答を受け取ります。

TOKEN=EC-2EP3671xxxxxxx&
SUCCESSPAGEREDIRECTREQUESTED=false&
TIMESTAMP=xxxxxxx&
CORRELATIONID=xxxxxxx&
ACK=Success&
VERSION=204&
BUILD=26126731&
INSURANCEOPTIONSELECTED=false&
SHIPPINGOPTIONISDEFAULT=false&
PAYMENTINFO_0_TRANSACTIONID=0J23486xxxxxxx&
PAYMENTINFO_0_TRANSACTIONTYPE=expresscheckout&
PAYMENTINFO_0_PAYMENTTYPE=instant&
PAYMENTINFO_0_ORDERTIME=xxxxxxx&
PAYMENTINFO_0_AMT=25.00&
PAYMENTINFO_0_TAXAMT=0.00&
PAYMENTINFO_0_CURRENCYCODE=USD&
PAYMENTINFO_0_PAYMENTSTATUS=Pending&
PAYMENTINFO_0_PENDINGREASON=authorization&
PAYMENTINFO_0_REASONCODE=None&
PAYMENTINFO_0_PROTECTIONELIGIBILITY=Eligible&
PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=ItemNotReceivedEligible,UnauthorizedPaymentEligible&
PAYMENTINFO_0_SELLERPAYPALACCOUNTID=xxxxxxx&
PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=xxxxxxx&
PAYMENTINFO_0_PAYMENTREQUESTID=200001&
PAYMENTINFO_0_ERRORCODE=0&
PAYMENTINFO_0_ACK=Success

これまでのところ、すべて順調です。しかし、今すぐ 2 回目の認証を行う必要があります。

PAYMENTREQUEST_0_PAYMENTACTION=Authorization&
PAYMENTREQUEST_0_PAYMENTREQUESTID=200002&
PAYERID=xxxxxxx&
VERSION=204&
PAYMENTREQUEST_0_AMT=5.00&
METHOD=DoExpressCheckoutPayment&
USER=xxxxxxx&
PWD=xxxxxxx&
SIGNATURE=xxxxxxx&
TOKEN=EC-2EP3671xxxxxxx

..しかし、認証を実行する代わりに、PayPal は最初の認証の複製であると考えているようです。

TOKEN=EC-2EP3671xxxxxxx&
SUCCESSPAGEREDIRECTREQUESTED=false&
TIMESTAMP=xxxxxxx&
CORRELATIONID=xxxxxxx&
ACK=SuccessWithWarning&
VERSION=204&
BUILD=26126731&
L_ERRORCODE0=11607&
L_SHORTMESSAGE0=Duplicate Request&
L_LONGMESSAGE0=A successful transaction has already been completed for this token.&
L_SEVERITYCODE0=Warning&
INSURANCEOPTIONSELECTED=false&
SHIPPINGOPTIONISDEFAULT=false&
PAYMENTINFO_0_TRANSACTIONID=0J23486xxxxxxx&
PAYMENTINFO_0_TRANSACTIONTYPE=expresscheckout&
PAYMENTINFO_0_PAYMENTTYPE=instant&
PAYMENTINFO_0_ORDERTIME=xxxxxxx&
PAYMENTINFO_0_AMT=25.00&
PAYMENTINFO_0_TAXAMT=0.00&
PAYMENTINFO_0_CURRENCYCODE=USD&
PAYMENTINFO_0_PAYMENTSTATUS=Pending&
PAYMENTINFO_0_PENDINGREASON=authorization&
PAYMENTINFO_0_REASONCODE=None&
PAYMENTINFO_0_PROTECTIONELIGIBILITY=Eligible&
PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=ItemNotReceivedEligible,UnauthorizedPaymentEligible&
PAYMENTINFO_0_SELLERPAYPALACCOUNTID=xxxxxxx&
PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=xxxxxxx&
PAYMENTINFO_0_PAYMENTREQUESTID=200001&
PAYMENTINFO_0_ERRORCODE=0&
PAYMENTINFO_0_ACK=Success

トランザクション ID と金額は、最初の認証に対する応答と同じです。同じオーソリが繰り返されていると PayPal が認識しないように、複数のオーソリを行うにはどうすればよいですか? 流れに対する私の理解は間違っていますか?もしそうなら、必要な流れは何ですか?

4

1 に答える 1

1

同じトークンを使用して DoExpressCheckoutPayment を複数回呼び出すことはできません。新しいトークンを取得するには、SetExpressCheckout を使用してフロー全体を再度開始する必要があります。

しかし、本当にあなたが求めているのは「注文」のようです。Authorization の支払いアクションを使用する代わりに、Order を使用します。PayPal で「注文」が完了すると、DoAuthorization と DoCapture を使用して、それに対して複数の認証とキャプチャを実行できます。

詳細については、エクスプレス チェックアウトを使用して注文を作成および処理する方法に関する PayPal のドキュメントを参照してください。

Billing Agreement で行っていることは、参照トランザクション用です。ユーザーが、Billing Agreement で設定した Authorization を通過した場合、いつでも DoReferenceTransaction を実行して、それ以上の承認なしでその人に必要な金額を処理できます。これは通常、「自動発送」システムや「ワンクリック チェックアウト」タイプのシステムなどで使用され、請求情報が保存されるため、注文のたびに再度入力する必要がありません。必要に応じて、この方法で定期支払いシステムを構築することもできます。

あなたが言ったことに基づくと、Billing Agreement は必要ないようです。エクスプレス チェックアウト注文を行うだけです。

于 2016-10-27T22:45:54.803 に答える