Так что я использую 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);
Есть идеи?Сводит меня с ума.Он не останавливает платеж, а просто означает, что на сайте изменение статуса на платное должно быть сделано вручную