2017 © Pedro Peláez
 

library payments-sdk-php

SDK that makes it easy to connect to the CMPayments payment API

image

cmpayments/payments-sdk-php

SDK that makes it easy to connect to the CMPayments payment API

  • Tuesday, November 7, 2017
  • by baspeters
  • Repository
  • 1 Watchers
  • 3 Stars
  • 300 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 2 Versions
  • 91 % Grown

The README.md

CMPayments Payment SDK for PHP

Build Status ![Scrutinizer][badge-quality] Coverage ![Software License][badge-license] Total Downloads, (*1)

Integrating the CMPayments solutions for online payments with your application is easy using the Payment SDK for PHP., (*2)

Installation

To install the SDK, simply use Composer: composer require cmpayments/payments-sdk-php, (*3)

Requirements

  • PHP 5.5+
  • PHP cURL extension
  • Up to date SSL, capable of TLS 1.0 or higher

Dependencies

  • MoneyPHP is used to encapsulate sums of money and their currency
  • Guzzle is used to make HTTP requests

These are automatically installed by composer., (*4)

Bootstrapping

To do anything with the SDK, the first step is to create an instance of the payment Gateway:, (*5)

<?php
use CMPayments\PaymentSdk\Credentials;
use CMPayments\PaymentSdk\Gateway;

$gateway = new Gateway(new Credentials('your-api-key', 'your-api-secret'));

List iDEAL issuers

To get a list of iDEAL issuers, simply tell the Gateway to execute the IdealIssuerListRequest:, (*6)

<?php
use CMPayments\PaymentSdk\Requests\IdealIssuerListRequest;

$issuers = $gateway->execute(new IdealIssuerListRequest());

foreach ($issuers as $name => $id) {
    // $name is now 'ABN AMRO Bank', 'Rabobank', 'ING', etc.
    // $id is now 'ABNANL2A', 'RABONL2U', 'INGBNL2A', etc.
}

Start a payment

The CMPayments API supports the concept of a Charge that contains 0..n Payment items underneath it. To start a payment, both a Charge and a Payment must be created. This can be done in one request:, (*7)

<?php
use CMPayments\PaymentSdk\Entities\Charge;
use CMPayments\PaymentSdk\Entities\IdealPayment;
use CMPayments\PaymentSdk\Requests\CreateChargeRequest;
use Money\Money;

//  Create both a charge and a payment object
$payment = new IdealPayment(Money::EUR(500), 'RABONL2U', 'your-unique-purchase-id', 'A description of the transaction');
$charge = new Charge(Money::EUR(500), [$payment]);

$response = $gateway->execute(new CreateChargeRequest($charge));

//  The id of the charge is available as $response->charge_id, the id of the payment in $response->payments[0]->payment_id
//  These ids are in the form of ch- (or charge) or pt- (for payment), followed by a uuid v4.
//  To have the user complete the payment, redirect them to $response->payments[0]->payment_details->authentication_url

Note: Each payment method has its own {METHOD}Payment class. Each of these classes enforces all required properties trough their constructors. For instance, to create a new CreditCard payment, replace the new IdealPayment(...) line with new CreditCardPayment(Money::EUR(500), ['VISA', 'MasterCard'], 'your-purchase-id', new \DateTime('+1 day'));., (*8)

Retreive charge or a payment

Simple tell the Gateway to execute a ViewChargeRequest of ViewPaymentRequest with the correct id, and the details will be retrieved., (*9)

<?php
use CMPayments\PaymentSdk\Requests\ViewChargeRequest;
use CMPayments\PaymentSdk\Requests\ViewPaymentRequest;

$response = $gateway->execute(
    new ViewChargeRequest('ch-fd0e1e2d-f994-4afc-a0b6-f7e76550fc31')
);
$response = $gateway->execute(
    new ViewPaymentRequest('pt-297bba0f-5fae-4ec2-8c0f-dfbc0f62f6b0')
);

Handling errors

Internally, Guzzle is used to make HTTP requests. When the API responds with a 4xx or 5xx HTTP status, either a ClientException or a ServerException is thrown., (*10)

In case of a ServerException, the CMPayments platform is having issues. Try the request again later., (*11)

For a ClientException, check $exception->getResponse()->getBody()->getContents() to see what is wrong., (*12)

Working with Money

The Money library in use requires that any amount is represented in the smallest unig (eg. cents), so EUR 5,- is written as new Money(500, new Currency('EUR')) or shorter as Money::EUR(500)., (*13)

Because this can be a bit of a hassle, the MoneyConverter class is provided. It can convert a float + currency into a Money object and back., (*14)

<?php
use \CMPayments\PaymentSdk\MoneyConverter;
$converter = new MoneyConverter();

$money = $converter->fromAmountAndCurrency(5.00, 'EUR');

$amount = $converter->toFloat($money);

The Versions

07/11 2017

dev-master

9999999-dev https://www.cmpayments.com

SDK that makes it easy to connect to the CMPayments payment API

  Sources   Download

MIT

The Requires

 

The Development Requires

by Jory Geerts

07/11 2017