drew7721 Posted May 12, 2009 Share Posted May 12, 2009 Hello!! I want my php to take info from Paypal and save it into my MyQSL database. I have this script from paypal : (it validates that the IPN (Instant Payment Notification) is ok and it should be able to save the info to MySql db) The script: <?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']; if (!$fp) { // HTTP ERROR } 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 } else if (strcmp ($res, "INVALID") == 0) { // log for manual investigation } } fclose ($fp); } ?> #Now I need to add something to this script that will make it connect to my mysql database and save the info from variables sent by paypal to my database. (item_name, item_number, payment_status... etc.) =============================== 2nd problem.. : ??? ??? Now There is also the checking of : // 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 this I see where it goes in the script.... but i don't know what to write... This is what it has to do... 1, // check the payment_status is Completed check that $payment_status= completed 2, // check that txn_id has not been previously processed check that the $txn_id is unique in the database (has not been saved before) 3. // check that receiver_email is your Primary PayPal email check that the $receiver_email = to my email (ex something@domain.com) Thx a million 4 your help!! you can contact me at drew7721@gmail.com for questions.. Thx Quote Link to comment Share on other sites More sharing options...
drew7721 Posted May 13, 2009 Author Share Posted May 13, 2009 Ok, I've tryed this code but still wont insert in my db, I connect to db in <?php require_once('../Connections/RestoA.php'); ?> .. the code for that is : Code for ../Connections/RestoA.php <?php # FileName="Connection_php_mysql.htm" # Type="MYSQL" # HTTP="true" $hostname_RestoA = "my host"; $database_RestoA = "my database"; $username_RestoA = "my username"; $password_RestoA = "my pass"; $RestoA = mysql_pconnect($hostname_RestoA, $username_RestoA, $password_RestoA) or trigger_error(mysql_error(),E_USER_ERROR); ?> This was auto done my dreamweaver So the connection is OK now this is my transactions page .php. script: <?php require_once('../Connections/RestoA.php'); ?> <?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']; if (!$fp) { // HTTP ERROR } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { mysql_query("INSERT INTO transaction VALUES('$item_name','$item_numbe','$payment_status','$payment_amount','$payment_currency','$txn_id','$receiver_email','$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); } ?> As you see I try to save the info from paypal to db : if (strcmp ($res, "VERIFIED") == 0) { mysql_query("INSERT INTO transaction VALUES('$item_name','$item_numbe','$payment_status','$payment_amount','$payment_currency','$txn_id','$receiver_email','$payer_email')"); What is my mistake?? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.