Salve a tutti sto smanettando un po con php per fare un applicazione che permette di donare soldi tramite paypal tutto ok riguardo al pagamento...ma IPN non ne vuole sapere...non riesco proprio a trovare il problema vi posto il listener...
codice:
<?php
// intercetta le variabili IPN inviate da PayPal
$req = 'cmd=_notify-validate';
// legge l'intero contenuto dell'array POST
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// intestazione, prepara le variabili PayPal per la validazione
$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";
// apre una connessione al socket PayPal
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
// verifica l'apertura della connessione al socket
if (!$fp)
{
// HTTP-ERROR
$to = "****";
$subject = "- SIMULAZIONE - Problema Transazione";
$message = "Si è verificato un problema nella seguente transazione:\r\n\r\n";
$message .= "Nome: " . $_POST['first_name'] . ' ' . $_POST['last_name'] . "\r\n";
$message .= "Email: " . $_POST['payer_email'] . "\r\n";
$message .= "ID Transazione: " . $_POST['txn_id'] . "\r\n";
$message .= "Oggetto: " . $_POST['transaction_subject'];
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= 'From: <noreply@donate.com> \r\n';
mail($to, $subject, $message, $headers);
exit();
}
else
{
// elaborazione delle informazioni
fputs ($fp, $header . $req);
while (!feof($fp))
{
$res = fgets ($fp, 1024);
// azioni in caso di risposta positiva da parte di PayPal
if (strcmp ($res, "VERIFIED") == 0)
{
// controllo sull'email del venditore
if(trim($receiver_email) === "donate_1356939740_biz@gmail.com")
{
$link = mysql_connect("localhost","*****","******");
mysql_select_db("*********",$link);
$query = mysql_query("SELECT donate_id FROM purchase_history WHERE txn_id='".$_POST['txn_id']."'");
$total = mysql_num_rows($query);
// controllo sull'identificatore della transazione
if ($total == 0)
{
// query per l'inserimento dei dati
$query = mysql_query("INSERT INTO purchase_history (txn_id, receiver_id, payment_status, mc_gross, payer_email, first_name, last_name, item_name) VALUES ('{$_POST['txn_id']}','{$_POST['receiver_id']}','{$_POST['payment_status']}','{$_POST['mc_gross']}','{$_POST['payer_email']}','{$_POST['first_name']}','{$_POST['last_name']}','{$_POST['item_name']})");
}
// Chiusura del database
mysql_close($link);
}
}
elseif (strcmp ($res, "INVALID") == 0)
{
// Se la procedura non è legittima invia un email all'amministratore
$to = "****";
$subject = "- SIMULAZIONE - Problema Transazione";
$message = "Si è verificato un problema nella seguente transazione:\r\n\r\n";
$message .= "Nome: " . $_POST['first_name'] . ' ' . $_POST['last_name'] . "\r\n";
$message .= "Email: " . $_POST['payer_email'] . "\r\n";
$message .= "ID Transazione: " . $_POST['txn_id']. "\r\n";
$message .= "Oggetto: " . $_POST['transaction_subject'];
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= 'From: <noreply@donate.com> \r\n';
mail($to, $subject, $message, $headers);
exit();
}
}
// chiusura della sorgente di dati
fclose($fp);
}
?>
In pratica dovrei registrare la transazione nel database nnt di particolare...non mi invia nemmeno un email bha illuminatemi xk sto impazzendo...