PayPal Express Checkout всегда показывает пользователя "Эта транзакция истёк". страницы, но не ошибка API - программирование
Подтвердить что ты не робот

PayPal Express Checkout всегда показывает пользователя "Эта транзакция истёк". страницы, но не ошибка API

Я пытаюсь настроить простую последовательность платежей с помощью PayPal Express Checkout. Мой вызов SetExpressCheckout работает нормально, я получаю ACK=Success и токен. Однако, когда я перенаправляю пользователя на PayPal с помощью этого токена, он всегда отображает на экране экран:

Эта транзакция истёк. Пожалуйста, вернитесь на сайт получателя чтобы завершить транзакцию, используя их регулярный поток проверки.

Ваш сеанс закончился

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

Чтобы уточнить, я не получаю никаких кодов ошибок из вызова SetExpressCheckout API, но токен всегда, кажется, истек. Я попытался перенаправить на нонсенсы, но это создает другую страницу. Кажется, что я получаю действительный токен и перенаправляю его правильно, но он всегда истек в течение 1-2 секунд, который требуется.

Подробности примерного запроса:

Что я посылаю в исходном запросе SetExpressCheckout:

Array
(
    [PAYMENTACTION] => Sale
    [useraction] => commit
    [RETURNURL] => xxxx
    [CANCELURL] => xxxxx
    [PAYMENTREQUEST_0_AMT] => 49.00
    [PAYMENTREQUEST_0_SHIPPINGAMT] => 0
    [PAYMENTREQUEST_0_CURRENCYCODE] => USD
    [PAYMENTREQUEST_0_ITEMAMT] => 49.00
    [L_PAYMENTREQUEST_0_NAME0] => xxxxx
    [L_PAYMENTREQUEST_0_DESC0] => xxxxx
    [L_PAYMENTREQUEST_0_NUMBER0] => xxxxx
    [L_PAYMENTREQUEST_0_AMT0] => 49
    [L_PAYMENTREQUEST_0_QTY0] => 1
    [METHOD] => SetExpressCheckout
    [VERSION] => 74.0
    [USER] => xxxxx
    [PWD] => xxxxx
    [SIGNATURE] => xxxxx
)

Curl_getinfo о запросе:

Array
(
    [url] => https://api-3t.sandbox.paypal.com/nvp
    [content_type] => text/plain; charset=utf-8
    [http_code] => 200
    [header_size] => 255
    [request_size] => 798
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 1.139
    [namelookup_time] => 0
    [connect_time] => 0.187
    [pretransfer_time] => 0.64
    [size_upload] => 660
    [size_download] => 136
    [speed_download] => 119
    [speed_upload] => 579
    [download_content_length] => 136
    [upload_content_length] => 660
    [starttransfer_time] => 1.139
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [primary_ip] => 23.4.59.42
    [primary_port] => 443
    [local_ip] => 192.168.0.102
    [local_port] => 63049
    [redirect_url] => 
)

Что я получаю от PayPal через curl:

Array
(
    [TOKEN] => EC-59031295261754641
    [TIMESTAMP] => 2014-01-20T10:12:27Z
    [CORRELATIONID] => 84d3d68cbd574
    [ACK] => Success
    [VERSION] => 74.0
    [BUILD] => 9285531
)

Затем я перенаправляю пользователя на соответствующий URL для этого токена (с токеном urlencode d), в этом случае:

https://www.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=EC-59031295261754641

Мне все это кажется прекрасным, но когда я перенаправляюсь на этот URL, он всегда показывает, что "транзакция истекло".

Может ли кто-нибудь указать, что я делаю неправильно?

4b9b3361

Ответ 1

Проблема заключалась в том, что он был в режиме Sandbox, и перенаправление должно быть сделано в

https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=

Вместо URL, показанного выше.

Это показано на странице 36 Руководство по интеграции Express Checkout.

Ответ 2

Я также решил проблему с удалением cookie файлов cookie. Проблема заключалась в изменении клиентского клиента clientId/secret в том же браузере.

Ответ 3

Я решил, что удаление cookie файлов cookie