Integrates the Omnipay PHP library with Laravel 5 via a ServiceProvider to make Configuring multiple payment tunnels a breeze!
For Laravel 4 see the version 1.x tree
Version 2.0
and onwards has been updated to use Omnipay 2.3.
Version 2.2
and onwards is using Omnipay 2.5
Version 2.3
and onwards supports Laravel 5.4
Important Note: Compatibility with Symfony 3 Event Dispatcher
If you are using Symfony 3 (or Symfony 3 components), please note that Omnipay 2.x still relies on Guzzle3, which in turn depends on symfony/event-dispatcher 2.x. This conflicts with Symfony 3 (standard install), so cannot be installed. Development for Omnipay 3.x is still in progress at the moment.
If you are just using the Symfony 3 components (eg. stand-alone or Silex/Laravel etc), you could try to force the install of symfony/event-dispatcher:^2.8, which is compatible with both Symfony 3 components and Guzzle 3.
composer require symfony/event-dispatcher:^2.8
Include the laravel-omnipay package as a dependency in your composer.json
:
"unoapp-dev/laravel-omnipay": "^2.*"
Note: You don't need to include the omnipay/common
in your composer.json - it is a requirement of the laravel-omnipay
package.
Run composer install
to download the dependencies.
Add a ServiceProvider to your providers array in config/app.php
:
'providers' => [
'Ignited\LaravelOmnipay\LaravelOmnipayServiceProvider',
]
Add the Omnipay
facade to your facades array:
'Omnipay' => 'Ignited\LaravelOmnipay\Facades\OmnipayFacade',
Finally, publish the configuration files:
php artisan vendor:publish --provider="Ignited\LaravelOmnipay\LaravelOmnipayServiceProvider" --tag=config
For Lumen
add the following in your bootstrap/app.php
$app->register(Ignited\LaravelOmnipay\LumenOmnipayServiceProvider::class);
Copy the laravel-omnipay.php file from the config directory to config/laravel-omnipay.php
And also add the following to bootstrap/app.php
$app->configure('laravel-omnipay');
Once you have published the configuration files, you can add your gateway options to the config file in config/laravel-omnipay.php
.
Here is an example of how to configure merchant id & merchant key with moneris driver
...
'gateways' => [
'moneris' => [
'driver' => 'Moneris',
'options' => [
'merchantId' => env('MONERIS_MERCHANT_ID', ''),
'merchantKey' => env('MONERIS_MERCHANT_KEY', ''),
'testMode' => env('MONERIS_TEST_MODE', '')
]
]
]
...
$cardInput = [
'firstName' => 'John',
'lastName' => 'Doe',
'number' => '4242424242424242',
'expiryMonth' => '03',
'expiryYear' => '2025',
'cvv' => '123',
'billingAddress1' => '795 Folsom Ave, Suite 600',
'billingCity' => 'San Francisco',
'billingPostcode' => '94107',
'billingState' => 'California',
'billingCountry' => 'United States',
'billingPhone' => '(555) 539-1037',
'email' => 'john.doe@example.com'
];
# 1. Generate payment profile :
$createcardResponse = Omnipay::createCard(['card' => $cardInput])->send();
# 2. Delete payment profile :
$cardParams = [
'cardReference' => $createcardResponse->getCardReference()
];
$deletecardResponse = Omnipay::deleteCard($cardParams)->send();
# 3. Purchase (using payment profile) :
$purchaseParams = [
"amount" => 100,
"order_number" => 11111,
"payment_method" => 'payment_profile',
"cardReference" => $createcardResponse->getCardReference()
];
$purchaseResponse = Omnipay::purchase($purchaseParams)->send();
# 4. Refund :
$refundParams = [
'amount' => 100,
'transactionReference' => $purchaseResponse->getData()
];
$refundResponse = Omnipay::refund($refundParams)->send();
This will use the gateway specified in the config as default
.
However, you can also specify a gateway to use.
Omnipay::setGateway('moneris');
In addition you can take an instance of the gateway.
$gateway = Omnipay::getGateway('moneris');