Как получить информацию о только что совершенной транзакции?

Это мой код:

$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername('name');
$gateway->setPassword('pass');
$gateway->setSignature('sig');
$gateway->setTestMode(true);

$resp = $gateway->purchase(
array(
'cancelUrl' => 'mysite/',
'returnUrl' => 'mysite/success',
'description' => "mysite item",
'amount' => $amount, //final amount
'currency' => 'EUR'
)
)->send();

if ($resp->isSuccessful()) {
// payment was successful: update database
// never reached
$a = new database('database');
$a->write database;
$dbp = null; die;
print_r($resp);
} elseif ($resp->isRedirect()) {
// redirect to offsite payment gateway
$resp->redirect();
} else {
echo $resp->getMessage();
header('Location: mysite/error');
exit;
}

Как я могу получить информацию о транзакции после перенаправления?
Как адаптировать этот код для кредитной карты на PayPal?

0

Решение

Из ваших комментариев я бы предположил, что вы не переходите к успешной стадии оплаты.

Имея это в виду, давайте посмотрим на поток экспресс-оплаты и сравним его с вызовом API DoDirectPayment

===============

  1. Вызов API-интерфейса SetExpressCheckout — корзина объявляет детали оформления заказа и возвращает «токен экспресс-проверки». Маркер идентифицирует сеанс оформления заказа, который магазин запросил у PayPal.

  2. Покупатель перенаправляется на URL-адрес Express Checkout, а токен добавляется к URL-адресу перенаправления. https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&маркер = EC-6C677292NP7377708

(если вы пропустите шаг 5, вы должны добавить параметр useraction = commit в URL перенаправления)

  1. Покупатель входит в систему и утверждает платеж

  2. Покупатель перенаправляется обратно на URL-адрес возврата, объявленный в вызове API SetExpressCheckout, с идентификатором PayerID и токеном, добавленным к URL-адресу возврата в качестве параметров HTTP GET.

5. Интеграция инициирует вызов API GetExpressCheckoutDetails, извлекает информацию о доставке и отображает последний обзор и дополнительные расходы по доставке для покупателя.

  1. Как только покупатель решает завершить платеж, он инициирует платеж через вашу интеграцию на вашем веб-сайте. Затем веб-сайт вызывает API-интерфейс DoExpressCheckoutPayment

===============

Для платежей с помощью кредитной карты через API DoDirectPayment запрос и ответ API NVP должны выглядеть следующим образом — это должно быть довольно простым.

Request:
VERSION = 109.0
METHOD = DoDirectPayment
PAYMENTACTION = Sale
IPADDRESS = 192.168.0.1
AMT = 0.01
CREDITCARDTYPE = Visa
ACCT = xxxxxxxx6840
EXPDATE = 102020
CVV2 = 123
FIRSTNAME = John
LASTNAME = Test
STREET = 12312 Port Grace Blvd
CITY = La Vista
STATE = NE
COUNTRYCODE = US
ZIP = 68128
CURRENCYCODE = USD

Response:
TIMESTAMP=2015-01-20T16:00:27Z
CORRELATIONID=180513f33ad52
ACK=Success
VERSION=109.0
BUILD=14726230
AMT=0.01
CURRENCYCODE=USD
AVSCODE=X
CVV2MATCH=M
TRANSACTIONID=0PA61839GE498951M}

===============

Судя по вашим комментариям в коде, вы предполагаете, что транзакция завершается после выполнения шага 4.

Поскольку я не вижу кода для инициирования вызова API DoExpressCheckoutPayment, вам необходимо убедиться, что выполняется хотя бы шаг 6.

https://devtools-paypal.com/integrationwizard/ имеет отдельный пример кода, который может помочь.
Однако использование интеграции на основе SDK избавит вас от многих проблем:

https://devtools-paypal.com/guide/expresscheckout/php?interactive=ON&ENV = песочница

Если вы хотите получить детали платежа на более позднем этапе, вы можете запустить вызов API GetTransactionDetails для идентификатора транзакции, возвращенного в вызове API DoDirectPayment или в вызовах DoExpressCheckoutPayment.

Увидеть: https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/GetTransactionDetails_API_Operation_NVP/

0

Другие решения

Вы можете использовать мгновенное уведомление о платеже, чтобы получать уведомления о только что завершенной транзакции. IPN это рекомендуемый путь.

0

По вопросам рекламы [email protected]