2016-10-27 3 views
0

Моего потоком кассы требуют несколько разрешений и захватов, как описаны в https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECRelatedAPIOps/#authorization-payment-action-for-express-checkoutНесколько разрешений с PayPal Экспресс 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 

Далее Я перенаправляю пользователя к оплате, чтобы выполнить вход и согласиться. Когда они вернутся, я звоню, чтобы создать соглашение о выставлении счетов, так как я буду делать ссылочные транзакции позднее. Это работает нормально. Затем я сделаю свой первый вызов auth;

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 

Все до сих пор хорошо. Но мне нужно сделать мой второй auth сейчас;

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 

.. вместо выполнения AUTH, PayPal, кажется, думает, что его дубликат первого AUTH;

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 

Идентификатор транзакции и сумма те же, что и в ответе на первый авторизатор. Как сделать несколько разрешений без принятия PayPal, они повторяются? Непонятно ли мое понимание потока? Если да, то что необходимый поток?

ответ

1

Вы не можете совершать несколько вызовов в DoExpressCheckoutPayment с помощью того же токена. Вам нужно снова запустить весь поток с помощью SetExpressCheckout, чтобы получить новый токен.

Действительно, это похоже на то, что вы после этого - это «Заказ». Вместо использования действия оплаты авторизации используйте Order. Когда «Заказ» завершается с помощью PayPal, вы можете запускать несколько аутсов и захватов с помощью DoAuthorization и DoCapture.

Дополнительную информацию см. В документе PayPal для How to Create and Process an Order Using Express Checkout.

Что вы делаете с соглашением о выставлении счетов, было бы для ссылочных транзакций. Если пользователь проходит авторизацию, у вас есть настройка с соглашением о выставлении счетов, вы можете в любое время запустить DoReferenceTransaction для обработки любой суммы, необходимой для этого лица, без дальнейшего одобрения. Обычно это используется для таких вещей, как система «autoship» или система «один клик», в которой информация о выставлении счетов человека сохраняется, поэтому им не нужно вводить ее каждый раз, когда они заказывают у вас. Вы также можете создать систему повторных платежей с помощью этого метода, если вам нужно.

Основываясь на том, что вы сказали, это не похоже на то, что вам нужно соглашение о выставлении счетов. Вам просто нужно сделать экспресс-заказ.

 Смежные вопросы

  • Нет связанных вопросов^_^