2013-07-29 3 views
1

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

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

Что вызывает разочарование в том, что я сбросил данные запроса, которые отправляются, и сравнил их с данными в the example given in the documentation и изменил мой запрос, пока они не были фактически одинаковыми, и до сих пор не кубиками. Я также не вижу ничего вообще ни на одной из учетных записей, чтобы указать, что платеж был предпринят, ожидающий или неудавшийся.

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

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), не завершен, однако точный вызов работает нормально, когда его вызывает звонок. Любая помощь или совет будут оценены.

ответ

1

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

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

Как только я обновил свою конфигурацию, я смог разрешить платеж без ошибок.

1

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

Вот как мой скошенный платеж был установлен.

Основная учетная запись получен 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,50, чтобы заплатить взнос в размере 0,45 доллара США (плата в размере 0,45 доллара США за 5 долларов США).

Смежные вопросы