PayPal PDT не возвращает значение tx в строке запроса

Я прошел через (не очень полезные) документы PayPal и не могу найти легкий ответ на эту проблему. Когда пользователь возвращается из PayPal, URL-адрес не содержит строку запроса, и поэтому я не получаю значение "tx" (или любое другое значение).

Это пример того, что я отправляю в PayPal:

<form accept-charset="utf-8" action="https://www.sandbox.paypal.com/au/cgi-bin/webscr" id="paypal-form" method="post">
    <input type="hidden" name="business" value="[email protected]">
    <input type="hidden" name="cancel_return" value="http://localhost/checkout">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="charset" value="utf-8">
    <input type="hidden" name="currency_code" value="AUD">
    <input type="hidden" name="custom" value="155">
    <input type="hidden" name="lc" value="AU">
    <input type="hidden" name="notify_url" value="http://localhost/paypal-ipn">
    <input type="hidden" name="return" value="http://localhost/checkout">           
    <input type="hidden" name="item_name" value="ABC Company - Order #155">
    <input type="hidden" name="item_number" value="155">
    <input type="hidden" name="amount" value="8.95">
    <input type="hidden" name="discount_amount" value="0.00">
    <input type="hidden" name="shipping" value="25.00">
    <input type="image" src="https://www.paypal.com/en_AU/i/btn/btn_buynowCC_LG.gif" name="submit" alt="Buy Now">
</form>

Спасибо заранее!

Ответ 1

Вы должны проверить настройки https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_profile-website-payments и убедиться, что

  • Автоматическое возвращение установлено в положение ВКЛ
  • Вы указали URL-адрес возврата
  • Перевод платежных данных установлен в положение ВКЛ

Еще одна менее очевидная вещь, которую я должен был изучить с помощью экспериментов: ваша форма не должна содержать значение "return", в противном случае это переопределит URL-адрес Return в ваших настройках и не позволит Auto Return работать, и вы завершите без необходимого параметра tx. Это относительно недавняя разработка (ошибка?) В Paypal, поскольку она работала.

Ответ 2

Мы фактически зарегистрировали билет с Техническими службами PayPal Merchant, чтобы разобраться в этом. Мы обнаружили, что со временем некоторые торговые аккаунты PayPal, похоже, забудут свои настройки AutoReturn/PDT.

Несмотря на то, что вы можете войти в настройки веб-сайта, и AutoReturn и PDT были включены; учетная запись будет вести себя так, как будто они не включены.

Следуйте этой процедуре до reset настроек....

  • Нажмите Профиль.
  • Нажмите "Мои настройки для продажи" >
  • Нажмите "Настройки веб-сайта"

(*) Прямая ссылка на этот раздел, если вы не можете найти ее → https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-website-payments

  • Отключить автоматический возврат и передачу данных платежа.
  • Сохраните изменения.
  • Доступ к настройкам веб-сайта еще раз.
  • Включить автоматическую отправку и возврат платежных данных.
  • Сохраните изменения.

Ответ 3

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

Ответ 4

Я только что боролся с этим в течение некоторого времени, и еще одна вещь, которая, по-видимому, не приводит к возврату значения tx, - это если у вас есть бесплатная пробная версия.

Итак, если стоимость вашего сервиса бесплатна в течение первых 20 дней, а затем 4.99, вы не получите значение tx для первого бесплатного платежа. Если вы берете одну копейку (или независимо от вашей соответствующей валюты) за начальный "свободный" период, вы получите возвращаемое значение tx.

Ответ 5

Несколько других причин, по которым вы не можете получить параметр tx:

  • Для работы PDT вы должны подтвердить адрес электронной почты, используемый в качестве значения бизнеса в коде кнопки. Если этот адрес электронной почты не подтвержден, PDT не будет работать. Если ваш адрес электронной почты не подтвержден, вы не увидите строку запроса PDT, добавленную к вашему URL-адресу возврата.

  • Когда вы включаете PDT, URL-адрес, который вы используете как URL-адрес автоматического возврата по умолчанию, должен быть допустимым именем хоста или IP-адресом или пользователь не будет автоматически возвращен обратно на этот URL-адрес. Убедитесь, что вы используете действительный URL в качестве URL-адреса того, куда вы хотите, чтобы пользователь вернулся или вы не увидите ожидаемого результата.

От: https://ppmts.custhelp.com/app/answers/detail/a_id/469

Ответ 6

Я нашел метод, который работал у меня - попробуйте вставить это поле в код сгенерированной формы:

<input type='hidden' name='rm' value='2'>

rm означает метод возврата;

2 означает сообщение с переменными

Чем после того, как пользователь купит и вернет URL-адрес вашего сайта, тогда этот URL-адрес также получит параметры POST.

p.s. если вы используете php, попробуйте вставить var_dump($_POST); в свой URL-адрес возврата (script), затем сделайте пробную покупку, и когда вы вернетесь на свой сайт, вы увидите, какие переменные получены на вашем URL-адресе.

Ответ 7

У меня была аналогичная проблема - при работе с локальным сервером, Я использовал вместо переменной 'tx', я получил переменную 'auth'. Поиграв с ним какое-то время, выяснилось, что (по какой-то проводной причине), если я изменю свой витральный хост и файл хоста, в реальный домен, я получаю переменную "tx", где, как и в моей локальной среде, я получаю переменная 'auth'. Это исправило это для меня. Надеюсь, это поможет кому угодно.