diff --git a/README.md b/README.md index 1859aa19..68b136c3 100644 --- a/README.md +++ b/README.md @@ -10,19 +10,19 @@ Bu paket ile amaçlanan; ortak bir arayüz sınıfı ile, tüm Türk banka sanal ### Deskteklenen Payment Gateway'ler / Bankalar: -| Gateway | Desktekleyen
bankalar | Desteklenen
Diğer
İşlemler | Desteklenen Sorgular | -|-------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| Tosla (AKÖde) | ? | NonSecure
3DPay
3DHost | İptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama | -| EST POS
(Asseco/Payten)
_deprecated_ | Akbank
TEB
İşbank
Şekerbank
Halkbank
Finansbank
Ziraat | NonSecure
3DSecure
3DPay
3DHost
3DPayHost | İ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
İşbank | NonSecure
3DSecure
| İ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 | İptal
İade
Durum sorgulama
Sipariş Tarihçesini 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 | Kuveyt Türk | 3DSecure | İptal
İade
Durum sorgulama
(SOAP API) | +| Gateway | Desktekleyen
bankalar | Desteklenen
Ödeme Tipleri | Desteklenen Sorgular | +|-------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| Tosla (AKÖde) | ? | NonSecure
3DPay
3DHost | İptal
İade
Durum sorgulama
Sipariş Tarihçesini 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
İş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 | +| 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 | Kuveyt Türk | 3DSecure | İptal
İade
Durum sorgulama
(SOAP API) | ### Ana başlıklar @@ -84,7 +84,7 @@ Son yapılan değişiklikler için [`CHANGELOG`](./docs/CHANGELOG.md). ### Kurulum ```sh -$ composer require mews/pos +$ 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. @@ -140,11 +140,11 @@ Bundan sonra nesnemizi, yeni ayarlarımıza göre oluşturup kullanmamız gereki ```php //yeni ayar yolu ya da degeri $yeniAyarlar = require './pos_ayarlar.php'; -$pos = \Mews\Pos\Factory\PosFactory::createPosGateway($account, $yeniAyarlar); +$pos = \Mews\Pos\Factory\PosFactory::createPosGateway($account, $yeniAyarlar, $eventDispatcher); ``` ## Ornek Kodlar -`/examples` dizini içerisinde. +`/examples` ve `/docs` dizini içerisinde. 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. diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 75173d96..61784367 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,52 +1,73 @@ # Changelog -## [1.0.0] - 2024-01-?? +## [1.0.0] - 2024-03-30 ### New Features +- `/docs` altında örnek kodlar eklendi (issue #148). - API istek verilerinin gateway API'na gönderilmeden önce değiştirebilme. Bu özellik [psr/event-dispatcher-implementation](https://packagist.org/providers/psr/event-dispatcher-implementation) -uygulaması kullanılarak eklendi. -Kullanım örnekleri için `/examples` ve `/docs` klasörüne bakabilirsiniz. +uygulaması kullanılarak eklendi (issue #178). +Kullanım örnekleri için `/examples` ve `/docs` klasörüne bakınız. Eklenen Eventler: - `\Mews\Pos\Event\Before3DFormHashCalculatedEvent` - `\Mews\Pos\Event\RequestDataPreparedEvent` -- **ToslaPos** (Ak Öde) entegrasonu -- Param birimleri için yeni constantlar eklendi (örn. `PosInterface::CURRENCY_TRY`) +- **ToslaPos** (Ak Öde) entegrasonu (issue #160). +- Para birimleri için yeni constantlar eklendi (örn. `PosInterface::CURRENCY_TRY`) - Yeni `\Mews\Pos\PosInterface::isSupportedTransaction()` methodu eklendi. -Bu method ile kütüphanenin ilgili gateway için hangi işlemleri destekledigini kontrol edebilirsiniz. +Bu method ile kütüphanenin ilgili gateway için hangi işlemleri desteklediğini kontrol edebilirsiniz. ### Changed - Kütüphane PHP sürümü **v7.4**'e yükseltildi. +- Deprecated olan `VakifBankCPPos` ve `PayFlexAccount` gateway sınıflar kaldırıldı. +Yerine `PayFlexCPV4Pos` ve `PayFlexV4Pos` kullanabilirsiniz. +- `AccountFactory::createVakifBankAccount()` method silindi, yerine `AccountFactory::createPayFlexAccount()` kullanabilirsiniz. - Constant'lar `AbstractGateway` sınıfından `PosInterface`'e taşındı. - Constant'lar `AbstractCreditCard` sınıfından `CreditCardInterface`'e taşındı. -- Config yapısı değiştirildi. -**Test** ve **Prod** ortamları için artık farklı dosyalar kullanılması gerekiyor. +- Config yapısı değişdi. +**Test** ve **Prod** ortamları için artık farklı config dosyalar kullanılması gerekiyor. Bu değişim sonucunda `\Mews\Pos\PosInterface::setTestMode();` işleminin çok da önemi kalmadı. -Yine de **GarantiPos** için gereklidir. Yeni formata için `/config` klasörüne bakınız. -- Constant isimleri değiştirildi +Yine de **GarantiPos** için `setTestMode()` kullanılmalıdır. Yeni format için `/config` klasörüne bakınız. +- Bazı constant isimleri değişdi - `TX_PAY` => `TX_TYPE_PAY_AUTH` - `TX_PRE_PAY` => `TX_TYPE_PAY_PRE_AUTH` - `TX_POST_PAY` => `TX_TYPE_PAY_POST_AUTH` - `\Mews\Pos\PosInterface::prepare()` methodu kaldırıldı. - Pos sınıfları oluşturmak için kullanılan `\Mews\Pos\Factory\PosFactory::createPosGateway()` -methodu artık konfigürasyon yolunu (örnek: `./config/pos_test.php`) kabul etmiyor. +methodu artık konfigürasyon yolunu (örn. `./config/pos_test.php`) kabul etmiyor. Config verisi **array** olarak sağlanması gerekiyor. - `\Mews\Pos\Factory\PosFactory::createPosGateway()`'a **EventDispatcher** parametresi eklendi. -- $order verisinden bir zorunlu olmayan alanlar kaldırıldı: +- `$order` verisinden bazı zorunlu olmayan alanlar kaldırıldı: - email - name - user_id - rand (artık kütüphane kendisi oluşturuyor) - _vftcode_ (PosNet), _koiCode_ (PosNet), _imece_ kart (EstPos), _extraData_ (EstPos), -_callbackUrl_ (EstPos) gibi ekstra değerler kütüphanedeki kodundan kaldırıldı. +_callbackUrl_ (EstPos) gibi ekstra değerler kütüphaneden kaldırıldı. Yerine yeni eklenen eventlarla API isteklere ekstra değerler ekleyebilirsiniz. -Kullanım örneği için örnek kodlara bakabilirsiniz. +Kullanım örneği için örnek kodlara bakınız. - **Tekrarlanan ödeme** yapısı biraz değiştirildi (örnek kodlara bakınız). - `$response = \Mews\Pos\PosInterface::getResponse();` veri yapısına birkaç ekstra veri eklendi. -Artık, ödeme **iptal**, **iade**, **durum** sorgulama işlemleri için `$response` içindeki veriler yeterli. -- `PosInterface`'e ödeme durumu (order_status) için yeni constant'lar -(örn: `PAYMENT_STATUS_ERROR`, `PAYMENT_STATUS_PAYMENT_COMPLETED`) eklendi +Artık ödeme **iptal**, **iade**, **durum** sorgulama işlemleri yapabilmek için `$response` içindeki veriler yeterli. +- `PosInterface`'e ödeme durumu response'unda yer alan `order_status` alanı için yeni constant'lar +(örn: `PAYMENT_STATUS_ERROR`, `PAYMENT_STATUS_PAYMENT_COMPLETED`) tanıtıldı ve bu yeni constant'ları kullanacak şekilde güncellemeler yapıldı. +- Yeni `PosInterface::orderHistory()` methodu eklendi. +Siparişe ayıt geçmiş işlemleri sorgulamak için bu yeni methodu kullanmanız gerekiyor. +- Eski `PosInterface::history()` methodu sipariş bilgisi olmadan tarih gibi kriterlerle yapılan işlemler sorgulanabilinir. +- `history` (yeni `orderHistory`) ve `status` işlemlerin input yapısı normalize edildi. +- `history` (yeni `orderHistory`) ve `status` işlemlerin response yapısı normalize edildi. +- `PayForPos`'un **history** response'u normalize edildi. +- `response` yapısında bazı parametre isimleri değişdi: + - trans_id => transaction_id + - trans_time => transaction_time +- `EstPos` ve `EstV3Pos` response'undan `extra` verisi kaldırıldı. +- `response` yapısına `installment_count` ve `transaction_time` değerleri eklendi. +- `CreditCardFactory::create()` method ismi `CreditCardFactory::createForGateway()` olarak değiştirildi. + +### Fixed +- `PayFor` history response'i işlerken oluşan exception düzeltildi. +- Fix issue #176 - `EstPos` ve `EstV3Pos`'dan **callbackUrl** kaldırıldı. +- Fix issue #187 - 3D_SECURE ödemede 3D hash kontrolü artık MD/3D status kontrolünden sonra yapılıyor. ## [0.16.0] - 2023-11-20 ### New Features diff --git a/docs/THREED-PAYMENT-EXAMPLE.md b/docs/THREED-PAYMENT-EXAMPLE.md index 2235fe6c..5116eb8b 100644 --- a/docs/THREED-PAYMENT-EXAMPLE.md +++ b/docs/THREED-PAYMENT-EXAMPLE.md @@ -79,6 +79,23 @@ $order = [ 'lang' => \Mews\Pos\Gateways\PosInterface::LANG_TR, // Kullanıcının yönlendirileceği banka gateway sayfasının ve gateway'den dönen mesajların dili. ]; +if ($tekrarlanan) { // recurring payments + // Desteleyen Gatewayler: GarantiPos, EstPos, EstV3Pos, PayFlexV4 + $order['installment'] = 0; // Tekrarlayan ödemeler taksitli olamaz. + + $recurringFrequency = 3; + $recurringFrequencyType = 'MONTH'; // DAY|WEEK|MONTH|YEAR + $endPeriod = $installment * $recurringFrequency; + + $order['recurring'] = [ + 'frequency' => $recurringFrequency, + 'frequencyType' => $recurringFrequencyType, + 'installment' => $installment, + 'startDate' => new \DateTimeImmutable(), // GarantiPos optional + 'endDate' => (new \DateTime())->modify(\sprintf('+%d %s', $endPeriod, $recurringFrequencyType)), // Sadece PayFlexV4'te zorunlu + ]; +} + $session->set('order', $order); // Kredi kartı bilgileri diff --git a/tests/Functional/PaymentTestTrait.php b/tests/Functional/PaymentTestTrait.php index c1cda0b6..5a05ef5d 100644 --- a/tests/Functional/PaymentTestTrait.php +++ b/tests/Functional/PaymentTestTrait.php @@ -33,7 +33,7 @@ private function createPaymentOrder( ]; if ($tekrarlanan) { - // Desteleyen Gatewayler: GarantiPos, EstPos, PayFlexV4 + // Desteleyen Gatewayler: GarantiPos, EstPos, EstV3Pos, PayFlexV4 $order['installment'] = 0; // Tekrarlayan ödemeler taksitli olamaz.