Проблема PHP MySQL IPN - PullRequest
1 голос
/ 06 марта 2011

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

Это часть сценария IPN для обновления моих баз данных:

$p->add_field('cmd','_xclick-subscriptions');
$p->add_field('no_note','1');
$p->add_field('currency_code','USD');
$p->add_field('a3', "0.01");
$p->add_field('t3', "M");
$p->add_field('p3', "1");
$p->add_field('src', "1");
$p->add_field('sra', "1");
$p->add_field('business', "myemail@gmail.com");
$p->add_field('return', "http://myurl.com/");
$p->add_field('cancel_return', $this_script.'?action=cancel');
$p->add_field('notify_url', $this_script.'?action=ipn');
$p->add_field('item_name', "My Package Thing ($_POST[hash])");
$p->add_field('custom', "$_POST[hash]");

$p->submit_paypal_post();
      //$p->dump_fields();
      break;
    case 'success':
      echo "<html><head><title>Success</title></head><body><h3>Thank you for your order.</h3>";
      echo "</body></html>";
      break;
    case 'cancel':
      echo "<html><head><title>Canceled</title></head><body><h3>The order was canceled.</h3>";
      echo "</body></html>";
      break;
    case 'ipn':
if ($p->validate_ipn()) {
include("config.php");
$select = mysql_query("UPDATE `mydb_accounts`.`accounts` SET `active` = '1' WHERE `accounts`.`hash` = '$_POST[hash]';") or die(mysql_error());
mysql_query($select);
} break; }

$_POST[hash] работает нормально, потому что, когда появляется «Страница оплаты PayPal», отображается описание товара.

Есть мысли?Спасибо!

Ответы [ 2 ]

0 голосов
/ 06 марта 2011

Создав обработчик PayPal IPN три раза (для разных) систем, я могу подтвердить, что большинство проблем вызвано простыми синтаксическими ошибками PHP или ошибками, которые вы не видите из-за потери вывода скрипта.

Нет никакого смысла помещать какие-либо выходные данные в обработчик IPN - PayPal - единственное, что их видит и отбрасывает.

Мой код состоит из двух частей.части, обратный вызов платежа и базовая логическая сущность .Всегда пытайтесь сначала открыть обработчик обратного вызова из браузера, чтобы перехватить любые синтаксические или логические ошибки.Затем замените обратный вызов POST жестко закодированным тестом и посмотрите, работает ли он.Затем выполните тестирование в песочнице PayPal.

Я использую свою систему уведомлений Emesary для отправки сообщений в бэкэнд - однако вы можете добавить файл журнала и т. Д.

0 голосов
/ 06 марта 2011

Убедитесь, что вы mysql_connect в вашем файле конфигурации (не только установить информацию базы данных).

...