Здесь нет простого ответа, поэтому я помогу вам с некоторыми инструкциями, как конкретно отладить этот сценарий.
Прежде всего, обратите внимание на различные статусы платежей.PayPal имеет статус «ожидающий», а также, я полагаю, некоторые «подтвержденные» или «подтвержденные» статусы (не могу вспомнить точную терминологию сейчас).Симулятор IPN и тестовый аккаунт покупателя могут генерировать два разных типа платежей, в результате чего получаются два разных статуса, поэтому сначала проверьте это.Если они не идентичны, найдите, что не так в вашем коде, который обрабатывает статус нерабочего платежа.
Если это не так, ...
Похоже, это не проблема, обязательно что-тоделать с PayPal и его IPN, но с вашим PHP-скриптом в какой-то момент выполнения.Другими словами, похоже, что ваш PHP-сценарий в какой-то момент либо сталкивается с ошибкой PHP, которая приводит к сбою сценария, либо с некоторой поведенческой ошибкой.
Поскольку все работает нормально с симулятором IPN, может случиться так, чтотолько конкретный тип теста вызывает ошибку;Некоторое незначительное различие в том, как работает симулятор IPN и как настроена учетная запись покупателя, может привести к выполнению различных частей вашего кода ...
Посмотрите, есть ли в вашем файле error_log файлсервер в той же директории, что и ваш скрипт IPN.Если это так, откройте его вверх и прокрутите вниз до самых последних ошибок.Это просто журнал ошибок, которые выводятся на экран, когда ваш скрипт встречает ошибку;очевидно, вы работаете с IPN здесь, поэтому PayPal - это клиент, который «видит» ошибки, выводимые на экран (но их система IPN в любом случае не обращает на это внимания), так что это единственный способ увидеть это.вывод осуществляется через этот error_log или для написания некоторого кода отладки.
Если error_log недостаточно, и вам необходимо написать некоторый код отладки, вы должны добавить некоторый код в сценарий обратного вызова IPN, который будет записывать некоторые выходные данныев текстовый файл через определенные промежутки времени в сценарии.Таким образом, вы можете точно сказать, где происходит сбой скрипта (если он сбой).Если выясняется, что сценарий вообще не падает, напишите некоторый код для вывода SQL-запроса.
На самом деле, самый быстрый способ разобраться в этом, вероятно, был бы просто сделатьчто: написать некоторый отладочный код для вывода вашего SQL-запроса в файл.Результат даст вам большую подсказку о том, что происходит не так: происходит ли сбой в вашем скрипте или ветвится ли ваш код от того места, где выполняется этот запрос (не выводится файл), что-то не так с самим запросом (весьма вероятно, чтослучай), или ... ну, в общем, один из этих двух случаев.
Удачи!