(Paypal) GetTransactionDetails требует TRANSACTIONID. Как мне получить это?

SetExpressCheckout отправляет только ReturnURL следующую версию ACK CORRELATIONID TIMESTAMP VERSION BUILD

Чтобы завершить транзакцию, мы должны сначала вызвать GetTransactionDetails с TRANSACTIONID, чтобы получить PAYERID для окончательного использования с DoExpressCheckout для завершения транзакции.

Где мы получаем TRANSACTIONID? Я не могу найти информацию нигде.

Если я использую CORRELATIONID в качестве TRANSACTIONID, я получаю "Идентификатор транзакции недействителен".

Файлы примеров имеют просто "example_transactionId" и не указывают, откуда он должен прийти.

От PayPal

  1. Вызвать операцию API, такую ​​как SetExpressCheckout, которая устанавливает обратный URL-адрес, на который PayPal перенаправляет браузер вашего покупателя после того, как покупатель заканчивает работу на PayPal. Другие настройки также могут быть выполнены этой операцией API.
  2. Вызвать дополнительные операции API после получения разрешения покупателя на PayPal, например, GetExpressCheckoutDetails или DoExpressCheckoutPayment.

Шаг первый работает, потому что у нас есть вся информация и она возвращается.

Шаг 2 не может быть выполнен без как минимум TRANSACTIONID, который не указан.

Что за?

3 ответа

Вы должны сначала выполнить TransactionSearch. он вернет транзакции с идентификатором. Затем вы можете использовать идентификатор для GetTransactionDetails

Когда PayPal перенаправляет пользователя обратно в RETURNURL (который вы должны установить при вызове SetExpressCheckout), вы получаете параметр TOKEN в запросе.

Затем вы извлекаете информацию о транзакции, используя GetExpressCheckoutDetails, передавая TOKEN в качестве параметра. Ответ будет содержать AMT, PAYERID и TOKEN среди прочего.

Чтобы завершить транзакцию, вы передаете эти параметры DoExpressCheckoutPayment.

Кстати, единственное время, когда вам нужно использовать CORRELATIONID, - это когда вы разговариваете со службой поддержки PayPal. Он не имеет практического применения для обработки платежей.

Надеюсь, поможет!:)

В DGdoExpressCheckout.php ответ получен в $DoECResponse, Идентификатор транзакции можно найти глубоко внутри этого объекта:

$tranId = $DoECResponse->DoExpressCheckoutPaymentResponseDetails->PaymentInfo[0]->TransactionID;

Вы можете получить все детали объекта в файле:

file_put_contents('debug.log', print_r($DoECResponse, true));

$DoECResponse Объект предоставляет некоторую основную информацию о транзакции, а GetTransactionDetails можно использовать для получения более подробной информации. В большинстве случаев не нужно было бы вызывать GetTransactionDetails.

Другие вопросы по тегам