By Shamanet on
Hi, I have a little problem!!! I can't get the IPN information send to my site, I try a lots of things and nothing, maybe is something related with drupal, a mistake in my code, I am forgetting about something but I don't know what...
Help please!!! Here my code.
function paypal_succes_page() {
$paypal_message = $_GET['merchant_return_link'];
global $user;
//Solo los usuarios auntentificados que provengan de PayPal pueden ver esta pagina.
if ( $user->uid && $paypal_message == TRUE ) {
$output = 'YEAH!!!' . $user->name;
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$req .= "&$key=" . urlencode(stripslashes($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"];
if ($_POST['payment_status'] === NULL) $output .= 'No hay nada...';
if (!$fp) {
$output .= 'Incorrect';
} 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
$output .= 'OK!!!';
} else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
$output .= 'UPS!!!' . $payment_currency;
}
}
}
} else {
//Restringimos el acceso al resto de usuarios.
drupal_access_denied();
}
return $output;
}