tcgunel / omnipay-nestpay
Omnipay extension for NestPay (Asseco) - Supports 12 Turkish banks
v2.0.0
2026-03-23 11:37 UTC
Requires
- php: ^8.3
- ext-dom: *
- ext-simplexml: *
- league/omnipay: ^3
Requires (Dev)
- brianium/paratest: *
- fzaninotto/faker: *
- http-interop/http-factory-guzzle: ^1.2
- laravel/pint: ^1.0
- omnipay/tests: ^4
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9
README
NestPay (Asseco) gateway for the Omnipay PHP payment processing library
Omnipay is a framework agnostic, multi-gateway payment processing library for PHP. This package implements NestPay (Asseco) support for Omnipay.
Supported Banks
NestPay is used by 12 Turkish banks sharing the same XML-over-HTTP protocol with different endpoint URLs:
| Bank | Constant |
|---|---|
| Akbank | Bank::AKBANK |
| Alternatif Bank | Bank::ALTERNATIFBANK |
| Anadolu Bank | Bank::ANADOLUBANK |
| CardPlus | Bank::CARDPLUS |
| Halkbank | Bank::HALKBANK |
| ING Bank | Bank::INGBANK |
| Is Bankasi | Bank::ISBANKASI |
| Finansbank | Bank::FINANSBANK |
| Sekerbank | Bank::SEKERBANK |
| TEB | Bank::TEB |
| Turkiye Finans | Bank::TURKIYEFINANS |
| Ziraat Bankasi | Bank::ZIRAATBANKASI |
Installation
composer require tcgunel/omnipay-nestpay
Available Methods
| Method | Description |
|---|---|
purchase() |
Direct (non-3D) sale or 3D Secure redirect |
completePurchase() |
Complete 3D Secure payment after bank callback |
void() |
Cancel/void a transaction |
refund() |
Refund a transaction (full or partial) |
fetchTransaction() |
Query order status |
Usage
Gateway Initialization
use Omnipay\Omnipay; use Omnipay\Nestpay\Constants\Bank; $gateway = Omnipay::create('Nestpay'); $gateway->setBank(Bank::AKBANK); $gateway->setMerchantUser('your_api_user'); $gateway->setMerchantPassword('your_api_password'); $gateway->setMerchantId('your_client_id'); $gateway->setMerchantStorekey('your_store_key'); // Required for 3D Secure $gateway->setTestMode(true); // Use test endpoints
Non-3D Purchase (Direct Sale)
$response = $gateway->purchase([ 'amount' => '100.00', 'currency' => 'TRY', 'transactionId' => 'ORDER-12345', 'installment' => '1', 'secure' => false, 'card' => [ 'number' => '4355084355084358', 'expiryMonth' => '12', 'expiryYear' => '2030', 'cvv' => '000', ], ])->send(); if ($response->isSuccessful()) { echo 'Transaction ID: ' . $response->getTransactionReference(); } else { echo 'Error: ' . $response->getMessage(); }
3D Secure Purchase
$response = $gateway->purchase([ 'amount' => '100.00', 'currency' => 'TRY', 'transactionId' => 'ORDER-12345', 'installment' => '1', 'secure' => true, 'returnUrl' => 'https://yoursite.com/payment/success', 'cancelUrl' => 'https://yoursite.com/payment/fail', 'card' => [ 'number' => '4355084355084358', 'expiryMonth' => '12', 'expiryYear' => '2030', 'cvv' => '000', ], ])->send(); if ($response->isRedirect()) { $response->redirect(); // Redirects to bank 3D Secure page }
Complete 3D Secure Purchase (Callback Handler)
After the bank redirects back to your returnUrl:
$response = $gateway->completePurchase([ 'amount' => '100.00', 'currency' => 'TRY', 'transactionId' => 'ORDER-12345', 'md' => $_POST['md'], 'xid' => $_POST['xid'], 'eci' => $_POST['eci'], 'cavv' => $_POST['cavv'], 'mdStatus' => $_POST['mdStatus'], ])->send(); if ($response->isSuccessful()) { echo 'Payment confirmed! Transaction: ' . $response->getTransactionReference(); } else { echo 'Payment failed: ' . $response->getMessage(); }
Void (Cancel)
$response = $gateway->void([ 'transactionReference' => '22302MsqJ11025', ])->send(); if ($response->isSuccessful()) { echo 'Transaction voided.'; }
Refund
$response = $gateway->refund([ 'transactionReference' => '22302MsqJ11025', 'amount' => '50.00', 'currency' => 'TRY', ])->send(); if ($response->isSuccessful()) { echo 'Refund processed.'; }
Fetch Transaction (Order Status Query)
$response = $gateway->fetchTransaction([ 'orderId' => 'ORDER-12345', ])->send(); if ($response->isSuccessful()) { $data = $response->getData(); echo 'Order status retrieved.'; }
Test Credentials
The Asseco test platform is shared by all banks:
| Setting | Value |
|---|---|
| Test API URL | https://entegrasyon.asseco-see.com.tr/fim/api |
| Test 3D URL | https://entegrasyon.asseco-see.com.tr/fim/est3Dgate |
| Test Panel | https://entegrasyon.asseco-see.com.tr/{bank}/report/user.login |
Banks with custom test endpoints:
- Is Bankasi:
https://istest.asseco-see.com.tr/fim/api - Ziraat Bankasi:
https://torus-stage-ziraat.asseco-see.com.tr/fim/api
Test card numbers and credentials are provided through the Asseco test panel for your merchant account.
Running Tests
composer test
Static Analysis
composer analyse
Code Style
composer lint
License
MIT License. See LICENSE for details.