Skip to content

Commit

Permalink
Merge pull request #211 from mewebstudio/refactoring-05
Browse files Browse the repository at this point in the history
Symfony v4 , v7 desteği ve daha spesifik exceptionlar
  • Loading branch information
nuryagdym authored May 19, 2024
2 parents bd0d8ec + 95de568 commit c86e72d
Show file tree
Hide file tree
Showing 77 changed files with 650 additions and 410 deletions.
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

0 comments on commit c86e72d

Please sign in to comment.