У меня самое сложное время, чтобы получить идентификатор подписки PayPal IPN - PullRequest
2 голосов
/ 26 октября 2011

У меня самые трудные времена, когда я пытаюсь получить идентификатор подписки PayPal IPN. Это моя страница IPN.

<?php
  // read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}


// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);




if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment
  if("susbcr_signup" == $_POST['txn_type']){

      $_id = $_POST['subscr_id'];



    $websites= "websites";
    $database = "k29803_1";
   mysql_connect("localhost", $username, $password) or die(mysql_error());
   mysql_select_db($database);

  $query = "SELECT * FROM users WHERE username= 'drahoslava' AND password = 'drah0slava'";
  $results = mysql_query($query)or die(mysql_error());
    if(mysql_num_rows($results)==1){
        $add_credits = "UPDATE users SET hash = '$_id'
        WHERE username= 'drahoslava' AND password = 'drah0slava'";
        mysql_query($add_credits) or die(mysql_error());
      echo 'done';


      }

}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
  }
  ?>

Это моя форма

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="6ZZUDQCUUXGMS">
  <input type="hidden" name="item_name" value="Baseball Hat Monthly">
  <input type="hidden" name="item_number" value="123">
<input type="hidden" name="notify_url" value="http://www.germcode.kodingen.com/ipn.php" />

<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Таблица Mysql не обновляется .. В чем может быть проблема. * У меня есть автоматический возврат на

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Попробуйте отправить по электронной почте данные ipn, которые вы получаете от PayPal, и посмотрите, сможете ли вы получить данные.Если вы можете получить данные, значит проблема в вашем запросе.

1 голос
/ 26 октября 2011

Извините, на самом деле это не ответ на один вопрос, но я не смог правильно добавить свое предложение в комментарий

Попробуйте настроить дополнительную таблицу для целей тестирования, которая будет получать необработанный дамп ipnинформация для каждой транзакции.Затем вы можете посмотреть на то, что было получено, чтобы определить, почему оно не вставляется в вашу таблицу.

Для хранения всех необработанных данных вы можете сделать так:

$IpnSerialized = serialize($_POST);
$RawInsert = "INSERT INTO `IpnRaw` (`IpnDump`) VALUES ('{$IpnSerialized}')";

Кроме того, не добавляйте эхо или распечатки в сценарий обработчика IPN.Никто не увидит его в любом случае.

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

...