Home

Awesome

VR Payment

GitHub license Packagist GitHub issues PHP Composer Test

Table of Contents

Omnipay: VR Payment

VR Payment driver for the Omnipay PHP payment processing library

Written to specification:

This package implements VR Payment support for OmniPay.

VR Payment GmbH

Installation

This is the master branch for the current Omnipay 3.x branch (tested against 3.0.2).

Omnipay is installed via Composer. To install, add it to your composer.json file:

{
  "require": {
      "antibodies-online/omnipay-vr-payment": "~1.0"
  }
}

or direct from packagist

composer require "antibodies-online/omnipay-vr-payment: ~1.0"

And run composer to update your dependencies:

$ curl -s http://getcomposer.org/installer | php
$ php composer.phar update

Basic Usage

For general usage instructions, please see the main Omnipay repository. You will find more specific details can be found below.

Gateway Background

At least there is only one gateway provided by VR Payment. There's no separate gateway for frontend forms and server-to server requests. However they splitted the tutorials on their document page.

You will most likely be using a mix of COPY+PAY, and Server-to-Server functions as they complement each other, if you want to be SAQ-A(For more information see: PCI) compliant.

Instantiate a gateway

To communicate with vr payment there are different mandatory informations which the gateway needs:

Now let's create the gateway:

$gateway = Omnipay\Omnipay::create('VrPayment_VrPayment');
$gateway->setEntityId('xyz');
$gateway->setTestMode(true);
$gateway->setAccessToken('myAccessToken');

$request = $gateway->authorize([
    'transactionId' => $transactionId, // Merchant site ID (or a nonce for it)
    'amount' => 9.99, // Major units
    'currency' => 'EUR',
    'token' => 'creditCardToken', // This is only needed, if you are using COPY+PAY
    'card' => [ // Is not implemented yet
        ....
    ]
]);
$response = $request->send();

Switch between Test Modes

VR Payment provides two different Test Modes.

Default: INTERNAL

You can switch the Test Mode using this command:

    $gateway->setSimulation('EXTERNAL');

Parsing Webhooks

There are different actions which are send via Webhook. For further documentation please read the documentation Omnipay provides a standard way to accept and read such notifications. However the returned Request object is not standardized and may differ in other implementations.

$gateway = Omnipay\Omnipay::create('VrPayment_VrPayment');
$gateway->setNotificationDecryptionKey('myDecryptionKey');

$request = $gateway->acceptNotifications(); // Parses the HTTP Request
$requestArray = $request->getData();
$response = $request->sendData();
$response->sendData()->accept(); 

Out of standard functions

There are a couple of functions which are not defined in the standard of omnipay. However I think to use COPY+PAY, it's easier to include those function in this package.

<form action="{$YOUR_REDIRECT_URL}" class="paymentWidgets" data-brands="VISA MASTER AMEX">&nbsp;</form>
<script type="text/javascript" src="{$JAVASCRIPT_URL}"></script>
{literal}
<script>
    var wpwlOptions = {style:"card"}
</script>
{/literal}
$gateway = Omnipay\Omnipay::create('VrPayment_VrPayment');
// Set authentication info
$request = $gateway->creditCardCheck()->send();
$javascript_url = $request->getPaymentFormJsUrl();
$gateway = Omnipay\Omnipay::create('VrPayment_VrPayment');
$cardCheckStatusResponse = $gateway->creditCardCheckStatus()->send();
if ($cardCheckStatusResponse->isSuccessful()) {
    $token = $cardCheckStatusResponse->getTransactionReference();
}

Contributing

We really appreciate if you report bugs and errors. Feel free to ask for additional functionality/fields. But be aware that the maintainers may not implement all features. If you can provide a Pull Request for your Features that would be amazing.