Цепной платеж не может быть завершен
Я хотел бы думать, что я просто упускаю что-то очевидное здесь, но я не могу завершить цепочечный платеж (используя 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
¤cyCode=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 долларов).