(Paypal) GetTransactionDetails требует TRANSACTIONID. Как мне получить это?
SetExpressCheckout отправляет только ReturnURL следующую версию ACK CORRELATIONID TIMESTAMP VERSION BUILD
Чтобы завершить транзакцию, мы должны сначала вызвать GetTransactionDetails с TRANSACTIONID, чтобы получить PAYERID для окончательного использования с DoExpressCheckout для завершения транзакции.
Где мы получаем TRANSACTIONID? Я не могу найти информацию нигде.
Если я использую CORRELATIONID в качестве TRANSACTIONID, я получаю "Идентификатор транзакции недействителен".
Файлы примеров имеют просто "example_transactionId" и не указывают, откуда он должен прийти.
От PayPal
- Вызвать операцию API, такую как SetExpressCheckout, которая устанавливает обратный URL-адрес, на который PayPal перенаправляет браузер вашего покупателя после того, как покупатель заканчивает работу на PayPal. Другие настройки также могут быть выполнены этой операцией API.
- Вызвать дополнительные операции 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.