ignited / laravel-omnipay by alexw23

Integrates Omnipay with Laravel and provides an easy configuration.
934,590
511
17
Package Data
Maintainer Username: alexw23
Maintainer Contact: alexwhiteside@ignitedlabs.com.au (Alex Whiteside)
Package Create Date: 2013-10-18
Package Last Update: 2024-04-10
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-12-22 03:00:32
Package Statistics
Total Downloads: 934,590
Monthly Downloads: 5,717
Daily Downloads: 45
Total Stars: 511
Total Watchers: 17
Total Forks: 100
Total Open Issues: 0

Omnipay for Laravel 5 & Lumen

Total Downloads Latest Version Dependency Status

Integrates the Omnipay PHP library with Laravel 5 via a ServiceProvider to make Configuring multiple payment tunnels a breeze!

Laravel 4 Support

For Laravel 4 see the version 1.x tree

Now using Omnipay 2.3/2.5

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

Omnipay 3 Support

Version 3.0 and onwards supports Omnipay 3.0 and Laravel 5.3, 5.4, 5.5, 5.6, 5.7

Composer Configuration

Include the laravel-omnipay package as a dependency in your composer.json:

composer require ignited/laravel-omnipay "3.*"

Note: You don't need to include the omnipay/common in your composer.json - it is a requirement of the laravel-omnipay package.

Omnipay recently went refactoring that made it so that each package is now a seperate repository. The omnipay/common package includes the core framework. You will then need to include each gateway as you require. For example:

composer require omnipay/eway "3.*"

Alternatively you can include every gateway by requring:

composer require omnipay/omnipay "3.*"

Note: this requires a large amount of composer work as it needs to fetch each seperate repository. This is not recommended.

Laravel 5

Add a ServiceProvider to your providers array in config/app.php:

'providers' => [

	Ignited\LaravelOmnipay\LaravelOmnipayServiceProvider::class

]

Add the Omnipay facade to your facades array:

	'Omnipay' => Ignited\LaravelOmnipay\Facades\OmnipayFacade::class

Finally, publish the configuration files:

php artisan vendor:publish --provider="Ignited\LaravelOmnipay\LaravelOmnipayServiceProvider" --tag=config

Lumen

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');

Configuration

Once you have published the configuration files, you can add your gateway options to the config file in config/laravel-omnipay.php.

PayPal Express Example

Here is an example of how to configure password, username and, signature with paypal express checkout driver

...
'gateways' => [
    'paypal' => [
        'driver'  => 'PayPal_Express',
        'options' => [
            'username'  => env( 'OMNIPAY_PAYPAL_EXPRESS_USERNAME', '' ),
            'password'  => env( 'OMNIPAY_PAYPAL_EXPRESS_PASSWORD', '' ),
            'signature' => env( 'OMNIPAY_PAYPAL_EXPRESS_SIGNATURE', '' ),
            'solutionType' => env( 'OMNIPAY_PAYPAL_EXPRESS_SOLUTION_TYPE', '' ),
            'landingPage'    => env( 'OMNIPAY_PAYPAL_EXPRESS_LANDING_PAGE', '' ),
            'headerImageUrl' => env( 'OMNIPAY_PAYPAL_EXPRESS_HEADER_IMAGE_URL', '' ),
            'brandName' =>  'Your app name',
            'testMode' => env( 'OMNIPAY_PAYPAL_TEST_MODE', true )
        ]
    ],
]
...

Usage

$cardInput = [
	'number'      => '4444333322221111',
	'firstName'   => 'MR. WALTER WHITE',
	'expiryMonth' => '03',
	'expiryYear'  => '16',
	'cvv'         => '333',
];

$card = Omnipay::creditCard($cardInput);
$response = Omnipay::purchase([
	'amount'    => '100.00',
	'returnUrl' => 'http://bobjones.com/payment/return',
	'cancelUrl' => 'http://bobjones.com/payment/cancel',
	'card'      => $cardInput
])->send();

dd($response->getMessage());

This will use the gateway specified in the config as default.

However, you can also specify a gateway to use.

Omnipay::setGateway('eway');

$response = Omnipay::purchase([
	'amount' => '100.00',
	'card'   => $cardInput
])->send();

dd($response->getMessage());

In addition you can take an instance of the gateway.

$gateway = Omnipay::gateway('eway');