2013-06-25 3 views
0

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

Когда я использую тренажер PayPals IPN отправить Simulation IPN я храню получения ответа Live-INVALID IPN

Теперь я думал, что это было связано с тем, что я посылаю его в качестве теста из песочницы, поэтому я попытался использовать URL-адрес песочницы, как вы можете видеть ниже, но если я это сделаю, я не получаю ответа вообще.

Может ли кто-нибудь сказать мне, где я ошибаюсь, пожалуйста?

<?php // PHP 4.1 

// 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"; 
} 

$email = ****; 
// 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); 
//$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']; 

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 
    mail($email, "Live-VERIFIED IPN", $res . "\n\n" . $req); 
} 
else if (strcmp ($res, "INVALID") == 0) { 
    // log for manual investigation 
    mail($email, "Live-INVALID IPN", $res . "\n\n" . $req); 
} 
} 
fclose ($fp); 
} 
?> 

ответ

0

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

Вы можете найти по ссылке ниже для тех, кто сталкивается с такой же вопрос:

https://developer.paypal.com/webapps/developer/docs/classic/ipn/ht_ipn/