Bu paket ile amaçlanan; ortak bir arayüz sınıfı ile, tüm Türk banka sanal pos sistemlerinin kullanılabilmesidir.
Gateway | Desktekleyen bankalar |
Desteklenen Ödeme Tipleri |
Desteklenen Sorgular |
---|---|---|---|
Tosla (AKÖde) | ? | NonSecure 3DPay 3DHost |
İptal İade Durum sorgulama Sipariş Tarihçesini sorgulama |
AkbankPos | Akbank | NonSecure 3DSecur 3DPay 3DHost Tekrarlanan Ödeme |
İptal İade Sipariş Tarihçesini sorgulama Geçmiş İşlemleri sorgulama |
EST POS (Asseco/Payten) deprecated |
Akbank TEB İşbank Şekerbank Halkbank Finansbank Ziraat |
NonSecure 3DSecure 3DPay 3DHost 3DPayHost Tekrarlanan Ödeme |
İptal İade Durum sorgulama Sipariş Tarihçesini sorgulama |
EST V3 POS EstPos altyapının daha güvenli (sha512) hash algoritmasıyla uygulaması. |
-----"----- | -----"----- | -----"----- |
PayFlex MPI VPOS V4 | Ziraat Vakıfbank VPOS 7/24 İşbank |
NonSecure 3DSecure Tekrarlanan Ödeme |
İptal İade Durum sorgulama |
PayFlex Common Payment V4 (Ortak Ödeme) |
Ziraat Vakıfbank İşbank |
NonSecure 3DPay 3DHost |
İptal İade |
Garanti Virtual POS | Garanti | NonSecure 3DSecure 3DPay 3DHost Tekrarlanan Ödeme |
İptal İade Durum sorgulama Sipariş Tarihçesini sorgulama Geçmiş İşlemleri sorgulama |
PosNet | YapıKredi | NonSecure 3DSecure |
İptal İade Durum sorgulama |
PosNetV1 (JSON API) |
Albaraka Türk | NonSecure 3DSecure |
İptal İade Durum sorgulama |
PayFor | Finansbank Enpara |
NonSecure 3DSecure 3DPay 3DHost |
İptal İade Durum sorgulama Sipariş Tarihçesini sorgulama Geçmiş İşlemleri sorgulama |
InterPOS | Deniz bank | NonSecure 3DSecure 3DPay 3DHost |
İptal İade Durum sorgulama |
Kuveyt POS TDV2.0.0 | Kuveyt Türk | NonSecure 3DSecure |
İptal İade Durum sorgulama (SOAP API) |
VakifKatilimPos | Vakıf Katılım | NonSecure (test edilmesi gerekiyor) 3DSecure 3DHost (test edilmesi gerekiyor) |
İptal İade Durum sorgulama Sipariş Tarihçesini sorgulama Geçmiş İşlemleri sorgulama |
PosInterface::MODEL_NON_SECURE
)PosInterface::MODEL_3D_SECURE
)PosInterface::MODEL_3D_PAY
)PosInterface::MODEL_3D_HOST
)PosInterface::TX_TYPE_STATUS
)PosInterface::TX_TYPE_ORDER_HISTORY
)PosInterface::TX_TYPE_HISTORY
)PosInterface::TX_TYPE_REFUND
)PosInterface::TX_TYPE_CANCEL
)Son yapılan değişiklikler için CHANGELOG
.
$ composer require symfony/event-dispatcher mews/pos
Kütüphane belli bir HTTP Client'ile zorunlu bağımlılığı yoktur. PSR-18 HTTP Client standarta uyan herhangi bir kütüphane kullanılabilinir. 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: https://packagist.org/providers/psr/http-client-implementation
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 kopyalanız:
$ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php
Kopyaladıktan sonra ayarlardaki kullanmayacağınız banka ayarları silebilirsiniz.
Bundan sonra Pos
nesnemizi, yeni ayarlarımıza göre oluşturup kullanmamız gerekir.
Örnek:
$yeniAyarlar = require __DIR__ . '/pos_prod_ayarlar.php';
// veya test ortamı için $yeniAyarlar = require __DIR__ . '/pos_test_ayarlar.php';
$pos = \Mews\Pos\Factory\PosFactory::createPosGateway($account, $yeniAyarlar, $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._
Projenize kopyaladığınız ./pos_prod_ayarlar.php
dosyasına farklı banka ayarı eklemek için alttaki örneği kullanabilirsiniz.
<?php
return [
// Banka sanal pos tanımlamaları
'banks' => [
'akbank' => [
'name' => 'AKBANK T.A.S.',
'class' => Mews\Pos\Gateways\EstV3Pos::class,
'gateway_endpoints' => [
'payment_api' => 'https://www.sanalakpos.com/fim/api',
'gateway_3d' => 'https://www.sanalakpos.com/fim/est3Dgate',
'gateway_3d_host' => 'https://sanalpos.sanalakpos.com.tr/fim/est3Dgate',
],
],
// Yeni eklenen banka
'isbank' => [ // unique bir isim vermeniz gerekir.
'name' => 'İŞ BANKASI .A.S.',
'class' => \Mews\Pos\Gateways\EstV3Pos::class, // Altyapı sınıfı
'gateway_endpoints' => [
'payment_api' => 'https://sanalpos.isbank.com.tr/fim/api',
'gateway_3d' => 'https://sanalpos.isbank.com.tr/fim/est3Dgate',
],
],
]
];
Örnekleri /examples
ve /docs
dizini içerisinde bulabilirsiniz.
3D ödeme örnek kodlar genel olarak kart bilgilerini website sunucusuna POST
eder (index.php
=> form.php
),
ondan sonra da işlenip gateway'e yönlendiriliyor.
Bu şekilde farklı bankalar arası implementation degişmemesi sağlanmakta (ortak
kredi kart formu ve aynı işlem akışı).
Genel olarak kart bilgilerini, website sunucusuna POST yapmadan,
direk gateway'e yönlendirecek şekilde kullanılabilinir (genelde, banka örnek
kodları bu şekilde implement edilmiş).
Fakat
Müşteriyi banka sayfasına redirect etmeden iframe üzerinden veya popup window üzerinden ödeme akışı examples'da ve /docs'da 3D ödeme ile örnek PHP ve JS kodlar yer almaktadır.
Cookie session kullanığınızda, kullanıcı gatewayden geri websitenize
yönlendirilidiğinde session sıfırlanabilir.
Response'da samesite
değeri set etmeniz
gerekiyor. çözüm.
kütüphane ortam değerini de kontrol etmeyi unutmayınız.
$pos->setTestMode(true);
$pos->setTestMode(false);
(default olarak false
)ortam değeri hem bankaya istek gönderirken hem de gelen isteği işlerken doğru deger olması gerekiyor.
Kütüphane PSR-3 standarta uygun logger uygulamayı destekler. Örnekler: https://packagist.org/providers/psr/log-implementation .
Monolog logger kullanım örnegi:
composer require monolog/monolog
$handler = new \Monolog\Handler\StreamHandler(__DIR__.'/../var/log/pos.log', \Psr\Log\LogLevel::DEBUG);
$logger = new \Monolog\Logger('pos', [$handler]);
$pos = \Mews\Pos\Factory\PosFactory::createPosGateway(
$account,
$config,
$eventDispatcher,
null,
$logger
);
Ödeme modelleri hakkında bilgi edinmek istiyorsanız bu makaleyi inceleyebilirsiniz.
PosInterface::TX_TYPE_PAY_AUTH
PosInterface::TX_TYPE_PAY_PRE_AUTH
orderId
degeri istenir,
bazıları ise ön provizyon sonucu dönen banka tarafındaki orderId
'yi ister.
Satıcı ön otorizasyon isteği iptal etmek isterse de cancel
isteği
gönderir.
Post Otorizasyon İşlemin kütüphanedeki
karşılığı PosInterface::TX_TYPE_PAY_POST_AUTH
.
Bu işlem sadece NonSecure ödeme modeliyle gerçekleşir.TX_TYPE_PAY_AUTH
vs TX_TYPE_PAY_PRE_AUTH
işlemler genelde bütün ödeme
modelleri
(NonSecure, 3DSecure, 3DPay ve 3DHost) tarafından desteklenir.PosInterface::TX_TYPE_REFUND
refund
işlemi kullanmak zorundasınız.
Genel olarak miktar bilgisi istenmez, ancak bazı Gateway'ler ister.
İşlemin kütüphanedeki karşılığı PosInterface::TX_TYPE_CANCEL
docker-compose up -d
komutu çalıştırınız.composer install
çalıştırınız.Note: localhost port 80 boş olması gerekiyor.
Sorunsuz çalışması durumda kod örneklerine http://localhost/payten/3d/index.php
şekilde erişebilirsiniz.
http://localhost/ URL projenin examples
klasörünün içine bakar.
Projenin root klasoründe bu satırı çalıştırmanız gerekiyor
$ ./vendor/bin/phpunit
Değerli yorum, öneri ve katkılarınızı
Sorun bulursanız veya eklenmesi gereken POS sistemi varsa lütfen issue oluşturun.
MIT