PHPackages                             lbali/truepos - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. lbali/truepos

ActiveLibrary[Payment Processing](/categories/payments)

lbali/truepos
=============

Unified Turkish virtual POS gateway package — all banks, one API. Framework-agnostic core with Laravel integration.

01PHP

Since Apr 17Pushed 1mo agoCompare

[ Source](https://github.com/lbali/truepos)[ Packagist](https://packagist.org/packages/lbali/truepos)[ RSS](/packages/lbali-truepos/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

TruePos
=======

[](#truepos)

[![Latest Version on Packagist](https://camo.githubusercontent.com/e7d275c5c016030a8e47cffd2007c82e5c9d5a47406187e5fe64c774c8e292f7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6c62616c692f74727565706f732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/lbali/truepos)[![License](https://camo.githubusercontent.com/47188e0de48286bcc716b248203ba05c8eb35c518c3831cd8e778feff24ca2a4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6c62616c692f74727565706f733f7374796c653d666c61742d737175617265)](LICENSE)[![PHP Version](https://camo.githubusercontent.com/4b2b6d2808ec1609b05d94fedc220b08292fb85186eb44606ba8f141bba6967e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6c62616c692f74727565706f733f7374796c653d666c61742d737175617265)](composer.json)

Tüm Türk sanal POS sağlayıcılarını tek bir birleşik API altında toplayan, framework-bağımsız PHP paketi. Laravel entegrasyonu dahildir.

Bir sağlayıcıdan diğerine geçmek için tek yapmanız gereken ayarları değiştirmek — kodunuz aynı kalır.

> **Durum: Beta** — Canlıya almadan önce kendi banka/ödeme kuruluşu bilgilerinizle test edin. 3DS geri dönüşleri mümkün olan yerlerde hash ile doğrulanır; bazı sağlayıcılarda (PosNet, Iyzico) doğrulama sunucudan sunucuya provizyon adımında yapılır.

Desteklenen Sağlayıcılar
------------------------

[](#desteklenen-sağlayıcılar)

### Banka Sanal POS'ları

[](#banka-sanal-posları)

SağlayıcıSürücüAyar AdıBankalar**NestPay (EST)**`nestpay``akbank` `isbank` `ziraat` `halkbank` `teb` `denizbank`Akbank, İş Bankası, Ziraat, Halkbank, TEB, Denizbank, Anadolubank, ING**Garanti GVP**`garanti``garanti`Garanti BBVA**PosNet**`posnet``yapikredi`Yapı Kredi**PayFor**`payfor``qnbfinansbank`QNB Finansbank**Vakıfbank VPOS**`vakifbank``vakifbank`Vakıfbank**Kuveyt Türk**`kuveytturk``kuveytturk`Kuveyt Türk### Ödeme Kuruluşları

[](#ödeme-kuruluşları)

SağlayıcıSürücüAyar Adı**iyzico**`iyzico``iyzico`**Moka**`moka``moka`**Sipay**`sipay``sipay`**Param**`param``param`**PayTR**`paytr``paytr`**Tosla**`tosla``tosla`**EsnekPOS**`esnekpos``esnekpos`**Paratika**`paratika``paratika`**Lidio**`lidio``lidio`### Orkestratör

[](#orkestratör)

SağlayıcıSürücüAyar Adı**Craftgate**`craftgate``craftgate`### Desteklenen Özellikler

[](#desteklenen-özellikler)

SağlayıcıSatış3D Secure3D Pay3D HostTaksitÖn ProvizyonİadeİptalSorgu**NestPay**✅✅✅✅✅✅✅✅✅**Garanti**✅✅✅✅✅✅✅✅**PosNet**✅✅✅✅✅✅✅**PayFor**✅✅✅✅✅✅✅✅**Vakıfbank**✅✅✅✅✅✅✅**Kuveyt Türk**✅✅✅✅✅✅**iyzico**✅✅✅✅✅✅✅**Moka**✅✅✅✅✅✅✅**Sipay**✅✅✅✅✅✅✅**Param**✅✅✅✅✅✅✅**PayTR**✅✅✅✅✅✅**Tosla**✅✅✅✅✅✅✅✅✅**EsnekPOS**✅✅✅✅✅✅**Paratika**✅✅✅✅✅✅✅✅**Lidio**✅✅✅✅✅✅✅✅**Craftgate**✅✅✅✅✅✅✅> NestPay sürücüsü tek başına 8+ bankayı destekler. Toplamda **20+ banka ve ödeme kuruluşu** tek API ile kullanılabilir.

Gereksinimler
-------------

[](#gereksinimler)

- PHP 8.2+
- PSR-18 HTTP İstemcisi (Guzzle, Symfony HttpClient vb.)
- Laravel 11/12 (isteğe bağlı — ServiceProvider, Facade, ayar dosyası, rotalar)

Kurulum
-------

[](#kurulum)

```
composer require lbali/truepos
```

### Laravel Kurulumu

[](#laravel-kurulumu)

Ayar dosyasını yayınlayın:

```
php artisan vendor:publish --tag=truepos-config
```

İşlem kaydı tutmak istiyorsanız migration'ları da yayınlayın:

```
php artisan vendor:publish --tag=truepos-migrations
php artisan migrate
```

Kullanım
--------

[](#kullanım)

### Basit Ödeme

[](#basit-ödeme)

```
use TruePos\Facades\TruePos;
use TruePos\Builder\PaymentRequestBuilder;
use TruePos\ValueObjects\CreditCard;
use TruePos\ValueObjects\Customer;

$request = PaymentRequestBuilder::create()
    ->card(new CreditCard(
        number: '4546711234567894',
        expiryMonth: '12',
        expiryYear: '30',
        cvv: '000',
        holderName: 'Levent Bali',
    ))
    ->amount(250.50)
    ->installment(3)
    ->customer(new Customer(ip: request()->ip()))
    ->build();

$response = TruePos::gateway('akbank')->purchase($request);

if ($response->isSuccessful()) {
    // $response->transactionId
    // $response->authCode
}
```

### 3D Secure Ödeme

[](#3d-secure-ödeme)

```
$request = PaymentRequestBuilder::create()
    ->card($card)
    ->amount(500.00)
    ->threeD(route('truepos.threed.callback'))
    ->installment(6)
    ->customer(new Customer(ip: request()->ip()))
    ->build();

$response = TruePos::gateway('garanti')->purchase($request);

if ($response->isThreeDRedirect()) {
    return view('truepos::redirect', [
        'gatewayUrl'  => $response->threeDSecureData->gatewayUrl,
        'parameters'  => $response->threeDSecureData->formParameters,
    ]);
}
```

3D Secure geri dönüşü Laravel'de otomatik yönetilir. Sonucu dinlemek için olay dinleyicileri kullanın:

```
use TruePos\Events\PaymentCompleted;
use TruePos\Events\PaymentFailed;

Event::listen(PaymentCompleted::class, function (PaymentCompleted $event) {
    $response = $event->response;
    // Siparişi onayla
});

Event::listen(PaymentFailed::class, function (PaymentFailed $event) {
    $response = $event->response;
    // Hata yönetimi
});
```

### Framework-Bağımsız Kullanım (Symfony, saf PHP vb.)

[](#framework-bağımsız-kullanım-symfony-saf-php-vb)

Laravel olmadan da kullanılabilir. Sadece PSR-18 HTTP istemcisi ve isteğe bağlı PSR-16 önbellek gerekir:

```
use GuzzleHttp\Client;
use TruePos\Builder\PaymentRequestBuilder;
use TruePos\Factory\GatewayFactory;
use TruePos\TruePosManager;
use TruePos\ValueObjects\CreditCard;
use TruePos\ValueObjects\Customer;

$manager = new TruePosManager(
    config: [
        'default' => 'akbank',
        'gateways' => [
            'akbank' => [
                'driver' => 'nestpay',
                'client_id' => 'your_client_id',
                'username' => 'your_username',
                'password' => 'your_password',
                'store_key' => 'your_store_key',
                'store_type' => '3d',
                'payment_url' => 'https://www.sanalakpos.com/fim/api',
                'threed_gateway_url' => 'https://www.sanalakpos.com/fim/est3Dgate',
            ],
        ],
    ],
    factory: new GatewayFactory(),
    httpClient: new Client(['timeout' => 30]),
);

$request = PaymentRequestBuilder::create()
    ->card(new CreditCard('4546711234567894', '12', '30', '000'))
    ->amount(100.00)
    ->customer(new Customer(ip: '127.0.0.1'))
    ->build();

$response = $manager->gateway('akbank')->purchase($request);
```

### Sağlayıcı Değiştirme

[](#sağlayıcı-değiştirme)

Aynı kod, farklı banka:

```
TruePos::gateway('akbank')->purchase($request);
TruePos::gateway('isbank')->purchase($request);
TruePos::gateway('garanti')->purchase($request);
TruePos::gateway('yapikredi')->purchase($request);
TruePos::gateway('iyzico')->purchase($request);
TruePos::gateway('tosla')->purchase($request);

// Veya .env'den varsayılan sağlayıcıyı kullan:
TruePos::gateway()->purchase($request);
```

### İade

[](#i̇ade)

```
use TruePos\DataTransferObjects\RefundRequest;
use TruePos\ValueObjects\Money;

$response = TruePos::gateway('akbank')->refund(new RefundRequest(
    orderId: 'ORD-12345',
    amount: Money::fromDecimal(50.00), // Kısmi iade
));
```

### İptal

[](#i̇ptal)

```
use TruePos\DataTransferObjects\CancelRequest;

$response = TruePos::gateway('akbank')->cancel(new CancelRequest(
    orderId: 'ORD-12345',
));
```

### Ön Provizyon + Kapama

[](#ön-provizyon--kapama)

```
// Tutarı bloke et
$request = PaymentRequestBuilder::create()
    ->card($card)
    ->amount(1000.00)
    ->preAuth()
    ->build();

$holdResponse = TruePos::gateway()->preAuthorize($request);

// Daha sonra: kapat (daha düşük tutarla da olabilir)
$captureResponse = TruePos::gateway()->postAuthorize(
    transactionId: $holdResponse->transactionId,
    amount: Money::fromDecimal(800.00),
);
```

Yapılandırma
------------

[](#yapılandırma)

`.env` dosyanıza banka bilgilerinizi ekleyin:

```
TRUEPOS_GATEWAY=akbank

# Akbank (NestPay)
AKBANK_CLIENT_ID=your_client_id
AKBANK_USERNAME=your_username
AKBANK_PASSWORD=your_password
AKBANK_STORE_KEY=your_store_key

# Garanti
GARANTI_TERMINAL_ID=your_terminal_id
GARANTI_MERCHANT_ID=your_merchant_id
GARANTI_PROV_PASSWORD=your_password
GARANTI_STORE_KEY=your_store_key

# Yapı Kredi (PosNet)
YAPIKREDI_MERCHANT_ID=your_merchant_id
YAPIKREDI_TERMINAL_ID=your_terminal_id
YAPIKREDI_POSNET_ID=your_posnet_id
YAPIKREDI_ENC_KEY=your_enc_key

# iyzico
IYZICO_API_KEY=your_api_key
IYZICO_SECRET_KEY=your_secret_key

# Tosla
TOSLA_CLIENT_ID=your_client_id
TOSLA_API_USER=your_api_user
TOSLA_API_PASS=your_api_pass
```

Tüm sağlayıcı yapılandırmaları için `config/truepos.php` dosyasını inceleyin.

Mimari
------

[](#mimari)

Bu paket aşağıdaki OOP tasarım kalıplarını kullanır:

KalıpKullanım Yeri**Şablon Yöntem**`AbstractGateway` — ödeme akışının iskeleti**Strateji**`HashGenerator`, `Serializer`, `ResponseParser`**Fabrika Yöntemi**`GatewayFactory` — yapılandırmadan sağlayıcı oluşturma**İnşaatçı**`PaymentRequestBuilder` — akıcı, değişmez**Uyarlayıcı**`ResponseParser` — banka yanıtlarını normalleştirme**Dekoratör**`LoggingGateway`, `RetryGateway`**Gözlemci**PSR-14 olayları (Laravel/Symfony uyumlu)**Durum**`TransactionStateMachine`**Sorumluluk Zinciri**`ValidationPipeline`**Değer Nesnesi**`CreditCard`, `Money`, `Customer`**Boş Nesne**`NullTransactionRepository`Test
----

[](#test)

```
composer test        # PHPUnit
composer analyse     # PHPStan seviye 8
composer lint        # Laravel Pint
composer check       # Hepsi birden
```

Bilinen Kısıtlamalar
--------------------

[](#bilinen-kısıtlamalar)

- Her sağlayıcı için gerçek banka/ödeme kuruluşu ortamı farklılık gösterebilir. Canlıya almadan önce kendi banka bilgilerinizle test edin.
- PCI-DSS uyumluluğu üye işyeri/uygulama tarafının sorumluluğundadır. Bu paket kart verisini bellekte işler, saklamaz.
- Kart verisini mümkünse 3D Host veya barındırılan ödeme formu ile doğrudan bankada toplamak önerilir (`->threeDHost()` kullanın).
- Banka API'leri zaman zaman geriye uyumsuz değişiklik yapabilir. Sorun yaşarsanız issue açın.

Güvenlik
--------

[](#güvenlik)

Güvenlik açığı bildirimi için **public issue açmayın**. Ayrıntılar için [SECURITY.md](SECURITY.md) dosyasına bakın.

Katkıda Bulunma
---------------

[](#katkıda-bulunma)

Ayrıntılar için [CONTRIBUTING.md](CONTRIBUTING.md) dosyasına bakın.

Kısa özet — yeni sağlayıcı eklemek için:

1. `src/Gateways/YeniSaglayici/` dizininde 3 dosya oluşturun:

    - `YeniSaglayiciGateway.php` (extends `AbstractGateway`)
    - `YeniSaglayiciHashGenerator.php` (implements `HashGeneratorInterface`)
    - `YeniSaglayiciResponseParser.php` (implements `ResponseParserInterface`)
2. `src/Enums/Gateway.php` dosyasına yeni case ekleyin
3. `src/Factory/GatewayFactory.php` dosyasında kayıt edin
4. `config/truepos.php` dosyasına örnek yapılandırma ekleyin
5. `tests/` altına testleri ve fixture'ları yazın

Lisans
------

[](#lisans)

MIT

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance59

Moderate activity, may be stable

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/de16c862cc0348f2811b0ddf98ae951a02809b69c665c374a53e43b338003c2a?d=identicon)[lbali](/maintainers/lbali)

---

Top Contributors

[![lbali](https://avatars.githubusercontent.com/u/529853?v=4)](https://github.com/lbali "lbali (14 commits)")

### Embed Badge

![Health badge](/badges/lbali-truepos/health.svg)

```
[![Health](https://phpackages.com/badges/lbali-truepos/health.svg)](https://phpackages.com/packages/lbali-truepos)
```

###  Alternatives

[omnipay/coinbase

Coinbase driver for the Omnipay payment processing library

18570.2k1](/packages/omnipay-coinbase)[yenepay/php-sdk

YenePay SDK for PHP

112.7k](/packages/yenepay-php-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
