Paypal IPN возвращает подтвержденные в песочнице, но недействительные в прямом эфире - PullRequest
1 голос
/ 03 июня 2011

Так что я использую PayPal, и в режиме песочницы все работает отлично.Тем не менее, когда я перехожу к живому PayPal с реальными деньгами, IPN возвращает INVALID.

Я использую здесь версию скрипта (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])(%0A)(.*)/i','${1}%0D%0A${3}',$value);

ИЛИ

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

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

1 Ответ

0 голосов
/ 17 сентября 2014

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

$value = preg_replace('/%0D%0A|%0A/i','%0D%0A',$value);

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

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

...