Paypal PDT and IPN , how does it work?
- by slow diver
PDT
Payment Data Transfer is getting the transaction data of the purchase that was made on paypal site and you want to fetch that on your own site and display to the user. Also you may want to store it in your database for archive and tracking purposes. But I cannot exactly follow the documentation here
What I am not getting is
Once you have activated PDT, every time a buyer makes a website
payment and is redirected to your return URL, a transaction token will
be passed along as a "GET" variable to this return URL. In order to
properly use PDT and display transaction details to your customer, you
should fetch the transaction token, variable name "tx", and retreive
transaction details from PayPal by constructing an HTTP POST to
PayPal.
Your POST should be sent to https://www.paypal.com/cgi-bin/webscr. You
must post the transaction token using the variable "tx" and the value
of the transaction token previously received (e.g.
"tx=transaction_token"), and the special identity token using the
variable at and the value of your PDT identity token (e.g.
"at=identity_token"). You will also need to append a variable named
"cmd" with the value "_notify-synch", for example "cmd=_notify-synch",
to the POST string.
IPN
I have setup Instant Payment Notification through setting according to this documentation. This is basically logging into your paypal account and enable IPN while specifying a url where the notification will be sent. This is used to complete an order so that the product can be shipped. What I did is setup a PHP page. I have created a table and whenever that page is called (or hit), it registers an entry in the table so I know a notification came from Paypal. But it does not work either.
What am I really doing wrong? The first thing I want to trouble shoot though is when the buyer pays the amount, he is automatically redirected to my site. I have enabled this but automatic redirection just does not work. Instead he is shown the url as an option after payment confirmation is shown.
Can someone guide my how the PDT process goes? Where do I make the request for PDT, is it along the very first request (Buy Now button) or it is sent later?
Addition
I found some good sampling code of how everything should work but it still does not work. I use this code http://officetrio.com/modules/free-php-paypal-ipn-script.php for IPN. I am using this for PDT. This one uses SSL, I changed SSL to regular HTTP (copied paypal version), still does not work. http://ykyuen.wordpress.com/2010/02/17/paypal-payment-data-transfer-sample-code/