diff --git a/README.md b/README.md
index 5a42f288..e3766135 100644
--- a/README.md
+++ b/README.md
@@ -10,21 +10,21 @@ 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
İş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 TDV2.0.0 | Kuveyt Türk | NonSecure
3DSecure | İptal
İade
Durum sorgulama
(SOAP API) |
-| VakifKatilimPos
(test edilmesi gerekiyor) | Vakıf Katılım | NonSecure
3DSecure
3DHost | İptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama
Geçmiş İşlemleri sorgulama |
+| 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 |
+| 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
(test edilmesi gerekiyor) | Vakıf Katılım | NonSecure
3DSecure
3DHost | İptal
İade
Durum sorgulama
Sipariş Tarihçesini sorgulama
Geçmiş İşlemleri sorgulama |
### Ana başlıklar
@@ -96,6 +96,11 @@ Son yapılan değişiklikler için [`CHANGELOG`](./docs/CHANGELOG.md).
### Kurulum
+#### Frameworks
+- **Symfony** kurulum için [mews/pos-bundle](https://github.com/mewebstudio/PosBundle) kullanabilirsiniz.
+
+#### Basic kurulum
+
```sh
$ composer require symfony/event-dispatcher mews/pos
```
@@ -316,12 +321,10 @@ $pos = \Mews\Pos\Factory\PosFactory::createPosGateway(
1. Makinenizde Docker kurulu olması gerekir.
2. Projenin root klasöründe `docker-compose up -d` komutu çalıştırınız.
-3. ```sh
- $ composer require mews/pos
- ```
+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/estpos/3d/index.php
+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.
diff --git a/composer.json b/composer.json
index 024a8f61..116c0a9b 100644
--- a/composer.json
+++ b/composer.json
@@ -22,8 +22,8 @@
"psr/event-dispatcher-implementation": "*",
"psr/http-client-implementation": "*",
"psr/log": "^1.1 || ^2.0 || ^3.0",
- "symfony/http-foundation": "^5.0 || ^6.0",
- "symfony/serializer": "^5.0 || ^6.0"
+ "symfony/http-foundation": "^4.0 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/serializer": "^4.0 || ^5.0 || ^6.0 || ^7.0"
},
"autoload": {
"psr-4": {
diff --git a/config/pos_test.php b/config/pos_test.php
index 285837fc..cad0b698 100644
--- a/config/pos_test.php
+++ b/config/pos_test.php
@@ -11,9 +11,9 @@
'gateway_3d_host' => 'https://virtualpospaymentgatewaypre.akbank.com/payhosting',
],
],
- 'akbankv3' => [
+ 'payten_v3_hash' => [
'name' => 'AKBANK T.A.S.',
- 'class' => Mews\Pos\Gateways\EstPos::class,
+ 'class' => Mews\Pos\Gateways\EstV3Pos::class,
'gateway_endpoints' => [
'payment_api' => 'https://entegrasyon.asseco-see.com.tr/fim/api',
'gateway_3d' => 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate',
@@ -114,7 +114,7 @@
'query_api' => 'https://boatest.kuveytturk.com.tr/BOA.Integration.WCFService/BOA.Integration.VirtualPos/VirtualPosService.svc?wsdl',
],
],
- 'vakif-katilim' => [
+ 'vakif-katilim' => [
'name' => 'Vakıf Katılım',
'class' => Mews\Pos\Gateways\VakifKatilimPos::class,
'gateway_endpoints' => [
diff --git a/docs/CANCEL-EXAMPLE.md b/docs/CANCEL-EXAMPLE.md
index 5cc3961a..fbf764c2 100644
--- a/docs/CANCEL-EXAMPLE.md
+++ b/docs/CANCEL-EXAMPLE.md
@@ -11,7 +11,8 @@ $ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php
require './vendor/autoload.php';
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
@@ -69,8 +70,7 @@ function createCancelOrder(string $gatewayClass, array $lastResponse, string $ip
$cancelOrder['transaction_id'] = $lastResponse['transaction_id'];
} elseif (\Mews\Pos\Gateways\PosNetV1Pos::class === $gatewayClass || \Mews\Pos\Gateways\PosNet::class === $gatewayClass) {
/**
- * payment_model:
- * siparis olusturulurken kullanilan odeme modeli
+ * payment_model: siparis olusturulurken kullanilan odeme modeli.
* orderId'yi dogru şekilde formatlamak icin zorunlu.
*/
$cancelOrder['payment_model'] = $lastResponse['payment_model'];
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 3b0e75ab..272c032f 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -1,4 +1,13 @@
# Changelog
+## [1.2.0] - 2024-05-19
+
+### New Features
+- **EstPos** TROY kart desteği eklendi. (issue #205)
+
+### Changed
+- Symfony v4 ve v7 desteği eklendi
+- Atılan exception'lar daha spesifik olacak şekilde refactor edildi.
+
## [1.1.0] - 2024-04-26
### New Features
diff --git a/docs/HISTORY-EXAMPLE.md b/docs/HISTORY-EXAMPLE.md
index 768e19a9..a3e5434f 100644
--- a/docs/HISTORY-EXAMPLE.md
+++ b/docs/HISTORY-EXAMPLE.md
@@ -11,7 +11,8 @@ $ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php
require './vendor/autoload.php';
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
@@ -45,15 +46,14 @@ require 'config.php';
function createHistoryOrder(string $gatewayClass, array $extraData): array
{
- $order = [];
-
+ $order = [];
+ $txTime = new \DateTimeImmutable();
if (\Mews\Pos\Gateways\PayForPos::class === $gatewayClass) {
$order = [
// odeme tarihi
- 'transaction_date' => $extraData['transaction_date'] ?? new \DateTimeImmutable(),
+ 'transaction_date' => $extraData['transaction_date'] ?? $txTime,
];
} elseif (\Mews\Pos\Gateways\VakifKatilimPos::class === $gatewayClass) {
- $txTime = new \DateTimeImmutable();
$order = [
'page' => 1,
'page_size' => 20,
@@ -61,7 +61,6 @@ function createHistoryOrder(string $gatewayClass, array $extraData): array
'end_date' => $txTime->modify('+1 day'),
];
} elseif (\Mews\Pos\Gateways\AkbankPos::class === $gatewayClass) {
- $txTime = new \DateTimeImmutable();
$order = [
// Gün aralığı 1 günden fazla girilemez
'start_date' => $txTime->modify('-23 hour'),
diff --git a/docs/NON-SECURE-PAYMENT-EXAMPLE.md b/docs/NON-SECURE-PAYMENT-EXAMPLE.md
index 948ef404..42941560 100644
--- a/docs/NON-SECURE-PAYMENT-EXAMPLE.md
+++ b/docs/NON-SECURE-PAYMENT-EXAMPLE.md
@@ -14,7 +14,8 @@ $paymentModel = \Mews\Pos\PosInterface::MODEL_NON_SECURE;
$transactionType = \Mews\Pos\PosInterface::TX_TYPE_PAY_AUTH;
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
diff --git a/docs/ORDER-HISTORY-EXAMPLE.md b/docs/ORDER-HISTORY-EXAMPLE.md
index 064bbcd3..cb4230d9 100644
--- a/docs/ORDER-HISTORY-EXAMPLE.md
+++ b/docs/ORDER-HISTORY-EXAMPLE.md
@@ -11,7 +11,8 @@ $ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php
require './vendor/autoload.php';
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
@@ -94,7 +95,12 @@ $lastResponse = $session->get('last_response');
$order = createOrderHistoryOrder(get_class($pos), $lastResponse);
-$pos->orderHistory($order);
+try {
+ $pos->orderHistory($order);
+} catch (\Error $e) {
+ var_dump($e);
+ exit;
+}
$response = $pos->getResponse();
var_dump($response);
```
diff --git a/docs/PRE-AUTH-POST-EXAMPLE.md b/docs/PRE-AUTH-POST-EXAMPLE.md
index 4704daf5..58017fd7 100644
--- a/docs/PRE-AUTH-POST-EXAMPLE.md
+++ b/docs/PRE-AUTH-POST-EXAMPLE.md
@@ -22,7 +22,8 @@ $paymentModel = \Mews\Pos\PosInterface::MODEL_3D_SECURE;
$transactionType = \Mews\Pos\PosInterface::TX_TYPE_PAY_PRE_AUTH;
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
@@ -64,15 +65,20 @@ $order = [
'amount' => 1.01,
'currency' => \Mews\Pos\PosInterface::CURRENCY_TRY, //optional. default: TRY
'installment' => 0, //0 ya da 1'den büyük değer, optional. default: 0
-
- // Success ve Fail URL'ler farklı olabilir ama kütüphane success ve fail için aynı kod çalıştırır.
- // success_url ve fail_url'lerin aynı olmasın fayda var çünkü bazı gateyway'ler tek bir URL kabul eder.
- 'success_url' => 'https://example.com/response.php',
- 'fail_url' => 'https://example.com/response.php',
-
- //lang degeri verilmezse account (EstPosAccount) dili kullanılacak
+ // lang degeri verilmezse account (EstPosAccount) dili kullanılacak
'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 (in_array($paymentModel, [
+ PosInterface::MODEL_3D_SECURE,
+ PosInterface::MODEL_3D_PAY,
+ PosInterface::MODEL_3D_HOST,
+ PosInterface::MODEL_3D_PAY_HOSTING,
+ ], true)) {
+ // Success ve Fail URL'ler farklı olabilir ama kütüphane success ve fail için aynı kod çalıştırır.
+ // success_url ve fail_url'lerin aynı olmasın fayda var çünkü bazı gateyway'ler tek bir URL kabul eder.
+ $order['success_url'] = 'https://example.com/response.php';
+ $order['fail_url'] = 'https://example.com/response.php';
+ }
$session->set('order', $order);
@@ -109,7 +115,7 @@ try {
$transactionType,
$card
);
-} catch (\Throwable $e) {
+} catch (\Exception|\Error $e) {
var_dump($e);
exit;
}
@@ -172,6 +178,9 @@ try {
} catch (\Mews\Pos\Exceptions\HashMismatchException $e) {
// Bankadan gelen verilerin bankaya ait olmadığında bu exception oluşur.
// Banka API bilgileriniz hatalı ise de oluşur.
+} catch (\Exception|\Error $e) {
+ var_dump($e);
+ exit;
}
```
@@ -221,6 +230,9 @@ $order = createPostPayOrder(
$postAuthAmount
);
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR START
+// ============================================================================================
/** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */
$eventDispatcher->addListener(
\Mews\Pos\Event\RequestDataPreparedEvent::class,
@@ -234,10 +246,14 @@ $eventDispatcher->addListener(
}
}
});
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR END
+// ============================================================================================
+
try {
$pos->payment($paymentModel, $order, $transaction);
var_dump($response);
-catch (\Exception $e) {
+} catch (\Exception|\Error $e) {
var_dump($e);
exit;
}
diff --git a/docs/REFUND-EXAMPLE.md b/docs/REFUND-EXAMPLE.md
index 704aa488..b7b529b5 100644
--- a/docs/REFUND-EXAMPLE.md
+++ b/docs/REFUND-EXAMPLE.md
@@ -11,7 +11,8 @@ $ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php
require './vendor/autoload.php';
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
@@ -59,7 +60,6 @@ function createRefundOrder(string $gatewayClass, array $lastResponse, string $ip
$refundOrder['transaction_id'] = $lastResponse['transaction_id'];
} elseif (\Mews\Pos\Gateways\VakifKatilimPos::class === $gatewayClass) {
$refundOrder['remote_order_id'] = $lastResponse['remote_order_id']; // banka tarafındaki order id
- $refundOrder['amount'] = $lastResponse['amount'];
// on otorizasyon islemin iadesi icin PosInterface::TX_TYPE_PAY_PRE_AUTH saglanmasi gerekiyor
$refundOrder['transaction_type'] = $lastResponse['transaction_type'] ?? PosInterface::TX_TYPE_PAY_AUTH;
} elseif (\Mews\Pos\Gateways\PayFlexV4Pos::class === $gatewayClass || \Mews\Pos\Gateways\PayFlexCPV4Pos::class === $gatewayClass) {
@@ -67,8 +67,7 @@ function createRefundOrder(string $gatewayClass, array $lastResponse, string $ip
$refundOrder['transaction_id'] = $lastResponse['transaction_id'];
} elseif (\Mews\Pos\Gateways\PosNetV1Pos::class === $gatewayClass || \Mews\Pos\Gateways\PosNet::class === $gatewayClass) {
/**
- * payment_model:
- * siparis olusturulurken kullanilan odeme modeli
+ * payment_model: siparis olusturulurken kullanilan odeme modeli.
* orderId'yi dogru şekilde formatlamak icin zorunlu.
*/
$refundOrder['payment_model'] = $lastResponse['payment_model'];
diff --git a/docs/STATUS-EXAMPLE.md b/docs/STATUS-EXAMPLE.md
index 08bdb785..1dbdc183 100644
--- a/docs/STATUS-EXAMPLE.md
+++ b/docs/STATUS-EXAMPLE.md
@@ -11,7 +11,8 @@ $ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php
require './vendor/autoload.php';
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
@@ -55,8 +56,7 @@ function createStatusOrder(string $gatewayClass, array $lastResponse, string $ip
}
if (\Mews\Pos\Gateways\PosNetV1Pos::class === $gatewayClass || \Mews\Pos\Gateways\PosNet::class === $gatewayClass) {
/**
- * payment_model:
- * siparis olusturulurken kullanilan odeme modeli
+ * payment_model: siparis olusturulurken kullanilan odeme modeli.
* orderId'yi dogru sekilde formatlamak icin zorunlu.
*/
$statusOrder['payment_model'] = $lastResponse['payment_model'];
diff --git a/docs/THREED-PAYMENT-EXAMPLE.md b/docs/THREED-PAYMENT-EXAMPLE.md
index 888f9e38..b1714a4a 100644
--- a/docs/THREED-PAYMENT-EXAMPLE.md
+++ b/docs/THREED-PAYMENT-EXAMPLE.md
@@ -30,7 +30,8 @@ $paymentModel = \Mews\Pos\PosInterface::MODEL_3D_SECURE;
$transactionType = \Mews\Pos\PosInterface::TX_TYPE_PAY_AUTH;
// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
@@ -99,10 +100,10 @@ if ($tekrarlanan = false) { // recurring payments
$session->set('order', $order);
// Kredi kartı bilgileri
-try {
$card = null;
if (\Mews\Pos\PosInterface::MODEL_3D_HOST !== $paymentModel) {
- $card = \Mews\Pos\Factory\CreditCardFactory::createForGateway(
+ try {
+ $card = \Mews\Pos\Factory\CreditCardFactory::createForGateway(
$pos,
$_POST['card_number'],
$_POST['card_year'],
@@ -126,6 +127,9 @@ if (\Mews\Pos\PosInterface::MODEL_3D_HOST !== $paymentModel) {
}
}
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR START
+// ============================================================================================
try {
/** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */
$eventDispatcher->addListener(RequestDataPreparedEvent::class, function (RequestDataPreparedEvent $event) {
@@ -211,10 +215,13 @@ try {
$transactionType,
$card
);
-} catch (\Throwable $e) {
+} catch (\Exception|\Error $e) {
var_dump($e);
exit;
}
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR END
+// ============================================================================================
```
```html
@@ -263,6 +270,10 @@ if (\Mews\Pos\PosInterface::MODEL_3D_HOST !== $paymentModel) {
}
}
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR START
+// ============================================================================================
+
// //Isbank İMECE kart ile MODEL_3D_SECURE yöntemiyle ödeme için ekstra alanların eklenme örneği
// $eventDispatcher->addListener(RequestDataPreparedEvent::class, function (RequestDataPreparedEvent $event) use ($paymentModel) {
// if ($event->getTxType() === \Mews\Pos\PosInterface::TX_TYPE_PAY_AUTH && \Mews\Pos\PosInterface::MODEL_3D_SECURE === $paymentModel) {
@@ -273,6 +284,11 @@ if (\Mews\Pos\PosInterface::MODEL_3D_HOST !== $paymentModel) {
// }
// });
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR END
+// ============================================================================================
+
+
// Ödeme tamamlanıyor,
try {
$pos->payment(
@@ -296,5 +312,8 @@ try {
} catch (\Mews\Pos\Exceptions\HashMismatchException $e) {
// Bankadan gelen verilerin bankaya ait olmadığında bu exception oluşur.
// Banka API bilgileriniz hatalı ise de oluşur.
+} catch (\Error $e) {
+ var_dump($e);
+ exit;
}
```
diff --git a/docs/THREED-SECURE-AND-PAY-PAYMENT-IN-MODALBOX-EXAMPLE.md b/docs/THREED-SECURE-AND-PAY-PAYMENT-IN-MODALBOX-EXAMPLE.md
index ccebf35c..75a50264 100644
--- a/docs/THREED-SECURE-AND-PAY-PAYMENT-IN-MODALBOX-EXAMPLE.md
+++ b/docs/THREED-SECURE-AND-PAY-PAYMENT-IN-MODALBOX-EXAMPLE.md
@@ -28,8 +28,8 @@ $session->start();
$paymentModel = \Mews\Pos\PosInterface::MODEL_3D_SECURE;
$transactionType = \Mews\Pos\PosInterface::TX_TYPE_PAY_AUTH;
-// API kullanıcı bilgileri
-// AccountFactory'de kullanılacak method Gateway'e göre değişir. Örnek kodlara bakınız.
+// AccountFactory'de kullanılacak method Gateway'e göre değişir!!!
+// /examples altındaki örnek kodlara bakınız.
$account = \Mews\Pos\Factory\AccountFactory::createEstPosAccount(
'akbank', //pos config'deki ayarın index name'i
'yourClientID',
diff --git a/examples/_common-codes/3d-host/index.php b/examples/_common-codes/3d-host/index.php
index 22a736ff..1e86d75a 100644
--- a/examples/_common-codes/3d-host/index.php
+++ b/examples/_common-codes/3d-host/index.php
@@ -10,8 +10,9 @@
require '../../_templates/_header.php';
-$order = getNewOrder(
+$order = createPaymentOrder(
$pos,
+ $paymentModel,
$baseUrl,
$ip,
$request->get('currency', PosInterface::CURRENCY_TRY),
@@ -21,38 +22,44 @@
);
$session->set('order', $order);
-/** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */
-$eventDispatcher->addListener(RequestDataPreparedEvent::class, function (RequestDataPreparedEvent $event) {
- /**
- * Burda istek banka API'na gonderilmeden once gonderilecek veriyi degistirebilirsiniz.
- * Ornek:
- * if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH) {
- * $data = $event->getRequestData();
- * $data['abcd'] = '1234';
- * $event->setRequestData($data);
- * }
- *
- * Bu asamada bu Event sadece PosNet, PayFlexCPV4Pos, PayFlexV4Pos, KuveytPos gatewayler'de trigger edilir.
- */
-});
+$formVerisiniOlusturmakIcinApiIstegiGonderenGatewayler = [
+ \Mews\Pos\Gateways\PosNet::class,
+ \Mews\Pos\Gateways\KuveytPos::class,
+ \Mews\Pos\Gateways\ToslaPos::class,
+ \Mews\Pos\Gateways\VakifKatilimPos::class,
+ \Mews\Pos\Gateways\PayFlexV4Pos::class,
+ \Mews\Pos\Gateways\PayFlexCPV4Pos::class,
+];
+if (in_array(get_class($pos), $formVerisiniOlusturmakIcinApiIstegiGonderenGatewayler, true)) {
+ /** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */
+ $eventDispatcher->addListener(RequestDataPreparedEvent::class, function (RequestDataPreparedEvent $event) {
+// // Burda istek banka API'na gonderilmeden once gonderilecek veriyi degistirebilirsiniz.
+// // Ornek:
+// if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH) {
+// $data = $event->getRequestData();
+// $data['abcd'] = '1234';
+// $event->setRequestData($data);
+// }
+ });
+}
+
/**
* Bu Event'i dinleyerek 3D formun hash verisi hesaplanmadan önce formun input array içireğini güncelleyebilirsiniz.
*/
$eventDispatcher->addListener(Before3DFormHashCalculatedEvent::class, function (Before3DFormHashCalculatedEvent $event) {
- /**
- * Örneğin İşbank İmece Kart ile ödeme yaparken aşağıdaki verilerin eklenmesi gerekiyor:
- * $supportedPaymentModels = [
- * \Mews\Pos\Gateways\PosInterface::MODEL_3D_PAY,
- * \Mews\Pos\Gateways\PosInterface::MODEL_3D_PAY_HOSTING,
- * \Mews\Pos\Gateways\PosInterface::MODEL_3D_HOST,
- * ];
- * if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH && in_array($event->getPaymentModel(), $supportedPaymentModels, true)) {
- * $formInputs = $event->getFormInputs();
- * $formInputs['IMCKOD'] = '9999'; // IMCKOD bilgisi bankadan alınmaktadır.
- * $formInputs['FDONEM'] = '5'; // Ödemenin faizsiz ertelenmesini istediğiniz dönem sayısı.
- * $event->setFormInputs($formInputs);
- * }*/
+ // Örneğin İşbank İmece Kart ile ödeme yaparken aşağıdaki verilerin eklenmesi gerekiyor:
+// $supportedPaymentModels = [
+// \Mews\Pos\PosInterface::MODEL_3D_PAY,
+// \Mews\Pos\PosInterface::MODEL_3D_PAY_HOSTING,
+// \Mews\Pos\PosInterface::MODEL_3D_HOST,
+// ];
+// if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH && in_array($event->getPaymentModel(), $supportedPaymentModels, true)) {
+// $formInputs = $event->getFormInputs();
+// $formInputs['IMCKOD'] = '9999'; // IMCKOD bilgisi bankadan alınmaktadır.
+// $formInputs['FDONEM'] = '5'; // Ödemenin faizsiz ertelenmesini istediğiniz dönem sayısı.
+// $event->setFormInputs($formInputs);
+// }
});
try {
diff --git a/examples/_common-codes/3d/form.php b/examples/_common-codes/3d/form.php
index 725ef665..1d6e8eab 100644
--- a/examples/_common-codes/3d/form.php
+++ b/examples/_common-codes/3d/form.php
@@ -21,8 +21,9 @@
exit();
}
$transaction = $request->get('tx', PosInterface::TX_TYPE_PAY_AUTH);
-$order = getNewOrder(
+$order = createPaymentOrder(
$pos,
+ $paymentModel,
$baseUrl,
$ip,
$request->get('currency', PosInterface::CURRENCY_TRY),
@@ -40,157 +41,175 @@
$session->set('card', $request->request->all());
}
-try {
-
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR START
+// ============================================================================================
+
+$formVerisiniOlusturmakIcinApiIstegiGonderenGatewayler = [
+ \Mews\Pos\Gateways\PosNet::class,
+ \Mews\Pos\Gateways\KuveytPos::class,
+ \Mews\Pos\Gateways\ToslaPos::class,
+ \Mews\Pos\Gateways\VakifKatilimPos::class,
+ \Mews\Pos\Gateways\PayFlexV4Pos::class,
+ \Mews\Pos\Gateways\PayFlexCPV4Pos::class,
+];
+if (in_array(get_class($pos), $formVerisiniOlusturmakIcinApiIstegiGonderenGatewayler, true)) {
/** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */
$eventDispatcher->addListener(RequestDataPreparedEvent::class, function (RequestDataPreparedEvent $event) {
- /**
- * Burda istek banka API'na gonderilmeden once gonderilecek veriyi degistirebilirsiniz.
- * Ornek:
- * if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH) {
- * $data = $event->getRequestData();
- * $data['abcd'] = '1234';
- * $event->setRequestData($data);
- * }
- *
- * Bu asamada bu Event sadece PosNet, PayFlexCPV4Pos, PayFlexV4Pos, KuveytPos, ToslaPos gatewayler'de trigger edilir.
- */
- });
+ //Burda istek banka API'na gonderilmeden once gonderilecek veriyi degistirebilirsiniz.
+ // Ornek:
+// if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH) {
+// $data = $event->getRequestData();
+// $data['abcd'] = '1234';
+// $event->setRequestData($data);
+// }
+ });
+}
- // KuveytVos TDV2.0.0 icin ozel biri durum
- $eventDispatcher->addListener(
- RequestDataPreparedEvent::class,
- function (RequestDataPreparedEvent $requestDataPreparedEvent) use ($pos): void {
- if (get_class($pos) !== \Mews\Pos\Gateways\KuveytPos::class) {
- return;
- }
- // KuveytPos TDV2.0.0 icin zorunlu eklenmesi gereken ekstra alanlar:
- $additionalRequestDataForKuveyt = [
- 'DeviceData' => [
- /**
- * DeviceChannel : DeviceData alanı içerisinde gönderilmesi beklenen işlemin yapıldığı cihaz bilgisi.
- * 2 karakter olmalıdır. 01-Mobil, 02-Web Browser için kullanılmalıdır.
- */
- 'DeviceChannel' => '02',
- ],
- 'CardHolderData' => [
- /**
- * BillAddrCity: Kullanılan kart ile ilişkili kart hamilinin fatura adres şehri.
- * Maksimum 50 karakter uzunluğunda olmalıdır.
- */
- 'BillAddrCity' => 'İstanbul',
- /**
- * BillAddrCountry Kullanılan kart ile ilişkili kart hamilinin fatura adresindeki ülke kodu.
- * Maksimum 3 karakter uzunluğunda olmalıdır.
- * ISO 3166-1 sayısal üç haneli ülke kodu standardı kullanılmalıdır.
- */
- 'BillAddrCountry' => '792',
- /**
- * BillAddrLine1: Kullanılan kart ile ilişkili kart hamilinin teslimat adresinde yer alan sokak vb. bilgileri içeren açık adresi.
- * Maksimum 150 karakter uzunluğunda olmalıdır.
- */
- 'BillAddrLine1' => 'XXX Mahallesi XXX Caddesi No 55 Daire 1',
- /**
- * BillAddrPostCode: Kullanılan kart ile ilişkili kart hamilinin fatura adresindeki posta kodu.
- */
- 'BillAddrPostCode' => '34000',
+// KuveytVos TDV2.0.0 icin ozel biri durum
+$eventDispatcher->addListener(
+ RequestDataPreparedEvent::class,
+ function (RequestDataPreparedEvent $requestDataPreparedEvent) use ($pos): void {
+ if (get_class($pos) !== \Mews\Pos\Gateways\KuveytPos::class) {
+ return;
+ }
+ // KuveytPos TDV2.0.0 icin zorunlu eklenmesi gereken ekstra alanlar:
+ $additionalRequestDataForKuveyt = [
+ 'DeviceData' => [
+ /**
+ * DeviceChannel : DeviceData alanı içerisinde gönderilmesi beklenen işlemin yapıldığı cihaz bilgisi.
+ * 2 karakter olmalıdır. 01-Mobil, 02-Web Browser için kullanılmalıdır.
+ */
+ 'DeviceChannel' => '02',
+ ],
+ 'CardHolderData' => [
+ /**
+ * BillAddrCity: Kullanılan kart ile ilişkili kart hamilinin fatura adres şehri.
+ * Maksimum 50 karakter uzunluğunda olmalıdır.
+ */
+ 'BillAddrCity' => 'İstanbul',
+ /**
+ * BillAddrCountry Kullanılan kart ile ilişkili kart hamilinin fatura adresindeki ülke kodu.
+ * Maksimum 3 karakter uzunluğunda olmalıdır.
+ * ISO 3166-1 sayısal üç haneli ülke kodu standardı kullanılmalıdır.
+ */
+ 'BillAddrCountry' => '792',
+ /**
+ * BillAddrLine1: Kullanılan kart ile ilişkili kart hamilinin teslimat adresinde yer alan sokak vb. bilgileri içeren açık adresi.
+ * Maksimum 150 karakter uzunluğunda olmalıdır.
+ */
+ 'BillAddrLine1' => 'XXX Mahallesi XXX Caddesi No 55 Daire 1',
+ /**
+ * BillAddrPostCode: Kullanılan kart ile ilişkili kart hamilinin fatura adresindeki posta kodu.
+ */
+ 'BillAddrPostCode' => '34000',
+ /**
+ * BillAddrState: CardHolderData alanı içerisinde gönderilmesi beklenen ödemede kullanılan kart ile ilişkili kart hamilinin fatura adresindeki il veya eyalet bilgisi kodu.
+ * ISO 3166-2'de tanımlı olan il/eyalet kodu olmalıdır.
+ */
+ 'BillAddrState' => '40',
+ /**
+ * Email: Kullanılan kart ile ilişkili kart hamilinin iş yerinde oluşturduğu hesapta kullandığı email adresi.
+ * Maksimum 254 karakter uzunluğunda olmalıdır.
+ */
+ 'Email' => 'xxxxx@gmail.com',
+ 'MobilePhone' => [
/**
- * BillAddrState: CardHolderData alanı içerisinde gönderilmesi beklenen ödemede kullanılan kart ile ilişkili kart hamilinin fatura adresindeki il veya eyalet bilgisi kodu.
- * ISO 3166-2'de tanımlı olan il/eyalet kodu olmalıdır.
+ * Cc: Kullanılan kart ile ilişkili kart hamilinin cep telefonuna ait ülke kodu. 1-3 karakter uzunluğunda olmalıdır.
*/
- 'BillAddrState' => '40',
+ 'Cc' => '90',
/**
- * Email: Kullanılan kart ile ilişkili kart hamilinin iş yerinde oluşturduğu hesapta kullandığı email adresi.
- * Maksimum 254 karakter uzunluğunda olmalıdır.
+ * Subscriber: Kullanılan kart ile ilişkili kart hamilinin cep telefonuna ait abone numarası.
+ * Maksimum 15 karakter uzunluğunda olmalıdır.
*/
- 'Email' => 'xxxxx@gmail.com',
- 'MobilePhone' => [
- /**
- * Cc: Kullanılan kart ile ilişkili kart hamilinin cep telefonuna ait ülke kodu. 1-3 karakter uzunluğunda olmalıdır.
- */
- 'Cc' => '90',
- /**
- * Subscriber: Kullanılan kart ile ilişkili kart hamilinin cep telefonuna ait abone numarası.
- * Maksimum 15 karakter uzunluğunda olmalıdır.
- */
- 'Subscriber' => '1234567899',
- ],
+ 'Subscriber' => '1234567899',
],
- ];
- $requestData = $requestDataPreparedEvent->getRequestData();
- $requestData = array_merge_recursive($requestData, $additionalRequestDataForKuveyt);
- $requestDataPreparedEvent->setRequestData($requestData);
- });
+ ],
+ ];
+ $requestData = $requestDataPreparedEvent->getRequestData();
+ $requestData = array_merge_recursive($requestData, $additionalRequestDataForKuveyt);
+ $requestDataPreparedEvent->setRequestData($requestData);
+ });
- /**
- * Bu Event'i dinleyerek 3D formun hash verisi hesaplanmadan önce formun input array içireğini güncelleyebilirsiniz.
- */
- $eventDispatcher->addListener(Before3DFormHashCalculatedEvent::class, function (Before3DFormHashCalculatedEvent $event) use ($pos): void {
- if (get_class($pos) === \Mews\Pos\Gateways\EstPos::class || get_class($pos) === \Mews\Pos\Gateways\EstV3Pos::class) {
- /**
- * Örnek 1: İşbank İmece Kart ile ödeme yaparken aşağıdaki verilerin eklenmesi gerekiyor:
- $supportedPaymentModels = [
- \Mews\Pos\Gateways\PosInterface::MODEL_3D_PAY,
- \Mews\Pos\Gateways\PosInterface::MODEL_3D_PAY_HOSTING,
- \Mews\Pos\Gateways\PosInterface::MODEL_3D_HOST,
- ];
- if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH && in_array($event->getPaymentModel(), $supportedPaymentModels, true)) {
- $formInputs = $event->getFormInputs();
- $formInputs['IMCKOD'] = '9999'; // IMCKOD bilgisi bankadan alınmaktadır.
- $formInputs['FDONEM'] = '5'; // Ödemenin faizsiz ertelenmesini istediğiniz dönem sayısı.
- $event->setFormInputs($formInputs);
- }*/
- }
- if (get_class($pos) === \Mews\Pos\Gateways\EstV3Pos::class) {
+ /**
+ * Bu Event'i dinleyerek 3D formun hash verisi hesaplanmadan önce formun input array içireğini güncelleyebilirsiniz.
+ * Eger ekleyeceginiz veri hash hesaplamada kullanilmiyorsa form verisi olusturduktan sonra da ekleyebilirsiniz.
+ */
+ $eventDispatcher->addListener(Before3DFormHashCalculatedEvent::class, function (Before3DFormHashCalculatedEvent $event) use ($pos): void {
+ if (get_class($pos) === \Mews\Pos\Gateways\EstPos::class || get_class($pos) === \Mews\Pos\Gateways\EstV3Pos::class) {
+ //Örnek 1: İşbank İmece Kart ile ödeme yaparken aşağıdaki verilerin eklenmesi gerekiyor:
+// $supportedPaymentModels = [
+// \Mews\Pos\PosInterface::MODEL_3D_PAY,
+// \Mews\Pos\PosInterface::MODEL_3D_PAY_HOSTING,
+// \Mews\Pos\PosInterface::MODEL_3D_HOST,
+// ];
+// if ($event->getTxType() === PosInterface::TX_TYPE_PAY_AUTH && in_array($event->getPaymentModel(), $supportedPaymentModels, true)) {
+// $formInputs = $event->getFormInputs();
+// $formInputs['IMCKOD'] = '9999'; // IMCKOD bilgisi bankadan alınmaktadır.
+// $formInputs['FDONEM'] = '5'; // Ödemenin faizsiz ertelenmesini istediğiniz dönem sayısı.
+// $event->setFormInputs($formInputs);
+// }
+ }
+ if (get_class($pos) === \Mews\Pos\Gateways\EstV3Pos::class) {
// // Örnek 2: callbackUrl eklenmesi
// $formInputs = $event->getFormInputs();
// $formInputs['callbackUrl'] = $formInputs['failUrl'];
// $formInputs['refreshTime'] = '10'; // birim: saniye; callbackUrl sisteminin doğru çalışması için eklenmesi gereken parametre
// $event->setFormInputs($formInputs);
- }
- });
-
-
+ }
+ });
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR END
+// ============================================================================================
+try {
$formData = $pos->get3DFormData($order, $paymentModel, $transaction, $card);
+ //dd($formData);
+} catch (\Throwable $e) {
+ dd($e);
+}
- /**
- * PosNet vftCode - VFT Kampanya kodunu. Vade Farklı işlemler için kullanılacak olan kampanya kodunu belirler.
- * Üye İşyeri için tanımlı olan kampanya kodu, İşyeri Yönetici Ekranlarına giriş
- * yapıldıktan sonra, Üye İşyeri bilgileri sayfasından öğrenilebilinir.
- */
- if ($pos instanceof \Mews\Pos\Gateways\PosNet) {
- // YapiKredi
- // $formData['inputs']['vftCode'] = 'xxx';
- }
- if ($pos instanceof \Mews\Pos\Gateways\PosNetV1Pos) {
- // Albaraka
- // $formData['inputs']['VftCode'] = 'xxx';
- }
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR START
+// ============================================================================================
- /**
- * KOICode - Joker Vadaa Kampanya Kodu.
- * Degerler - 1: Ek Taksit 2: Taksit Atlatma 3: Ekstra Puan 4: Kontur Kazanım 5: Ekstre Erteleme 6: Özel Vade Farkı
- * İşyeri, UseJokerVadaa alanını 1 yaparak bankanın joker vadaa sorgu ve müşteri joker vadaa
- * kampanya seçim ekranının açılmasını ve Joker Vadaa kampanya seçiminin müşteriye bırakılmasını
- * sağlayabilir. İşyeri, müşterilere ortak ödeme sayfasında kampanya sunulmasını istemiyorsa
- * UseJokerVadaa alanını 0 set etmesi gerekir.
- */
- if ($pos instanceof \Mews\Pos\Gateways\PosNetV1Pos) {
- // Albaraka
- // $formData['inputs']['UseJokerVadaa'] = '1';
- // $formData['inputs']['KOICode'] = 'xxx';
- }
- if ($pos instanceof \Mews\Pos\Gateways\PosNet) {
- // YapiKredi
- // $formData['inputs']['useJokerVadaa'] = '1';
- }
+/**
+ * PosNet vftCode - VFT Kampanya kodunu. Vade Farklı işlemler için kullanılacak olan kampanya kodunu belirler.
+ * Üye İşyeri için tanımlı olan kampanya kodu, İşyeri Yönetici Ekranlarına giriş
+ * yapıldıktan sonra, Üye İşyeri bilgileri sayfasından öğrenilebilinir.
+ */
+if ($pos instanceof \Mews\Pos\Gateways\PosNet) {
+ // YapiKredi
+ // $formData['inputs']['vftCode'] = 'xxx';
+}
+if ($pos instanceof \Mews\Pos\Gateways\PosNetV1Pos) {
+ // Albaraka
+ // $formData['inputs']['VftCode'] = 'xxx';
+}
- //dd($formData);
-} catch (\Throwable $e) {
- dd($e);
+/**
+ * KOICode - Joker Vadaa Kampanya Kodu.
+ * Degerler - 1: Ek Taksit 2: Taksit Atlatma 3: Ekstra Puan 4: Kontur Kazanım 5: Ekstre Erteleme 6: Özel Vade Farkı
+ * İşyeri, UseJokerVadaa alanını 1 yaparak bankanın joker vadaa sorgu ve müşteri joker vadaa
+ * kampanya seçim ekranının açılmasını ve Joker Vadaa kampanya seçiminin müşteriye bırakılmasını
+ * sağlayabilir. İşyeri, müşterilere ortak ödeme sayfasında kampanya sunulmasını istemiyorsa
+ * UseJokerVadaa alanını 0 set etmesi gerekir.
+ */
+if ($pos instanceof \Mews\Pos\Gateways\PosNetV1Pos) {
+ // Albaraka
+ // $formData['inputs']['UseJokerVadaa'] = '1';
+ // $formData['inputs']['KOICode'] = 'xxx';
}
+if ($pos instanceof \Mews\Pos\Gateways\PosNet) {
+ // YapiKredi
+ // $formData['inputs']['useJokerVadaa'] = '1';
+}
+// ============================================================================================
+// OZEL DURUMLAR ICIN KODLAR END
+// ============================================================================================
+
+
$flowType = $request->get('payment_flow_type');
?>
diff --git a/examples/_common-codes/regular/cancel.php b/examples/_common-codes/regular/cancel.php
index 6b230c23..f6067cfb 100644
--- a/examples/_common-codes/regular/cancel.php
+++ b/examples/_common-codes/regular/cancel.php
@@ -35,8 +35,7 @@ function createCancelOrder(string $gatewayClass, array $lastResponse, string $ip
$cancelOrder['transaction_id'] = $lastResponse['transaction_id'];
} elseif (\Mews\Pos\Gateways\PosNetV1Pos::class === $gatewayClass || \Mews\Pos\Gateways\PosNet::class === $gatewayClass) {
/**
- * payment_model:
- * siparis olusturulurken kullanilan odeme modeli
+ * payment_model: siparis olusturulurken kullanilan odeme modeli.
* orderId'yi dogru şekilde formatlamak icin zorunlu.
*/
$cancelOrder['payment_model'] = $lastResponse['payment_model'];
diff --git a/examples/_common-codes/regular/form.php b/examples/_common-codes/regular/form.php
index 39b73cd8..33397a9f 100644
--- a/examples/_common-codes/regular/form.php
+++ b/examples/_common-codes/regular/form.php
@@ -8,8 +8,9 @@
$transaction = $request->get('tx', PosInterface::TX_TYPE_PAY_AUTH);
-$order = getNewOrder(
+$order = createPaymentOrder(
$pos,
+ $paymentModel,
$baseUrl,
$ip,
$request->get('currency', PosInterface::CURRENCY_TRY),
diff --git a/examples/_common-codes/regular/history.php b/examples/_common-codes/regular/history.php
index 8d4faca7..4cb080e1 100644
--- a/examples/_common-codes/regular/history.php
+++ b/examples/_common-codes/regular/history.php
@@ -1,7 +1,5 @@
$extraData['transaction_date'] ?? new \DateTimeImmutable(),
+ 'transaction_date' => $extraData['transaction_date'] ?? $txTime,
];
} elseif (\Mews\Pos\Gateways\VakifKatilimPos::class === $gatewayClass) {
- $txTime = new \DateTimeImmutable();
$order = [
'page' => 1,
'page_size' => 20,
@@ -31,7 +28,6 @@ function createHistoryOrder(string $gatewayClass, array $extraData): array
'end_date' => $txTime->modify('+1 day'),
];
} elseif (\Mews\Pos\Gateways\AkbankPos::class === $gatewayClass) {
- $txTime = new \DateTimeImmutable();
$order = [
// Gün aralığı 1 günden fazla girilemez
'start_date' => $txTime->modify('-23 hour'),
diff --git a/examples/_common-codes/regular/order_history.php b/examples/_common-codes/regular/order_history.php
index 2aa37669..bea76df5 100644
--- a/examples/_common-codes/regular/order_history.php
+++ b/examples/_common-codes/regular/order_history.php
@@ -1,11 +1,5 @@
$lastResponse['order_id'],
];
@@ -32,25 +26,25 @@ function createOrderHistoryOrder(string $gatewayClass, array $lastResponse): arr
'id' => $lastResponse['order_id'],
];
}
- } elseif (ToslaPos::class === $gatewayClass) {
+ } elseif (\Mews\Pos\Gateways\ToslaPos::class === $gatewayClass) {
$order = [
'id' => $lastResponse['order_id'],
'transaction_date' => $lastResponse['transaction_time'], // odeme tarihi
'page' => 1, // optional, default: 1
'page_size' => 10, // optional, default: 10
];
- } elseif (PayForPos::class === $gatewayClass) {
+ } elseif (\Mews\Pos\Gateways\PayForPos::class === $gatewayClass) {
$order = [
'id' => $lastResponse['order_id'],
];
- } elseif (GarantiPos::class === $gatewayClass) {
+ } elseif (\Mews\Pos\Gateways\GarantiPos::class === $gatewayClass) {
$order = [
'id' => $lastResponse['order_id'],
'currency' => $lastResponse['currency'],
'ip' => '127.0.0.1',
];
} elseif (\Mews\Pos\Gateways\VakifKatilimPos::class === $gatewayClass) {
- /** @var DateTimeImmutable $txTime */
+ /** @var \DateTimeImmutable $txTime */
$txTime = $lastResponse['transaction_time'];
$order = [
'auth_code' => $lastResponse['auth_code'],
diff --git a/examples/_common-codes/regular/refund.php b/examples/_common-codes/regular/refund.php
index 2d87af83..9d076c56 100644
--- a/examples/_common-codes/regular/refund.php
+++ b/examples/_common-codes/regular/refund.php
@@ -26,7 +26,6 @@ function createRefundOrder(string $gatewayClass, array $lastResponse, string $ip
$refundOrder['transaction_id'] = $lastResponse['transaction_id'];
} elseif (\Mews\Pos\Gateways\VakifKatilimPos::class === $gatewayClass) {
$refundOrder['remote_order_id'] = $lastResponse['remote_order_id']; // banka tarafındaki order id
- $refundOrder['amount'] = $lastResponse['amount'];
// on otorizasyon islemin iadesi icin PosInterface::TX_TYPE_PAY_PRE_AUTH saglanmasi gerekiyor
$refundOrder['transaction_type'] = $lastResponse['transaction_type'] ?? PosInterface::TX_TYPE_PAY_AUTH;
} elseif (\Mews\Pos\Gateways\PayFlexV4Pos::class === $gatewayClass || \Mews\Pos\Gateways\PayFlexCPV4Pos::class === $gatewayClass) {
@@ -34,8 +33,7 @@ function createRefundOrder(string $gatewayClass, array $lastResponse, string $ip
$refundOrder['transaction_id'] = $lastResponse['transaction_id'];
} elseif (\Mews\Pos\Gateways\PosNetV1Pos::class === $gatewayClass || \Mews\Pos\Gateways\PosNet::class === $gatewayClass) {
/**
- * payment_model:
- * siparis olusturulurken kullanilan odeme modeli
+ * payment_model: siparis olusturulurken kullanilan odeme modeli.
* orderId'yi dogru şekilde formatlamak icin zorunlu.
*/
$refundOrder['payment_model'] = $lastResponse['payment_model'];
diff --git a/examples/_common-codes/regular/status.php b/examples/_common-codes/regular/status.php
index b7c9ae51..38997781 100644
--- a/examples/_common-codes/regular/status.php
+++ b/examples/_common-codes/regular/status.php
@@ -22,8 +22,7 @@ function createStatusOrder(string $gatewayClass, array $lastResponse, string $ip
}
if (\Mews\Pos\Gateways\PosNetV1Pos::class === $gatewayClass || \Mews\Pos\Gateways\PosNet::class === $gatewayClass) {
/**
- * payment_model:
- * siparis olusturulurken kullanilan odeme modeli
+ * payment_model: siparis olusturulurken kullanilan odeme modeli.
* orderId'yi dogru sekilde formatlamak icin zorunlu.
*/
$statusOrder['payment_model'] = $lastResponse['payment_model'];
diff --git a/examples/_main_config.php b/examples/_main_config.php
index 73f2798a..ab3f8768 100644
--- a/examples/_main_config.php
+++ b/examples/_main_config.php
@@ -107,8 +107,9 @@ function createCard(PosInterface $pos, array $card): \Mews\Pos\Entity\Card\Credi
}
}
-function getNewOrder(
+function createPaymentOrder(
PosInterface $pos,
+ string $paymentModel,
string $baseUrl,
string $ip,
string $currency = PosInterface::CURRENCY_TRY,
@@ -116,10 +117,6 @@ function getNewOrder(
bool $tekrarlanan = false,
?string $lang = null
): array {
-
- $successUrl = $baseUrl.'response.php';
- $failUrl = $baseUrl.'response.php';
-
if ($tekrarlanan && get_class($pos) === AkbankPos::class) {
// AkbankPos'ta recurring odemede orderTrackId/orderId en az 36 karakter olmasi gerekiyor
$orderId = date('Ymd').strtoupper(substr(uniqid(sha1(time())), 0, 28));
@@ -133,12 +130,18 @@ function getNewOrder(
'currency' => $currency,
'installment' => $installment,
'ip' => filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ? $ip : '127.0.0.1',
-
- // 3d, 3d_pay, 3d_host odemeler icin zorunlu
- 'success_url' => $successUrl, // https://example.com/payment
- 'fail_url' => $failUrl, // https://example.com/payment
];
+ if (in_array($paymentModel, [
+ PosInterface::MODEL_3D_SECURE,
+ PosInterface::MODEL_3D_PAY,
+ PosInterface::MODEL_3D_HOST,
+ PosInterface::MODEL_3D_PAY_HOSTING,
+ ], true)) {
+ $order['success_url'] = $baseUrl.'response.php';
+ $order['fail_url'] = $baseUrl.'response.php';
+ }
+
if ($lang) {
//lang degeri verilmezse account (EstPosAccount) dili kullanilacak
$order['lang'] = $lang;
diff --git a/examples/_templates/_credit_card_form.php b/examples/_templates/_credit_card_form.php
index 3c105c08..05f7e871 100644
--- a/examples/_templates/_credit_card_form.php
+++ b/examples/_templates/_credit_card_form.php
@@ -64,7 +64,9 @@