Omnipay: Secure Trading
Secure Trading gateway for the Omnipay PHP payment processing library, (*1)
, (*2)
Omnipay is a framework agnostic, multi-gateway payment
processing library for PHP 5.3+. This package implements Secure Trading support for Omnipay., (*3)
Install
Via Composer, (*4)
``` bash
$ composer require meebio/omnipay-secure-trading, (*5)
## Usage
The following gateways are provided by this package:
* Secure Trading
For general usage instructions, please see the main [Omnipay](https://github.com/thephpleague/omnipay) repository.
This driver supports following transaction types:
- `purchase($options)` - authorize and immediately capture an amount on the customer's card
- `completePurchase($options)` - handle return from off-site gateways after purchase
- `refund($options)` - refund an already processed transaction
- `threeDSecure($options)` - authorize customer's card through 3D Secure process, same as `purchase($options)`
with option `applyThreeDSecure` set to true
Gateway instantiation:
```php
$gateway = Omnipay::create('SecureTrading');
$gateway->setSiteReference('siteReference123');
$gateway->setUsername('username123');
$gateway->setPassword('password123');
Driver also supports paying with cardReference instead of card.
It can be used in authorize and purchase requests like that:, (*6)
$gateway->purchase([
'amount' => '10.00',
'cardReference' => 'abc',
]);
3D Secure
To enable 3D Secure credit card authorization through purchase request, applyThreeDSecure parameter needs to be set to true. Then whole purchase flow is like below:, (*7)
$gateway = Omnipay::create('SecureTrading');
$gateway->setSiteReference('siteReference123');
$gateway->setUsername('username123');
$gateway->setPassword('password123');
$request = $gatewat->purchase([
'transactionId' => 'test-1234',
'applyThreeDSecure' => true,
'returnUrl' => 'http://test-website.test/return-url',
'amount' => '2.99',
'currency' => 'GBP',
'card' => [
'number' => '4111111111111111',
'expiryMonth' => '12',
'expiryYear' => '2020',
'cvv' => '123',
'firstName' => 'Forename',
'lastName' => 'Surname',
],
]);
$response = $request->send();
if ($response->isSuccessful()) {
// card not enrolled or unknown enrollment
// and payment is successful, no redirection needed
} elseif ($response->isRedirect()) {
// redirect to offsite payment gateway
$response->redirect();
} else {
// payment failed: display message to customer
echo $response->getMessage();
}
In case of redirection, following code is needed to process payment after customer returns from remote server:, (*8)
$gateway = Omnipay::create('SecureTrading');
$gateway->setSiteReference('siteReference123');
$gateway->setUsername('username123');
$gateway->setPassword('password123');
$request = $gateway->completePurchase([
'md' => $_POST['MD'],
'paRes' => $_POST['PaRes'],
]);
$response = $request->send();
if ($response->isSuccessful()) {
// payment is successful
} else {
// payment failed: display message to customer
echo $response->getMessage();
}
Support
If you are having general issues with Omnipay, we suggest posting on
Stack Overflow. Be sure to add the
omnipay tag so it can be easily found., (*9)
If you want to keep up to date with release anouncements, discuss ideas for the project,
or ask more detailed questions, there is also a mailing list which
you can subscribe to., (*10)
If you believe you have found a bug, please report it using the GitHub issue tracker,
or better yet, fork the library and submit a pull request., (*11)
Change log
Please see CHANGELOG for more information what has changed recently., (*12)
Testing
bash
$ composer test, (*13)
Contributing
Please see CONTRIBUTING for details., (*14)
Security
If you discover any security related issues, please email jablonski.kce@gmail.com instead of using the issue tracker., (*15)
Credits
License
The MIT License (MIT). Please see License File for more information., (*16)