# Vakıf Bank

### Kullanım

Aşağıdaki örnek kod ile vakif bankasının sanalposunu kolay bir şekilde kullanılabilir hale getirebilirsiniz.

{% tabs %}
{% tab title="PHP" %}

```php
use ISProject\VirtualPos\Banks\VakifBank;
use ISProject\VirtualPos\Exception\VirtualPosException;

include "vendor/autoload.php";

$vakifbank = new VakifBank();
```

{% endtab %}
{% endtabs %}

### 3D Olmadan Ödeme Çekme

3D Olmadan ödeme çekmek isterseniz bu kodları kullanabilirsiniz.

```php
use ISProject\VirtualPos\Banks\VakifBank;
use ISProject\VirtualPos\Exception\VirtualPosException;

try {
    
    $vakifbank = new VakifBank();
    $vakifbank->setMerchantId("xxxxxxxxxxxx");
    $vakifbank->setTerminalNo('xxxxxxx');
    $vakifbank->setPassword(123456);
    $vakifbank->setTestMode(true);
    
    $vakifbank->setPrice(10.25);

    $creditCard = "428945018654xxxx";
    $cardMonth  = "02";
    $cardYear   = "2023";
    $cardCvv    = "060";

    $response = $vakifbank->payment($creditCard, $cardMonth, $cardYear, $cardCvv);
    if($response->isSuccess()) {
        echo 'Ödeme başarıyla çekildi.';
        echo 'Ödeme Detayları;';
        echo '<pre>';
        print_r($response->getData());
        echo '<pre>';
    } else {
        echo '<br>Ödeme çekilirken bir sorun oluştu; ';
        echo '<br>Hata Kodu: ' . $response->getCode();
        echo '<br>Hata Mesajı: ' . $response->getMessage();
    }
    
} catch (VirtualPosException $e) {
    echo 'Hata => ' . $e->getMessage();
}
```

### 3D Olarak Ödeme Çekme

3D ile ödeme çekerken 2 adımlı doğrulama yapılmaktadır. Kullanıcı bilgilerini doğru bir şekilde girdikten sonra Bankanın 3d şifresini gireceği bölüme yönlendirilir. Bu bölümde şifre girildikten sonra **successurl** ve **failurl** olarak belirttiğimiz 2 url adresinden adresinden birine duruma göre yönlendirilir. Eğer ödeme başarılı ise **successurl** sayfasında son 1 kez ödeme doğrulanır.

#### Adım 1

Bu adımda 3d kart bilgilerini aldıktan sonra bankanın 3d sayfasına yönlendirilmek üzere bir form oluşturulur ve başarılı olursa **$response->getData();** geriye bu formu döndürür ve siz formu post edersiniz.

```php
use ISProject\VirtualPos\Banks\VakifBank;
use ISProject\VirtualPos\Exception\VirtualPosException;

try {

    $vakifbank = new VakifBank();
    $vakifbank->setMerchantId("xxxxxxxxxxxx");
    $vakifbank->setTerminalNo('xxxxxxx');
    $vakifbank->setPassword(123456);
    $vakifbank->setTestMode(true);
    
    $vakifbank->setSuccessUrl('https://sanalpos.botbenson.com/successUrl.php');
    $vakifbank->setFailureUrl('https://sanalpos.botbenson.com/failureUrl.php');
    
    $vakifbank->setOrderId("1234567890123");
    
    $vakifbank->setPrice(10.25);

    $creditCard = "428945018654xxxx";
    $cardMonth  = "02";
    $cardYear   = "2023";
    $cardCvv    = "060";

    $response = $vakifbank->payment3D($creditCard, $cardMonth, $cardYear, $cardCvv);
    if($response->isSuccess()) {
        echo $response->getData();
    } else {
        echo '<br>Form oluşturulurken bir sorun oluştu; ';
        echo '<br>Hata Kodu: ' . $response->getCode();
        echo '<br>Hata Mesajı: ' . $response->getMessage();
    }
    
} catch (VirtualPosException $e) {
    echo 'Hata => ' . $e->getMessage();
}
```

#### Adım 2

Bu adım son aşamadır. Bu aşamada bankadan gelen yanıt incelenir ve tekrar bankaya otomatik istek atılır.  Banka bu adımda olumlu/olumsuz yanıtı döner. İşlem tamamlanır.

```php
use ISProject\VirtualPos\Banks\VakifBank;
use ISProject\VirtualPos\Exception\VirtualPosException;

try {

    $vakifbank = new VakifBank();
    $vakifbank->setMerchantId("xxxxxxxxxxxx");
    $vakifbank->setTerminalNo('xxxxxxx');
    $vakifbank->setPassword(123456);
    $vakifbank->setTestMode(true);    

    $response = $vakifbank->paymentCallBack();
    if($response->isSuccess()) {
        echo 'Ödeme başarıyla çekildi.';
        echo 'Ödeme Detayları;';
        echo '<pre>';
        print_r($response->getData());
        echo '<pre>';
    } else {
        echo '<br>3D Ödeme Onaylanırken bir sorun oluştu; ';
        echo '<br>Hata Kodu: ' . $response->getCode();
        echo '<br>Hata Mesajı: ' . $response->getMessage();
    }
    
} catch (VirtualPosException $e) {
    echo 'Hata => ' . $e->getMessage();
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sanalpos.botbenson.com/sanal-poslar/vakif-bank.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
