Цепной платеж не может быть завершен

Я хотел бы думать, что я просто упускаю что-то очевидное здесь, но я не могу завершить цепочечный платеж (используя PHP SDK в песочнице). Я могу получить успешный ответ, и когда я перенаправляю пользователя в PayPal, детали транзакции отображаются нормально, но когда пользователь пытается завершить платеж, он получает страшную ошибку:

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

Что расстраивает, так это то, что я сбросил данные запроса, которые отправляются, и сравнил их с данными в примере, приведенном в документации, и подправил мой запрос до тех пор, пока они фактически не стали идентичными, и до сих пор не выпали кубики. Я также не вижу никаких данных ни в одном из аккаунтов, чтобы указать, что платеж был предпринят, ожидался или не прошел.

Это то, что отправляется:

requestEnvelope.errorLanguage=en_US
&clientDetails.ipAddress=127.0.0.1
&clientDetails.applicationId=APP-80W284485P519543T
&actionType=PAY
&cancelUrl=http%3A%2F%2Fdomain.com%2Fpaypal%2Fcancel
&currencyCode=USD
&feesPayer=EACHRECEIVER
&memo=Test+Payment
&receiverList.receiver(0).amount=3.25
&receiverList.receiver(0).email=merchant%40domain.com
&receiverList.receiver(0).primary=1
&receiverList.receiver(1).amount=1.5
&receiverList.receiver(1).email=seller%40domain.com
&senderEmail=buyer%40domain.com
&returnUrl=http%3A%2F%2Fdomain.com%2Fpaypal%2Freturn

И ответ выглядит хорошо для меня:

PayPal\Types\AP\PayResponse Object
(
    [responseEnvelope] => PayPal\Types\Common\ResponseEnvelope Object
        (
            [timestamp] => 2013-07-28T23:25:52.676-07:00
            [ack] => Success
            [correlationId] => bf1ba2c8a50d4
            [build] => 6941298
        )

    [payKey] => AP-XXXXXXXXXXXXXXXXC
    [paymentExecStatus] => CREATED
    [payErrorList] => 
    [paymentInfoList] => 
    [sender] => 
    [defaultFundingPlan] => 
    [warningDataList] => 
    [error] => 
)

Я также попытался установить тип действия на PAY_PRIMARY, так как я указываю основного получателя, и в любом случае это то, что я хочу.

ОБНОВЛЕНИЕ: видя, что я все еще не получил ответ на билет, который я открыл с PayPal относительно этого, и никто не прокомментировал этот вопрос, я провел дополнительное тестирование. Если я генерирую тот же запрос с помощью проводника API, транзакция завершается нормально. Но точно такой же запрос не проходит через API. Я проверил (скопировав и вставив сгенерированные заголовки и тело запроса), чтоединственные различия между запросом, сгенерированным API Explorer и кодом SDK, заключаются в следующем:

  • Заголовки, созданные проводником, имеют пробел между именем и значениями
  • API Explorer не включает идентификатор приложения
  • Мой вызов API включает идентификатор приложения в заголовке и теле запроса

Вызов API SDK по-прежнему не работает, если я удаляю ссылку на идентификатор приложения, которая была добавлена ​​в начале для решения этой проблемы.

Я не понимаю, почему платеж, сгенерированный SDK (который предоставляется PayPal) не завершается, но точный вызов работает нормально, когда проводник вызывает его. Любая помощь или совет будут оценены.

2 ответа

Решение

Таким образом, после почти месяца борьбы с этой проблемой с помощью технической поддержки PayPal (большую часть времени вообще не получая никаких ответов) и почти двух недель ожидания ответа об эскалации выясняется, что проблема связана с конфигурацией SDK.

Хотя в документации API и коде SDK идентификатор приложения упоминается как applicationId, очевидно, SDK требует, чтобы он вместо этого был введен в файл конфигурации как acct1.AppId. Я обнаружил это только после того, как наткнулся на эту вики-страницу о настройке SDK, которой не было даже 24 часа назад.

После того, как я обновил свой конфиг, я смог авторизовать платеж без ошибок.

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

Вот как была настроена моя цепочка платежей.

Основной счет получил 100%.

  • Ссылающий аккаунт получил 50% от этого.
  • Партнер 1 аккаунт получил 10%.
  • Партнер 2 аккаунт получил 10%.
  • Счет партнера 3 получил 10%.
  • Счет партнера 4 получил 10%.
  • 10% осталось на основном счете и оплачивает комиссию за транзакцию.

Это отлично работало в песочнице (с нормальными ценами), абсолютно идеально, но я получил эту ошибку в Live.

То, что происходило, было заключительным, предварительным объявлением, тестом Live, мы использовали транзакцию в размере 1,00 долл. США и отправляли $.50, $.10, $.10, $.10, $.10 и оставив $.10 оплатить $.33 плата. (На момент написания, PayPal обвинения 2.9% + $.30). Все ответы в Интернете не решили проблему в нашем случае, но это помогло. Изменение суммы транзакции до 5 долларов (для тестирования) работало нормально, потому что оставалось 0,5 доллара, чтобы заплатить 0,45 доллара (45 долларов за 5 долларов).

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