I'm stuck all day! I am trying to get information from PayPal IPN from concurrent payment.
I need two email addresses to which the money was sent, and the amount, as well as the status.
I look here:
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_APIPN
These are the lines in my code where I am trying to get the email and quantity:
$Email1 = $_POST['transaction[0].receiver']; $Email2 = $_POST['transaction[1].receiver'];
And quantity:
$Amount1 = $_POST['transaction[0].amount']; $Amount2 = $_POST['transaction[1].amount'];
I am using the IPN code from this page.
https://cms.paypal.com/cms_content/AU/en_AU/files/developer/IPN_PHP_41.txt
Any help? POST variables not showing?
Update: I found this:
<source lang="php"> <?php error_reporting(E_ALL ^ E_NOTICE); // By Gleb Esman, gleb@memberwing.com , http://www.memberwing.com/ // // Pull raw POST data. // We need to pull raw data and build our own copy of $_POST in order to // workaround of invalid POST keys that Adaptive IPN request uses. $raw_post_data = file_get_contents('php://input'); $raw_post_array = explode('&', $raw_post_data); $_YOUR_POST = array(); foreach ($raw_post_array as $keyval) { $keyval = explode('=', $keyval); if (count($keyval) == 2) $_YOUR_POST[$keyval[0]] = urldecode($keyval[1]); } if (count($_YOUR_POST) < 3) { $_YOUR_POST = $_POST; $original_post_used = TRUE; } else $original_post_used = FALSE; // Build final $_req postback request // Paypal IPN Sample // read the post from PayPal system and add 'cmd' if ($original_post_used) { $_req = 'cmd=_notify-validate'; foreach ($_YOUR_POST as $key => $value) { $value = urlencode(stripslashes($value)); $_req .= "&$key=$value"; } } else $_req = $raw_post_data . '&cmd=_notify-validate'; // $_req is ready for postback to Paypal here... $req = $_req; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // PHP 4.1 // 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); // throw all this junk into the local error log so we can see what happened! function log_arr($item, $key) { $p .= "$key = $item"; error_log(urldecode($p)); } array_walk_recursive($_YOUR_POST, 'log_arr'); error_log(urldecode($req)); // 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); } ?> </source>
which produces this in the log file:
[10-Dec-2011 07:13:50] transaction[0].id_for_sender_txn = xxxxx [10-Dec-2011 07:13:50] log_default_shipping_address_in_transaction = xxx [10-Dec-2011 07:13:50] transaction[0].receiver = xxxxx [10-Dec-2011 07:13:50] action_type = xxxx [10-Dec-2011 07:13:50] transaction[1].paymentType = xxx [10-Dec-2011 07:13:50] transaction[0].amount = xxxx [10-Dec-2011 07:13:50] charset = xxx
Can someone tell me how to get them in variables since this is what is printed in the log file?