2013-08-23 4 views
-1

Так что я в настоящее время пытаюсь создать небольшой интернет-магазин и использую PayPal IPN + Sandbox. В настоящее время мой IPN-сценарий Paypal, похоже, не работает. Платеж проходит (деньги переносятся), но ничего в моем сценарии paypal_ipn не выполняется (записывается в текстовый файл и добавляет строку в базу данных).Paypal IPN не используется

вот мой текущий файл PayPal IPN:

<?php 
include("../functions.php"); 
include("../config.php"); 
// PHP 4.1 

// read the post from PayPal system and add 'cmd' 
$req = 'cmd=_notify-validate'; 
$header = ""; 

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.sandbox.paypal.com', 443, $errno, $errstr, 30); 

// assign posted variables to local variables 
$item_name = $_POST['item_name']; 
$item_number = $_POST['item_number']; 
$payment_status = $_POST['payment_status']; 
$payment_amount = $_POST['mc_gross']; 
$payment_currency = $_POST['mc_currency']; 
$txn_id = $_POST['txn_id']; 
$receiver_email = $_POST['receiver_email']; 
$payer_email = $_POST['payer_email']; 
$address = $_POST['custom_ip']; 

    if (!$fp) { 
     // HTTP ERROR 
     log("[HTTP_ERROR]" . PHP_EOL . var_dump($_POST) . PHP_EOL . "[/HTTP_ERROR]", "payment/success.txt"); 
    } 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 
       log("[PAYMENT]" . PHP_EOL . var_dump($_POST) . PHP_EOL . "[/PAYMENT]", "payment/success.txt"); 

       mysql_query("INSERT INTO `purchases` (*) VALUES('$item_name', '$item_number', '$payment_amount', '$address', '$payer_email')"); 

      } 
      else if (strcmp ($res, "INVALID") == 0) { 
       // log for manual investigation 
       log("[FAILED PAYMENT]" . PHP_EOL . var_dump($_POST) . PHP_EOL . "[/FAILED PAYMENT]", "payment/errors.txt"); 
      } 
     } 
     fclose ($fp); 
    } 
?> 

Вот моя форма:

<form name="_xclick" action="https://www.sandbox.paypal.com/cgi-bin/webscr" 
     method="post"> 
     <input type="hidden" name="cmd" value="_xclick"> 
     <input type="hidden" name="business" value="[email protected]"> 
     <input type="hidden" name="currency_code" value="USD"> 
     <input type="hidden" name="item_name" value="<?php print($product['title']); ?>"> 
     <input type="hidden" name="amount" value="<?php print($product['price']); ?>"> 
     <input type="hidden" name="return" value="http://website.com/shop/payment/?success"> 
     <input type="hidden" name="notify_url" value="http://website.com/shop/payment/paypal_ipn.php"> 
     <input type="hidden" name="custom_ip" value="<?php print($_SERVER['REMOTE_ADDR']); ?>"/> 
     <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_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> 

Я не вижу ничего плохого в этом, но я новичок в этом так ничего мог be ..

Спасибо за любую помощь.

ответ

0

Оказывается, это потому, что я имел ошибки в своем коде:

моя функция объявлено «войти» была уже используемая система таким образом функцию параметров я разбор была вызывающей ошибку. Я изменил свое имя функции, и все работает отлично :)

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