2016-10-27 11 views
0

私のチェックアウトフローは、順序が別々に出荷することができる複数の項目が含まれているので、私は別のauthsにしてキャプチャを行う必要があり、複数の認証およびキャプチャを必要とします。複数の権限は

まず、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 

次に、私はサインインして同意するためにユーザーをpaypalにリダイレクトします。彼らが帰ったら、私は後で参照トランザクションを行うので、請求契約を作成するように呼びます。これは問題なくOKです。次に私は最初の認証の呼び出しを行います。

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 

これまでのところすべて良いです。しかし、私は今、私の第二の認証をする必要があります。

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 

..but代わりに認証を実行する、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と量は、最初のauthの応答のものと同じです。 PayPalを使わずに複数の権限を設定するにはどうすれば同じことが繰り返されていると思いますか?私の流れの理解は間違っていますか?もしあればになりますか?

答えて

1

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

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

詳しくはHow to Create and Process an Order Using Express CheckoutのPayPalのドキュメントをご覧ください。

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

あなたが言ったことに基づいて、請求契約書が必要なようには聞こえません。エクスプレスチェックアウト注文をするだけです。