$value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } $postdata = $req; // Assign payment notification values 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 = getValue($_POST['txn_id']); $receiver_email = getValue($_POST['receiver_email']); $payer_email = getValue($_POST['payer_email']); $custom = (int)$_POST['custom']; $connectedIp = $_SERVER['REMOTE_ADDR']; mysql_insert("INSERT INTO `znote_paypal` VALUES ('', '$txn_id', 'Connection from IP: $connectedIp', '0', '0', '0')"); $status = VerifyPaypalIPN(); if ($status) { // Check that the payment_status is Completed if ($payment_status == 'Completed') { // Check that txn_id has not been previously processed $txn_id_check = mysql_select_single("SELECT `txn_id` FROM `znote_paypal` WHERE `txn_id`='$txn_id'"); if ($txn_id_check !== false) { // Check that receiver_email is your Primary PayPal email if ($receiver_email == $paypal['email']) { $status = true; $paidMoney = 0; $paidPoints = 0; foreach ($prices as $priceValue => $pointsValue) { if ($priceValue == $payment_amount) { $paidMoney = $priceValue; $paidPoints = $pointsValue; } } if ($paidMoney == 0) $status = false; // Wrong ammount of money if ($payment_currency != $paypal['currency']) $status = false; // Wrong currency // Verify that the user havent messed around with POST data if ($status) { // transaction log mysql_insert("INSERT INTO `znote_paypal` VALUES ('', '$txn_id', '$payer_email', '$custom', '".$paidMoney."', '".$paidPoints."')"); // Process payment $data = mysql_select_single("SELECT `points` AS `old_points` FROM `znote_accounts` WHERE `account_id`='$custom';"); // Give points to user $new_points = $data['old_points'] + $paidPoints; mysql_update("UPDATE `znote_accounts` SET `points`='$new_points' WHERE `account_id`='$custom'"); } } else { $pmail = $paypal['email']; mysql_insert("INSERT INTO `znote_paypal` VALUES ('', '$txn_id', 'ERROR: Wrong mail. Received: $receiver_email, configured: $pmail', '0', '0', '0')"); } } } } else { // Something is wrong mysql_insert("INSERT INTO `znote_paypal` VALUES ('', '$txn_id', 'ERROR: Invalid data. $postdata', '0', '0', '0')"); } ?>