2013-05-01 7 views
0

Так почему-то этот сценарий не обновляет мою базу данных MySQL тем, что я говорю в «if (strcmp ($ res,« VERIFIED ») == 0) { "блок. Однако file_put_contents ('log.txt', 'verif'); то есть в этом блоке, работать просто отлично.PayPal IPN не обновляет базу данных

<?php 
    error_reporting(E_ALL); 
    ini_set('display_errors',1); 

    if($_POST) { 
     $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) { 
      file_put_contents('log.txt', 'httperrrrr'); 
      die(); 
     } else { 
      file_put_contents('log.txt', 'die here'); 
      fputs ($fp, $header . $req); 
      while (!feof($fp)) { 
       $res = fgets ($fp, 1024); 
       if (stripos($res, "VERIFIED") !== false) 
        if ($_POST['payment_status'] = "Completed") { 
         $con = mysqli_connect("****","****","****","****"); 
         // Check connection 
         if (mysqli_connect_errno()) { 
          echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
         } 

         $username = $_POST['custom']; 
         $date = date('Y-m-d'); 

         mysqli_query($con, "UPDATE users SET access='user', invoice_paid='$date' WHERE username='$username'"); 
         mysqli_close($con); 
         file_put_contents('log.txt', 'verified'); 
        } 
       } else if (stripos($res, "INVALID") !== false) 
        file_put_contents('log.txt', $_POST['payment_status']); 
       } 
      } 
     } 
    } 
?> 

ответ

0

Возможно, это не вызвало вашу проблему, но есть небольшая ошибка, в которой проверяется статус платежа. Вы используете '=' вместо '==':

if ($_POST['payment_status'] = "Completed") { 
+0

не видел это. Я меняю его, но это все еще не делает обновление БД :( –

Смежные вопросы