Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Symfony v4 , v7 desteği ve daha spesifik exceptionlar #211

Merged
merged 10 commits into from
May 19, 2024
41 changes: 22 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,21 @@ sistemlerinin kullanılabilmesidir.

### Deskteklenen Payment Gateway'ler / Bankalar:

| Gateway | Desktekleyen<br/>bankalar | Desteklenen<br/>Ödeme Tipleri | Desteklenen Sorgular |
|-------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
| Tosla (AKÖde) | ? | NonSecure<br/>3DPay<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama |
| AkbankPos | Akbank | NonSecure<br/>3DSecur<br/>3DPay<br/>3DHost<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Sipariş Tarihçesini sorgulama<br/>Geçmiş İşlemleri sorgulama |
| EST POS<br/>(Asseco/Payten)<br/>_deprecated_ | Akbank<br/>TEB<br/>İşbank<br/>Şekerbank<br/>Halkbank<br/>Finansbank<br/>Ziraat | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost<br/>3DPayHost<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama |
| EST V3 POS<br/><br/>EstPos altyapının<br/>daha güvenli<br/>(sha512) hash<br/>algoritmasıyla<br/>uygulaması. | -----"----- | -----"----- | -----"----- |
| PayFlex MPI VPOS V4 | Ziraat<br/>Vakıfbank<br/>İşbank | NonSecure<br/>3DSecure<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Durum sorgulama |
| PayFlex<br/>Common Payment V4<br/>(Ortak Ödeme) | Ziraat<br/>Vakıfbank<br/>İşbank | NonSecure<br/>3DPay<br/>3DHost | İptal<br/>İade |
| Garanti Virtual POS | Garanti | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama |
| PosNet | YapıKredi | NonSecure<br/>3DSecure<br/> | İptal<br/>İade<br/>Durum sorgulama |
| PosNetV1<br/>(JSON API) | Albaraka Türk | NonSecure<br/>3DSecure | İptal<br/>İade<br/>Durum sorgulama |
| PayFor | Finansbank<br/>Enpara | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama<br/>Geçmiş İşlemleri sorgulama |
| InterPOS | Deniz bank | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama |
| Kuveyt POS TDV2.0.0 | Kuveyt Türk | NonSecure<br/>3DSecure | İptal<br/>İade<br/>Durum sorgulama<br/>(SOAP API) |
| VakifKatilimPos<br/>(test edilmesi gerekiyor) | Vakıf Katılım | NonSecure<br/>3DSecure<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama<br/>Geçmiş İşlemleri sorgulama |
| Gateway | Desktekleyen<br/>bankalar | Desteklenen<br/>Ödeme Tipleri | Desteklenen Sorgular |
|------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
| Tosla (AKÖde) | ? | NonSecure<br/>3DPay<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama |
| AkbankPos | Akbank | NonSecure<br/>3DSecur<br/>3DPay<br/>3DHost<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Sipariş Tarihçesini sorgulama<br/>Geçmiş İşlemleri sorgulama |
| EST POS<br/><sup>(Asseco/Payten)<br/>_deprecated_</sup> | Akbank<br/>TEB<br/>İşbank<br/>Şekerbank<br/>Halkbank<br/>Finansbank<br/>Ziraat | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost<br/>3DPayHost<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama |
| EST V3 POS<br/><br/><sup>EstPos altyapının<br/>daha güvenli<br/>(sha512) hash<br/>algoritmasıyla<br/>uygulaması.</sup> | -----"----- | -----"----- | -----"----- |
| PayFlex MPI VPOS V4 | Ziraat<br/>Vakıfbank VPOS 7/24<br/>İşbank | NonSecure<br/>3DSecure<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Durum sorgulama |
| PayFlex<br/>Common Payment V4<br/><sup>(Ortak Ödeme)</sup> | Ziraat<br/>Vakıfbank<br/>İşbank | NonSecure<br/>3DPay<br/>3DHost | İptal<br/>İade |
| Garanti Virtual POS | Garanti | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost<br/>Tekrarlanan Ödeme | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama |
| PosNet | YapıKredi | NonSecure<br/>3DSecure<br/> | İptal<br/>İade<br/>Durum sorgulama |
| PosNetV1<br/><sup>(JSON API)</sup> | Albaraka Türk | NonSecure<br/>3DSecure | İptal<br/>İade<br/>Durum sorgulama |
| PayFor | Finansbank<br/>Enpara | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama<br/>Geçmiş İşlemleri sorgulama |
| InterPOS | Deniz bank | NonSecure<br/>3DSecure<br/>3DPay<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama |
| Kuveyt POS TDV2.0.0 | Kuveyt Türk | NonSecure<br/>3DSecure | İptal<br/>İade<br/>Durum sorgulama<br/>(SOAP API) |
| VakifKatilimPos<br/><sup>(test edilmesi gerekiyor)</sup> | Vakıf Katılım | NonSecure<br/>3DSecure<br/>3DHost | İptal<br/>İade<br/>Durum sorgulama<br/>Sipariş Tarihçesini sorgulama<br/>Geçmiş İşlemleri sorgulama |

### Ana başlıklar

Expand Down Expand Up @@ -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
```
Expand Down Expand Up @@ -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.

Expand Down
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
6 changes: 3 additions & 3 deletions config/pos_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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' => [
Expand Down
6 changes: 3 additions & 3 deletions docs/CANCEL-EXAMPLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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'];
Expand Down
9 changes: 9 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
11 changes: 5 additions & 6 deletions docs/HISTORY-EXAMPLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -45,23 +46,21 @@ 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,
'start_date' => $txTime->modify('-1 day'),
'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'),
Expand Down
3 changes: 2 additions & 1 deletion docs/NON-SECURE-PAYMENT-EXAMPLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
10 changes: 8 additions & 2 deletions docs/ORDER-HISTORY-EXAMPLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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);
```
Loading