My client has digital products that need to be downloaded after a user clicks on a PayPal Buy Now button. If I set Payment Data Transfer up in her PayPal account, PayPal will return back to my site to a page that I specify in her PayPal account. It will return all the information about the customer, their payment and their product.
I had to go to the Client’s PayPal profile->website payment preferences and turn on Auto Return, then set the page where I want it to return with the information. Then I had to turn on Payment Data Transfer on the same page. It then gives me a Identity Token to use in my code.
The page I entered on that page should have my PDT script which looks something like this:
(Note: See this post for an explanation of testing with PayPal)
(Note2: I got most of this script from the PayPal Developer site.)
// global $testing; if ($testing) { $pp_hostname = "www.sandbox.paypal.com"; $auth_token = "ifju592873478cpAgqwxeqmgulIHf0tfrtPNhsoTR7h3VgEPciBP-fAyRCXZ4"; } else { $pp_hostname = "www.paypal.com"; $auth_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; } // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-synch'; $tx_token = $_GET['tx']; $req .= "&tx=$tx_token&at=$auth_token"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://$pp_hostname/cgi-bin/webscr"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $req); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: $pp_hostname")); $res = curl_exec($ch); curl_close($ch); if(!$res){ //HTTP ERROR echo 'HTTP ERROR';die; }else{ // parse the data $lines = explode("\n", $res); $keyarray = array(); if (strcmp ($lines[0], "SUCCESS") == 0) { for ($i=1; $i<count($lines);$i++){ list($key,$val) = explode("=", $lines[$i]); $keyarray[urldecode($key)] = urldecode($val); } // check the payment_status is Completed // Add the customer to the mailing list // show downloads // print_r($keyarray) // to see other variables passed from PayPal $firstname = $keyarray['first_name']; $lastname = $keyarray['last_name']; $itemname = $keyarray['item_name']; $amount = $keyarray['payment_gross']; echo ("<h1><span style="color: #171989;">Thank You for Your Purchase</span></h1>"); echo ("<b>Payment Details</b><br>\n"); echo ("<li>Name: $firstname $lastname</li>\n"); echo ("<li>Item: $itemname</li>\n"); echo ("<li>Amount: $amount</li>\n"); else if (strcmp ($lines[0], "FAIL") == 0) { // log for manual investigation } } //