PayPal PDT не возвращает значение tx в строке запроса - PullRequest
11 голосов
/ 21 декабря 2011

Я просмотрел (не очень полезные) документы 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="dallas_bus@dallasjclark.com">
    <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>

Заранее спасибо!

Ответы [ 8 ]

16 голосов
/ 29 декабря 2011

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

  1. Автовозврат установлен на ON
  2. Вы указали Обратный URL
  3. Передача платежных данных установлен на ON

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

5 голосов
/ 05 ноября 2012

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

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

Выполните эту процедуру для сброса настроек ....

  • Нажмите на профиль.
  • Нажмите «Мои настройки продаж»>
  • Нажмите «Настройки сайта»

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

  • Отключить автоматический возврат и передачу данных платежа.
  • Сохраните ваши изменения.
  • Доступ к настройкам веб-сайта снова.
  • Снова включить автоматический возврат и передачу данных платежа.
  • Сохраните ваши изменения.
5 голосов
/ 12 августа 2012

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

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

2 голосов
/ 03 января 2012

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

1 голос
/ 25 сентября 2013

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

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

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

2 означает публикацию с переменными

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

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

1 голос
/ 11 июля 2013

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

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

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

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

0 голосов
/ 25 октября 2018

Я также открыл для этого билет технической службы PayPal Merchant.

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

Симптомы: В «Песочнице» процесс PayPal завершится неудачно после входа в систему, но прежде, чем он сможет показать вам экран для выбора источника финансирования (то есть, какую учетную запись или кредитную карту использовать).Вы получите сообщение «Извините, все не работает».

Создайте кнопку заново, и, надеюсь, на этот раз цены будут сохранены.

0 голосов
/ 25 января 2016

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

...