PHP PayPal Mobile Checkout Library

This PHP library is a basic implementation for the paypal mobile checkout NVP interface. For simplicities sake I am going to create a single controller for the checkout that will check to see if we have a token or not, and then process it accordingly.

We will require the Cana_Paypal libraries for this. Go ahead and grab them over on github:

https://github.com/arzynik/cana-paypal

First lets set up our object. You will need to create an api user/pass/sig on paypals site, or with the sandbox.

$paypal = new Cana_Paypal_Mobile;

$paypal->setApiVersion('3.0') ->setApiUrl('https://mobile.paypal.com/wc?t=') ->setApiUser('api_user') ->setApiPass('api_pass') ->setApiSignature('api_sig');

We next need to call the SetMobileCheckout method on the api. In this example we will switch between Set and Do checkout based on if there is a token. You can see how this all fits together by downloading the library and example at the bottom of the page.

if (empty($_GET['token'])) { // SetMobileCheckout } else { // DoMobileCheckout }

SetMobileCheckout is what we do first, then send the user off to paypal.

$response = $paypal->setAmt('5.00') ->setCurrencycode('USD') ->setDesc('Test Item') ->setReturnurl('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']) ->setCancelurl('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']) ->setCheckout($optionalParams ? optionalParams : null);

if ($paypal->getResponseStatus()) { // forward user off to paypal header('Location: '.$paypal->getApiUrl().urldecode($paypal->getToken())); } else { // error print_r($response); exit; }

When they come back, they will have a token. We take that token and authenticate it back to paypal to finish the transaction.

$response = $paypal->setToken($_GET['token']) ->doCheckoutPayment();

if ($paypal->getResponseStatus()) { // success! print_r($response); exit; } else { // error print_r($response); exit; }