Update: This library has gone through full re-write and the uploaded version can be found here.
If you are like me, whenever you need to work with a 3rd party API or a gateway, you’d first search in Google for a possible wrapper for it in PHP. When it comes to supporting payment gateways, you get bunch of libraries in the search results who are fundamentally different. Some of them are old PHP 3/4 ones, some are new, some may need PEAR, etc.
As they were not required together in one single project, I used them whenever needed. But in one project, I needed them all. I thoughts it’s a chance and decided to stop using them and wrote my own ones where I can use the same methods for all the gateways.
So, here is an abstract PaymentGateway library which is being extended to be used for three popular payment gateways (Paypal, Authorize.net, and 2Checkout) in order to provide you with a similar way of using them. Note that the libraries are for basic usage only and do not contain options for recurring payments. Without much babble, let’s see a few examples of how you can use them.
No download available for this version.
In order to process payments using Paypal, you’ll need to follow these steps:
1. Send the required information to Paypal (snippet 1). Be sure to specify your Paypal email where you want to receive the funds, the success and failure pages, the IPN page, and the product information. The example has the test mode ON, which you will not need in real scenario.
2. Create a payment success page where Paypal will send your customer after payment.
3. Create a payment failure page where Paypal will send your customer after failed payment.
4. Create a IPN page where Paypal will send payment notification in the background. Make sure you use/remove the test mode in conjunction with step 1. (snippet 2)
// Include the paypal library
// Create an instance of the paypal library
$myPaypal = new Paypal();
// Specify your paypal email
// Specify the currency
// Specify the url where paypal will send the user on success/failure
// Specify the url where paypal will send the IPN
// Specify the product information
// Specify any custom value
// Enable test mode if needed
// Let's start the train!