Process PayPal Payments Automatically

Use Instant Payment Notification to fulfill orders without human intervention.

When a bidder pays for an auction with PayPal or completes an order from your online store (see [Hack #79]), PayPal notifies you with a single email. Since the last thing any busy seller wants to do is deal with a bunch of emails, PayPal offers the free Instant Payment Notification (IPN) feature.

Setting Up IPN

The premise is pretty simple: as soon as a payment is received, PayPal contacts your server and submits all the details of the transaction to your script. Your script then processes and stores the data in whatever way you see fit.

To start using IPN, all you need to do is enable the feature and specify the URL of your script. Log into PayPal and go to My Account → Profile → Instant Payment Notification Preferences. Click Edit to change the current settings.

The Script

The following Perl script[15] does everything required to accept IPN notifications; all you need to do is modify the $workdir variable to reflect a valid path on your server.

Tip

This script requires the LWP::UserAgent Perl module by Alan E. Derhaag, available at http://search.cpan.org/perldoc?LWP::UserAgent, necessary to facilitate communication with the PayPal server. See [Hack #17] for installation instructions.

#!/usr/bin/perl
$workdir = "/usr/local/home";

read (STDIN, $query, $ENV{'CONTENT_LENGTH'});     [1]
$query .= '&cmd=_notify-validate';     [2] use LWP::UserAgent; $ua = new LWP::UserAgent; $req ...

Get eBay Hacks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.