PHPackages                             mews/pos - 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. mews/pos

ActiveLibrary[Payment Processing](/categories/payments)

mews/pos
========

Türk bankaları için sanal pos kütüphanesi

2.0.0(1mo ago)33621.1k↑27.9%103[4 issues](https://github.com/mewebstudio/pos/issues)[1 PRs](https://github.com/mewebstudio/pos/pulls)2MITPHPPHP &gt;=8.0CI passing

Since Aug 7Pushed 1mo ago22 watchersCompare

[ Source](https://github.com/mewebstudio/pos)[ Packagist](https://packagist.org/packages/mews/pos)[ Docs](https://github.com/mewebstudio/pos)[ RSS](/packages/mews-pos/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (10)Dependencies (66)Versions (94)Used By (2)

Türk bankaları için sanal pos paketi (PHP)
==========================================

[](#türk-bankaları-için-sanal-pos-paketi-php)

[![Version](https://camo.githubusercontent.com/497d9efbdfb607f3758a5d2b862dad1c43f593e9e01f1185da5001e4e0fa827f/68747470733a2f2f706f7365722e707567782e6f72672f6d6577732f706f732f76657273696f6e)](https://packagist.org/packages/mews/pos)[![Monthly Downloads](https://camo.githubusercontent.com/8d18522bbeb152caada275315fe4e7f9ca2d6f62180dbcbca440695e2e3dc71d/68747470733a2f2f706f7365722e707567782e6f72672f6d6577732f706f732f642f6d6f6e74686c79)](https://packagist.org/packages/mews/pos)[![License](https://camo.githubusercontent.com/f6ba399ef31719318543053358a3954d7e4857d1819f138afdebb2889ed6f8a3/68747470733a2f2f706f7365722e707567782e6f72672f6d6577732f706f732f6c6963656e7365)](https://packagist.org/packages/mews/pos)[![PHP Version Require](https://camo.githubusercontent.com/c7e4bb692cd65758aa6831326a10f44d5692ef098cafc1d7e3da2ee9071265fd/68747470733a2f2f706f7365722e707567782e6f72672f6d6577732f706f732f726571756972652f706870)](https://packagist.org/packages/mews/pos)

Bu paket ile amaçlanan; ortak bir arayüz sınıfı ile, tüm Türk banka sanal pos sistemlerinin kullanılabilmesidir.

### Desteklenen Payment Gateway'ler / Bankalar:

[](#desteklenen-payment-gatewayler--bankalar)

GatewayDesktekleyen
bankalarDesteklenen
Ödeme TipleriDesteklenen SorgularTosla
(eski AKÖde)?NonSecure
3DPay
3DHostİptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama
Özel Sorgu
Taksit Oranları
Taksit FiyatlarıIyzicoPosIyzicoNonSecure
3DSecure
3DHostİptal
İade (v2 API)
Durum sorgulama
Sipariş Tarihçesini sorgulama
Geçmiş İşlemleri sorgulama
Özel Sorgu
Taksit Fiyatları
BIN SorgulamaPayTrPosPayTrNonSecure
3DPay(Direkt API)
3DHost(iFrame API)İade
Durum sorgulama
Geçmiş İşlemleri sorgulama
Özel Sorgu
Taksit Oranları
BIN SorgulamaParamPos?NonSecure
3DSecure
3DPay
(test edilmesi gerekiyor)İptal
İade
Durum sorgulama
Geçmiş İşlemleri sorgulama
Özel Sorgu
Taksit Oranları
BIN SorgulamaParam3DHostPos?3DHost
(test edilmesi gerekiyor)AkbankPos
(Akbank'ın yeni altyapısı)AkbankNonSecure
3DSecure
3DPay
3DHost
Tekrarlanan Ödemeİptal
İade
Sipariş Tarihçesini sorgulama
Geçmiş İşlemleri sorgulama
Özel SorguAssecoPos
(Asseco/Payten)
eski EstV3PosAkbank
TEB
İşbank
Şekerbank
Halkbank
Finansbank
ZiraatNonSecure
3DSecure
3DPay
3DHost
3DPayHost
Tekrarlanan Ödemeİptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama
Özel SorguPayFlex MPI VPOS V4Ziraat
Vakıfbank VPOS 7/24
İşbankNonSecure
3DSecure
Tekrarlanan Ödemeİptal
İade
Durum sorgulama
Özel SorguPayFlex
Common Payment V4
(Ortak Ödeme)Ziraat
Vakıfbank
İşbank3DPay
3DHostÖzel SorguGaranti Virtual POSGarantiNonSecure
3DSecure
3DPay
3DHost
Tekrarlanan Ödemeİptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama
Geçmiş İşlemleri sorgulama
Özel Sorgu
BIN SorgulamaPosNetYapıKrediNonSecure
3DSecure
İptal
İade
Durum sorgulama
Özel SorguPosNetV1
(JSON API)Albaraka TürkNonSecure
3DSecureİptal
İade
Durum sorgulama
Özel SorguPayForFinansbank
Enpara
Ziraat KatılımNonSecure
3DSecure
3DPay
3DHostİptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama
Geçmiş İşlemleri sorgulama
Özel SorguInterPOSDeniz bankNonSecure
3DSecure
3DPay
3DHostİptal
İade
Durum sorgulama
Özel SorguKuveyt POS
TDV2.0.0Kuveyt TürkNonSecure
3DSecureKuveyt POS
TDV2.0.0
SOAP APIKuveyt Türkİptal
İade
Durum sorgulama
Özel SorguVakifKatilimPosVakıf KatılımNonSecure (test edilmesi gerekiyor)
3DSecure
3DHost (test edilmesi gerekiyor)İptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama
Geçmiş İşlemleri sorgulama
Özel Sorgu### Ana başlıklar

[](#ana-başlıklar)

- [Özellikler](#%C3%B6zellikler)
- [Changelog](./docs/CHANGELOG.md)
- [v1'den v2'ye Geçiş Kılavuzu](./docs/UPGRADE-v2.md)
- [Minimum Gereksinimler](#minimum-gereksinimler)
- [Kurulum](#kurulum)
- [Farklı Banka Sanal Poslarını Eklemek](#farkl%C4%B1-banka-sanal-poslar%C4%B1n%C4%B1-eklemek)
- [Örnek Kodlar](#%C3%B6rnek-kodlar)

    - [3DSecure, 3DPay ve 3DHost Ödeme Örneği](./docs/THREED-PAYMENT-EXAMPLE.md)
    - [PayTR 3DPay ve 3DHost Ödeme Örneği](./docs/THREED-PAYMENT-PAYTR_EXAMPLE.md)
    - [3DSecure, 3DPay ve 3DHost Modal Box ile Ödeme Örneği](docs/THREED-PAYMENT-IN-IFRAME-OR-POPUP-EXAMPLE.md)
    - [QR Code ile Ödeme Örneği](./docs/QR-CODE-PAYMENT-EXAMPLE.md)
    - [Non Secure Ödeme Örneği](./docs/NON-SECURE-PAYMENT-EXAMPLE.md)
    - [Ön otorizasyon ve Ön otorizasyon kapama](./docs/PRE-AUTH-POST-EXAMPLE.md)
    - [Ödeme İptal](./docs/CANCEL-EXAMPLE.md)
    - [Ödeme İade](./docs/REFUND-EXAMPLE.md)
    - [Ödeme Durum Sorgulama](./docs/STATUS-EXAMPLE.md)
    - [Tarihçe Sorgulama](./docs/HISTORY-EXAMPLE.md)
    - [Özel Sorgular](./docs/CUSTOM-QUERY-EXAMPLE.md)
    - [Taksit Oranları ve Fiyatları Sorgulama](./docs/INSTALLMENT-RATES-PRICES-EXAMPLE.md)
    - [BIN Sorgulama](./docs/BIN-LIST-EXAMPLE.md)
- [Popup Window'da veya iframe içinde ödeme yapma](#popup-windowda-veya-iframe-i%C3%A7inde-%C3%B6deme-yapma)
- [Troubleshoots](#troubleshoots)
- [Genel Kültür](#genel-k%C3%BClt%C3%BCr)
- [Docker ile Örnek Kodların Denenmesi](#docker-ile-%C3%B6rnek-kodlar%C4%B1n-denenmesi)

### Özellikler

[](#özellikler)

- Non Secure E-Commerce modeliyle ödeme (`PosInterface::MODEL_NON_SECURE`)
- 3D Secure modeliyle ödeme (`PosInterface::MODEL_3D_SECURE`)
- 3D Pay modeliyle ödeme (`PosInterface::MODEL_3D_PAY`)
- 3D Host modeliyle ödeme (`PosInterface::MODEL_3D_HOST`)
- Sipariş/Ödeme durum sorgulama (`PosInterface::TX_TYPE_STATUS`)
- Sipariş Tarihçesini sorgulama (`PosInterface::TX_TYPE_ORDER_HISTORY`)
- Sipariş/Para iadesi yapma (`PosInterface::TX_TYPE_REFUND`ve `PosInterface::TX_TYPE_PARTIAL_REFUND`)
- Sipariş iptal etme (`PosInterface::TX_TYPE_CANCEL`)
- Geçmiş işlemleri sorgulama (`PosQueryInterface::TX_TYPE_HISTORY`)
- Özel Sorgular (`PosQueryInterface::TX_TYPE_CUSTOM_QUERY`)
- Taksit oranları sorgulama (`PosQueryInterface::TX_TYPE_INSTALLMENT_RATES`)
- Taksit fiyatları hesaplama (`PosQueryInterface::TX_TYPE_INSTALLMENT_PRICES`)
- BIN sorgulama (`PosQueryInterface::QUERY_TYPE_BIN_LIST`)
- API istek verilerinin Listener'lerle gateway API'na gönderilmeden önce değiştirebilme
- Farklı Para birimler ile ödeme desteği
- Tekrarlanan (Recurring) ödeme talimatları
- [PSR-3](https://www.php-fig.org/psr/psr-3/) logger desteği
- [PSR-18](https://www.php-fig.org/psr/psr-18/) HTTP Client desteği

#### Farklı Gateway'ler Tek İşlem Akışı

[](#farklı-gatewayler-tek-i̇şlem-akışı)

- Bir (**3DSecure**, **3DPay**, **3DHost**, **NonSecure**) ödeme modelden diğerine geçiş çok az değişiklik gerektirir.
- Aynı tip işlem için farklı POS Gateway'lerden dönen değerler aynı formata normalize edilmiş durumda. Yani kod güncellemenize gerek yok.
- Aynı tip işlem için farklı Gateway'lere gönderilecek değerler de genel olarak aynı formatta olacak şekilde normalize edilmiştir.

### Minimum Gereksinimler

[](#minimum-gereksinimler)

- PHP &gt;= 8.0
- ext-dom
- ext-json
- ext-openssl
- ext-libxml
- ext-zlib
- ext-SimpleXML
- [PSR-18](https://packagist.org/providers/psr/http-client-implementation): HTTP Client
- [PSR-14](https://packagist.org/providers/psr/event-dispatcher-implementation): Event Dispatcher

### Kurulum

[](#kurulum)

#### Frameworks

[](#frameworks)

- **Symfony** kurulum için [mews/pos-bundle](https://github.com/mewebstudio/PosBundle)kullanabilirsiniz.
- **Laravel** kurulum için [mews/laravel-pos](https://github.com/mewebstudio/laravel-pos)kullanabilirsiniz.

#### Basic kurulum

[](#basic-kurulum)

```
$ composer require symfony/event-dispatcher mews/pos
```

Kütüphane belli bir HTTP Client'ile zorunlu bağımlılığı yoktur. PSR-18 HTTP Client standardına uyan herhangi bir kütüphane kullanılabilir. Projenizde zaten kurulu PSR-18 uygulaması varsa otomatik onu kullanır.

Veya hızlı başlangıç için:

```
$ composer require php-http/curl-client nyholm/psr7 symfony/event-dispatcher mews/pos
```

Diğer PSR-18 uygulamasını sağlayan kütüphaneler:

Sonra kendi projenizin dizinindeyken alttaki komutu çalıştırarak ayarlar dosyasını projenize kopyalayınız.

```
$ cp ./vendor/mews/pos/config/pos_production.php ./pos_prod_ayarlar.php
```

Test ortamda geliştirecekseniz test ayarları da kopyalayınız:

```
$ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php
```

Kopyaladıktan sonra ayarlardaki kullanmayacağınız banka ayarları silebilirsiniz.

> **`gateway_configs.test_mode` hakkında:**Bu ayar yalnızca **PayTrPos** ve **GarantiPos** için istek verisini etkiler (banka API'sine test/prod göstergesi gönderir). Diğer tüm gateway'lerde test ve production ortamı ayrımı, yukarıdaki endpoint URL'leri ile yapılır; bu gateway'ler için `test_mode: true` ayarlamak bir etkisi olmaz ve logger'da uyarı mesajı oluşturur.

Bundan sonra `Pos` nesnemizi, yeni ayarlarımıza göre oluşturup kullanmamız gerekir. Örnek:

```
// 1. Banka hesabı oluşturunuz (her banka için farklı bir factory metodu vardır)
$account = \Mews\Pos\Factory\AccountFactory::createAkbankPosAccount(
    'akbank-pos',
    'MERCHANT_SAFE_ID',
    'TERMINAL_SAFE_ID',
    'SECRET_KEY'
);

// 2. Event dispatcher oluşturunuz (symfony/event-dispatcher önerilir)
// Elinizde farklı PSR-14 uygumlu EventDispatcher var ise kullanabilirsiniz.
$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();

// 3. Ayarları yükleyip ilgili bankanın dilimini alınız
$yeniAyarlar = require __DIR__ . '/pos_prod_ayarlar.php';
// veya test ortamı için $yeniAyarlar = require __DIR__ . '/pos_test_ayarlar.php';
$bankAyarlari = $yeniAyarlar['banks'][$account->getBankName()];

// 4. Gateway nesnesini oluşturunuz
$pos = \Mews\Pos\Factory\PosFactory::create($account, $bankAyarlari, $eventDispatcher);
```

*Kütüphanede yer alan `pos_production.php` ve `pos_test.php` ayar dosyaları projenizde direk kullanmayınız! Yukarda belirtildiği gibi kopyalayarak kullanmanız tavsiye edilir.*

### Farklı Banka Sanal Poslarını Eklemek

[](#farklı-banka-sanal-poslarını-eklemek)

Projenize kopyaladığınız `./pos_prod_ayarlar.php` dosyasına farklı banka ayarı eklemek için alttaki örneği kullanabilirsiniz.

```
