PayPal IPN скрипт, не вставляет данные в базу данных - PullRequest
0 голосов
/ 15 октября 2011

Итак, я опишу небольшую проблему -1) Я получил скрипт IPN PayPal, с функциями, если он проверен, он вставляет данные в базу данных, в противном случае он отправляет мне электронное письмо.2) Я протестировал скрипт с PayPal Sandbox Test Tools, где мне просто нужно вставить ссылку, и он автоматически проверяет, работает ли он, и вставил ли данные, так что он работает.Но теперь проблема начинается -3) После этого я попытался протестировать его с помощью тестовых аккаунтов PayPal Sandbox.Я создал две тестовые учетные записи PayPal - Продавец и Покупатель.4) Настроил все для Продавца и создал кнопку (Техническая поддержка PayPal настроила все в порядке с кнопкой и ссылкой IPN).5) Поэтому я вставил кнопку в homeapge и попытался оплатить тестовыми аккаунтами.6) Зашли, заплатили и не вернулись на домашнюю страницу, но в базу данных не было внесено никаких данных, иначе на мою почту не было отправлено письмо.7) Я не зашел в аккаунт продавца PayPal History, и он показал, что я получил одну историю из сценария IPN, которая была успешно отправлена ​​и с 200 HTTP (это означает, что все было в порядке!).8) Деньги со счета моего покупателя были отправлены на счет продавца.Кажется, что все работало отлично, за исключением того, что PayPal не делал ничего, что было внутри сценария IPN, так что, может быть, вы могли бы помочь мне с идеями?Я попытался связаться со службой технической поддержки PayPal, и они подтвердили, что все должно быть в порядке!Надеюсь, вы можете помочь мне с этой проблемой!С наилучшими пожеланиями,Валтерсом

1 Ответ

0 голосов
/ 15 октября 2011

Здесь нет простого ответа, поэтому я помогу вам с некоторыми инструкциями, как конкретно отладить этот сценарий.

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

Если это не так, ...

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

Поскольку все работает нормально с симулятором IPN, может случиться так, чтотолько конкретный тип теста вызывает ошибку;Некоторое незначительное различие в том, как работает симулятор IPN и как настроена учетная запись покупателя, может привести к выполнению различных частей вашего кода ...

Посмотрите, есть ли в вашем файле error_log файлсервер в той же директории, что и ваш скрипт IPN.Если это так, откройте его вверх и прокрутите вниз до самых последних ошибок.Это просто журнал ошибок, которые выводятся на экран, когда ваш скрипт встречает ошибку;очевидно, вы работаете с IPN здесь, поэтому PayPal - это клиент, который «видит» ошибки, выводимые на экран (но их система IPN в любом случае не обращает на это внимания), так что это единственный способ увидеть это.вывод осуществляется через этот error_log или для написания некоторого кода отладки.

Если error_log недостаточно, и вам необходимо написать некоторый код отладки, вы должны добавить некоторый код в сценарий обратного вызова IPN, который будет записывать некоторые выходные данныев текстовый файл через определенные промежутки времени в сценарии.Таким образом, вы можете точно сказать, где происходит сбой скрипта (если он сбой).Если выясняется, что сценарий вообще не падает, напишите некоторый код для вывода SQL-запроса.

На самом деле, самый быстрый способ разобраться в этом, вероятно, был бы просто сделатьчто: написать некоторый отладочный код для вывода вашего SQL-запроса в файл.Результат даст вам большую подсказку о том, что происходит не так: происходит ли сбой в вашем скрипте или ветвится ли ваш код от того места, где выполняется этот запрос (не выводится файл), что-то не так с самим запросом (весьма вероятно, чтослучай), или ... ну, в общем, один из этих двух случаев.

Удачи!

...