A generic module for adding PayPal Payments support to a ZF2 application.
SpeckPaypal is a module that can be utilized outside of Speck Commerce to accept payments via paypal. This module currently supports PayPal Payments Pro and Express Checkout API Operations.
Please see: Paypal API Docs
To integrate with this module you will want to sign up for a sandbox account on Paypal. See the developer website for instructions.
This module currently supports the following calls with API version 95.0:
- Callback
- DoAuthorization
- DoCapture
- DoDirectPayment
- DoExpressCheckoutPayment
- DoVoid
- GetBalance
- GetExpressCheckoutDetails
- GetTransactionDetails
- RefundTransaction
- SetExpressCheckout
The dependencies for SpeckCommerce are set up as Git submodules so you should not hav
- PHP 5.3.3+
- Zend Framework 2 (latest master)
- [Steve Rhoades] (https://github.com/SteveRhoades) (aka srhoades)
Join us on the Freenode IRC network: #speckcommerce. Our numbers are few right now, but we're a dedicated small group working on this project full time.
Create a Paypal Request Object:
//setup config object
$config = array(
'username' => 'your_username',
'password' => 'your_password',
'signature' => 'your_signature',
'endpoint' => 'https://api-3t.sandbox.paypal.com/nvp' //this is sandbox endpoint
)
$paypalConfig = new \SpeckPaypal\Element\Config($config);
//set up http client
$client = new \Zend\Http\Client;
$client->setMethod('POST');
$client->setAdapter(new \Zend\Http\Client\Adapter\Curl);
$paypalRequest = new \SpeckPaypal\Service\Request;
$paypalRequest->setClient($client);
$paypalRequest->setConfig($config);
Direct Payment Example (by default the request is sent as "Sale" which is equivalent to Authorize Capture):
$paymentDetails = new \SpeckPaypal\Element\PaymentDetails(array(
'amt' => '10.00'
));
$payment = new \SpeckPaypal\Request\DoDirectPayment(array('paymentDetails' => $paymentDetails));
$payment->setCardNumber('4744151425799438');
$payment->setExpirationDate('112017');
$payment->setFirstName('John');
$payment->setLastName('Canyon');
$payment->setIpAddress('255.255.255.255');
$payment->setCreditCardType('Visa');
$payment->setCvv2('345');
$address = new \SpeckPaypal\Element\Address;
$address->setStreet('27 Your Street');
$address->setStreet2('Apt 23');
$address->setCity('Some City');
$address->setState('California');
$address->setZip('92677');
$address->setCountryCode('US');
$payment->setAddress($address);
$response = $paypalRequest->send($payment);
echo $response->getTransactionId();
Express Checkout Example:
$paymentDetails = new \SpeckPaypal\Element\PaymentDetails(array(
'amt' => '20.00'
));
$express = new \SpeckPaypal\Request\SetExpressCheckout(array('paymentDetails' => $paymentDetails));
$express->setReturnUrl('http://www.someurl.com/return');
$express->setCancelUrl('http://www.someurl.com/cancel');
$response = $paypalRequest->send($express);
echo $response->isSuccess();
$token = $response->getToken();
$payerId = $response->getPayerId();
//To capture express payment
$captureExpress = new \SpeckPaypal\Request\DoExpressCheckoutPayment(array(
'token' => $token,
'payerId' => $payerId,
'paymentDetails' => $paymentDetails
));
$response = $paypalRequest->send($captureExpress);
echo $response->isSuccess();
- add better support for response handling
- refactor to relevant exception classes
- add support for ebay items, survey questions ... and other missing payments pro apis

