Skip to content
Laravel library to communicate with SIBS - Open Payment Platform. The library includes payments: MBWAY, VISA, MASTER, AMEX, VPAY, MAESTRO, VISADEBIT, VISAELECTRON.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config comment: update README file Apr 10, 2019
src closed: #31 - Formatting amount error May 16, 2019
tests closed: Added new field optionalParameters. Apr 17, 2019
.gitattributes
.gitignore comment: merge conflicts Mar 29, 2019
.scrutinizer.yml
.travis.yml Added support to tests Mar 18, 2019
CODE_OF_CONDUCT.md Added some other ignore files and folders and scutinizer yml Mar 17, 2019
CONTRIBUTING.md
LICENSE Payment with cards done. Mar 16, 2019
README.md closed: Added new field optionalParameters. Apr 17, 2019
composer.json closed: #11 - prepare checkout Mar 29, 2019
composer.lock closed: added tests for the status checkout Apr 2, 2019
phpunit.xml

README.md

laravel-sibs-payments

Build Status Codacy Badge Scrutinizer Code Quality Latest Stable Version Total Downloads License

Laravel library to communicate with SIBS - Open Payment Platform. The library includes payments: VISA, MASTER, AMEX, VPAY, MAESTRO, VISADEBIT, VISAELECTRON.

Contents

Installation

Require this package with composer. It is recommended to only require the package for development.

composer require apoca/laravel-sibs-payments

Laravel 5.5 uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.

Laravel 5.5+:

If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php

Apoca\Sibs\SibsServiceProvider::class,

If you want to use the facade, add this to your facades in app.php:

'Sibs' => Apoca\Sibs\Facade\Sibs::class,

Copy the package config to your local config with the publish command:

php artisan vendor:publish --provider="Apoca\Sibs\SibsServiceProvider"

Usage

COPYandPAY Integration Guide

  1. Prepare the checkout

First, perform a server-to-server POST request to prepare the checkout with the required data, including the order type, amount and currency. The response to a successful request is a JSON string with an id, which is required in the second step to create the payment form.

$request = [
    'brand' => 'CHECKOUT',
    'amount' => 100,
    'currency' => 'EUR',
    'type' => 'DB',
    'optionalParameters' => [],
];

$response = Sibs::checkout($request)->pay();

Response

{
  "status": 200,
  "response": {
    "result":{
        "code":"000.200.100",
        "description":"successfully created checkout"
      },
      "buildNumber":"0dbf5028d176bc143baf9657d4d786f6372f4a83@2019-03-29 10:03:17 +0000",
      "timestamp":"2019-03-29 11:27:15+0000",
      "ndc":"E45186C4789C89A23E66D8DDA57A8586.uat01-vm-tx01",
      "id":"E45186C4789C89A23E66D8DDA57A8586.uat01-vm-tx01"
  }
}
  1. Create the payment form
  • The checkout's id that you got in the response from step 1
<script src="https://test.oppwa.com/v1/paymentWidgets.js?checkoutId={response->id}"></script>
  • The shopperResultUrl, which is the page on your site where the customer should be redirected to after the payment is processed and the brands that will be available.
<form action="{shopperResultUrl}" class="paymentWidgets" data-brands="VISA MASTER AMEX"></form>
  1. Get the payment status (see step 1)
$response = Sibs::status($response->response->id);
{
  "status": 400,
  "response": {
    "result":{
        "code":"200.300.404",
        "description":"invalid or missing parameter",
        "parameterErrors": [
          {
            "name": "entityId",
            "value": "8a8294185332bbe601533754724914d9",
            "message": "is not an allowed parameter"
          }
        ]
      },
      "buildNumber":"",
      "timestamp":"2019-03-29 11:27:15+0000",
      "ndc":"89C42801E79302B0E75520C4A793121D.uat01-vm-tx03"
  }
}

NOTE: You'll receive and error code 400, because you need an entity key approved by sibs.

Server-to-Server

Sending the request parameters server-to-server and receive the payment response synchronously. NOTE: This integration variant requires you to collect the card data which increases your PCI-compliance scope. If you want to minimize your PCI-compliance requirements, we recommend that you use COPYandPAY.

You can perform different types of initial payments using our server-to-server REST API.

  • Preauthorization (PA)
  • Debit (DB)
$request = [
    'amount' => 102.34,
    'currency' => 'EUR',
    'brand' => 'VISA',
    'type' => 'DB',
    'number' => 4200000000000000,
    'holder' => 'Jane Jones',
    'expiry_month' => 05,
    'expiry_year' => 2020,
    'cvv' => 123,
    'optionalParameters' => [],
];
$response = Sibs::checkout($request)->pay();

Asynchronous Server-to-Server MBWay

In an asynchronous workflow a redirection takes place to allow the account holder to complete/verify the payment.
Put the brand parameter equals to "MBWAY" and the type equals to PA. The accountId should be a phone number like this <country_dial_code#phone_number>.

$request = [
    'amount' => 10.44,
    'currency' => 'EUR',
    'brand' => 'MBWAY',
    'type' => 'PA',
    'accountId' => '351#911222111',
    'optionalParameters' => [],
];
$response = Sibs::checkout($request)->pay();

If you are in test mode put the mode parameter on sibs config file equals to test.

Response Example

{
  "status": 200,
  "response": {
    "id":"8ac7a4a26982228701698db398cf05ee",
      "paymentType":"DB",
      "paymentBrand":"VISA",
      "amount":"102.34",
      "currency":"EUR",
      "descriptor":"2302.8463.4825 OPP_Channel ",
      "result":{
        "code":"000.100.110",
        "description":"Request successfully processed in 'Merchant in Integrator Test Mode'"
      },
      "card":{
        "bin":"420000",
        "last4Digits":"0000",
        "holder":"Jane Jones",
        "expiryMonth":"05",
        "expiryYear":"2020"
      },
      "risk":{
        "score":"100"
      },
      "buildNumber":"699e422a79444128a09e7d5d75eb187a99e8b3f3@2019-03-15 04:42:21 +0000",
      "timestamp":"2019-03-17 22:09:12+0000",
      "ndc":"8a8294185332bbe601533754724914d9_db6237eaf4b247ca99e4f917c5ca2943"
  }
}

See oficial SIBS api reference

Feedback

We'd love to get feedback on how you're using laravel-sibs-payments and things we could add to make this tool better. Feel free to contact us at vieira@miguelvieira.com.pt

Contributing

We'd love to get feedback on how you're using laravel-sibs-payments and things we could add to make this tool better. Feel.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Author

  • Miguel Vieira - Initial work - apoca

See also the list of contributors who participated in this project.

You can’t perform that action at this time.