Hi I have the following script which was working, but now, it is not adding the payments to the database, while paypal says success the script just does not add the payment to the database.
I was wondering if there is an error, that you would notice. I have changed to a VPN server, and made sure that 443 port is open which it is, but still not working...
<?
require('./config/db.php');
// 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";
}
// 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);
// 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'];
$invoice = $_POST['invoice'];
if (!$fp) {
print "ERROR";
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
mysql_query("INSERT INTO paypal (pid, amount, status, currency, payeremail) VALUES ('$invoice','$payment_amount','$payment_status','$payment_currency','$payer_email')");
// 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
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
?>

Hello Russell, What I would
Hello Russell,
What I would do is setup a test script that shows up any MySQL error that is now occuring; as if your script hasn't changed at all it may be something to do with the permissions etc. on the database.
Based on your code above, try something like this:
<?php
require('./config/db.php');
// assign posted variables to local variables
$payment_status = "TEST";
$payment_amount = "123.45";
$payment_currency = "USD";
$payer_email = "test@example.com";
$invoice = "1234";
mysql_query("INSERT INTO paypal (pid, amount, status, currency, payeremail) VALUES ('$invoice','$payment_amount','$payment_status','$payment_currency','$payer_email')");
print mysql_error();
?>
Cheers,
David.