Hello,
Depuis quelques jours je me suis attaqué à l'IPN de paypal. J'ai trouvé un code source sur la documentation de paypal que j'ai remanié un peu afin de pouvoir le debug.
Lorsque j'envoi ma réponse à Paypal, je n'ai aucun soucis. Tous fonctionne et je reçois bien le fameux "INVALID" à la fin.
Je suis donc passé sur sandbox.paypal afin de pouvoir coder et vérifier mon IPN. Mais c'est là que le soucis arrive. Impossible de trouver l'adresse qui fonctionne. A chaque fois je me retrouve avec mon "$fp" vide. Qqn aurait le bon lien ?
Mon code :
<?php
// 1 : on ouvre le fichier
$monfichier = fopen('ipn.log', 'r+');
ftruncate($monfichier,0);
$r=rand(0,255);// On lit la première ligne (nombre de pages vues) // On augmente de 1 ce nombre de pages vues
fputs($monfichier,$r);
fputs($monfichier,"\n");
//////////////////////////////////////////////////////////
header('HTTP/1.1 200 OK');
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
fputs($monfichier,'$_POST :');
fputs($monfichier,"\n\r");
fputs($monfichier, print_r($_POST,true));
fputs($monfichier,"\n\r\n\r");
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen('tls://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
fputs($monfichier,'$header :');
fputs($monfichier,"\n\r");
fputs($monfichier, $header);
fputs($monfichier,"\n\r\n\r");
fputs($monfichier,'$req :');
fputs($monfichier,"\n\r");
fputs($monfichier, $req);
fputs($monfichier,"\n\r\n\r");
fputs($fp, $header . $req);
fputs($monfichier,'$fp :');
fputs($monfichier,"\n\r");
fputs($monfichier,print_r($fp,true));
fputs($monfichier,"\n\r\n\r");
fputs($monfichier,'$retour fp :');
fputs($monfichier,"\n\r");
if(!$fp) {
fputs($monfichier, 'erreur fp');
}
else {
while (!feof($fp)) { // While not EOF
$res = fgets($fp, 1024);
fputs($monfichier, $res);// Get the acknowledgement response
}
}
fclose($fp); // Close the file
fclose($monfichier);
?>
ce que me donne mon fichier log :
25
$_POST :
Array
(
[residence_country] => US
[invoice] => abc1234
[address_city] => San Jose
[first_name] => John
[payer_id] => TESTBUYERID01
[mc_fee] => 0.44
[txn_id] => 1092306762
[receiver_email] => seller@paypalsandbox.com
[custom] => xyz123
[payment_date] => 01:04:28 26 May 2016 PDT
[address_country_code] => US
[address_zip] => 95131
[item_name1] => something
[mc_handling] => 2.06
[mc_handling1] => 1.67
[tax] => 2.02
[address_name] => John Smith
[last_name] => Smith
[receiver_id] => seller@paypalsandbox.com
[verify_sign] => AkZCchtFX0ns.MGLDGYlxePdviNdA9FygLKHjSKq62WdRhFZfws-sDkC
[address_country] => United States
[payment_status] => Completed
[address_status] => confirmed
[business] => seller@paypalsandbox.com
[payer_email] => buyer@paypalsandbox.com
[notify_version] => 2.4
[txn_type] => cart
[test_ipn] => 1
[payer_status] => verified
[mc_currency] => USD
[mc_gross] => 15.34
[mc_shipping] => 3.02
[mc_shipping1] => 1.02
[item_number1] => AK-1234
[address_state] => CA
[mc_gross1] => 12.34
[payment_type] => instant
[address_street] => 123, any street
)
$header :
POST /cgi-bin/webscr HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 895
$req :
cmd=_notify-validate&residence_country=US&invoice=abc1234&address_city=San+Jose&first_name=John&payer_id=TESTBUYERID01&mc_fee=0.44&txn_id=1092306762&receiver_email=seller%40paypalsandbox.com&custom=xyz123&payment_date=01%3A04%3A28+26+May+2016+PDT&addres
s_country_code=US&address_zip=95131&item_name1=something&mc_handling=2.06&mc_handling1=1.67&tax=2.02&address_name=John+Smith&last_name=Smith&receiver_id=seller%40paypalsandbox.com&verify_sign=AkZCchtFX0ns.MGLDGYlxePdviNdA9FygLKHjSKq62WdRhFZfws-sDkC&addre
ss_country=United+States&payment_status=Completed&address_status=confirmed&business=seller%40paypalsandbox.com&payer_email=buyer%40paypalsandbox.com¬ify_version=2.4&txn_type=cart&test_ipn=1&payer_status=verified&mc_currency=USD&mc_gross=15.34&mc_shipp
ing=3.02&mc_shipping1=1.02&item_number1=AK-1234&address_state=CA&mc_gross1=12.34&payment_type=instant&address_street=123%2C+any+street
$fp :
$retour fp :
erreur fp