IP-адрес Paypal возвращается проверенным в изолированной среде, но недействительным в режиме реального времени

#paypal #sandbox #paypal-ipn

#paypal #изолированная среда #paypal-ipn

Вопрос:

Итак, я использую PayPal, и в режиме песочницы все работает нормально. Тем не менее, когда я перехожу на live paypal с реальными деньгами, IPN возвращается НЕДЕЙСТВИТЕЛЬНЫМ.

Я использую версию скрипта здесь (https://cms.paypal.com/cms_content/US/en_US/files/developer/IPN_PHP_41.txt ) изменен в соответствии с моими потребностями, отличаются только биты взаимодействия с БД и т. Д

Я обнаружил эту проблему здесь (http://www.hebtech.co.uk/blog/paypal-ipn-invalid-on-live-server-but-valid-on-test-server-fixed / ), который, похоже, является проблемой, с которой я сталкиваюсь, и в основном говорит, что это связано с возвратом каретки в необязательной второй строке адреса (который на тестовых учетных записях в песочнице не заполняется). Но решение в основном сообщении и другое в комментариях не работают, как показано ниже

 $value = preg_replace('/(.*[^%^0^D])(
)(.*)/i','${1}
${3}',$value);
  

или

 $value = preg_replace('/(.*?)(
|
)(.*)/i','${1}
${3}',$value);
  

Есть идеи? Сводит меня с ума. Это не останавливает платеж, а просто означает, что на сайте изменение статуса на оплаченный должно быть выполнено вручную

Комментарии:

1. проверьте свою кодировку и ssl-соединение. Если вы можете опубликовать свой скрипт, будет лучше 🙂

Ответ №1:

Вы можете попробовать этот:

 $value = preg_replace('/
|
/i','
',$value);
  

У меня также проблема с символом ; в пользовательском поле. Просмотрите все поля, которые вы отправляете на PayPall. Также отметьте во всех полях любой символ, который не является A-Z или 0-9.

Последнее, что вы можете попробовать, это установить кодировку в настройках языковой кодировки:https://www.paypal.com/cgi-bin/webscr?cmd=_profile-language-encoding