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.