PayPal Parallel Payment IPN

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?

+1
source share
1 answer

Try $_POST['transaction']['0']['receiver'] and so on. Also, enable the E_ALL error messages E_ALL that you can see notifications of such things. If this was turned on and you checked your error log, you would see an undefined notification. In addition, if you are ever desperate to debug $_POST/$_GET/whatever , and you do not control this request, you can always write it to a file and examine it.

0
source

Source: https://habr.com/ru/post/907124/


All Articles