mewebstudio / pos

Türk bankaları için sanal pos paketi (PHP)
Other
255 stars 101 forks source link
3d 3dhost 3dpay 3dsecure asseco denizbank est garanti interpos kuveytpos payfor php pos posnet qnb-finansbank sanalpos vakifbank

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

Version Monthly Downloads License PHP Version Require

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

Deskteklenen Payment Gateway'ler / Bankalar:

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

Ana başlıklar

Ozellikler

Farkli Gateway'ler Tek islem akisi

Latest updates

Son yapılan değişiklikler için CHANGELOG.

Minimum Gereksinimler

Kurulum

Frameworks

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 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._

Farkli Banka Sanal Poslarini Eklemek

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',
            ],
        ],
    ]
];

Ornek Kodlar

Ö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

Popup Windowda veya Iframe icinde odeme yapma

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.

Dikkat edilmesi gerekenler

Troubleshoots

Session sıfırlanması

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.

Shared hosting'lerde IP tanımsız hatası

Debugging

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
);

Genel Kultur

Ödeme modelleri hakkında bilgi edinmek istiyorsanız bu makaleyi inceleyebilirsiniz.

Otorizasyon, Ön Otorizasyon, Ön Provizyon Kapama İşlemler arasındaki farklar

Refund ve Cancel işlemler arasındaki farklar

Docker ile test ortami

  1. Makinenizde Docker kurulu olması gerekir.
  2. Projenin root klasöründe docker-compose up -d komutu çalıştırınız.
  3. docker container'de 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.

Unit testler çalıştırma

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.

License

MIT