> For the complete documentation index, see [llms.txt](https://sanalpos.botbenson.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sanalpos.botbenson.com/sanal-poslar/akbank.md).

# AkBank

AkBank'ın php dilinde yazılmış olan maksimum düzeyde geliştirilebilir ve entegre edilebilir kütüphane versiyonudur.

### Kullanım

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

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

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

include "vendor/autoload.php";

$akbank = new AkBank();
```

{% endtab %}
{% endtabs %}

### 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 bu formu siz post edersiniz.

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

try {

    $akbank = new AkBank();
		$akbank->setTestMode(true);
		$akbank->setStoreType('3d');
		$akbank->setClientId(100100000);
		$akbank->setStoreKey(123456);
		$akbank->setUsername('AKTESTAPI');
		$akbank->setPassword('AKBANK01');
			
		$akbank->setOrderId(rand(1999999, 9999999));
		$akbank->setPrice(10.25);
		$akbank->setSuccessUrl('https://sanalpos.botbenson.com/successUrl.php');
    $akbank->setFailureUrl('https://sanalpos.botbenson.com/failureUrl.php');

		$response = $akbank->payment3D(5571135571135575, 12, 2026, "000");
		if ($response->isSuccess()) 
		{
			    echo $response->getData();
			    echo '<script>document.getElementById("NestPayVirtualPos").submit();</script>';
		}
    
} 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\AkBank;
use ISProject\VirtualPos\Exception\VirtualPosException;

try {

		$akbank = new AkBank();
		$akbank->setTestMode(true);
		$akbank->setStoreType('3d');
		$akbank->setClientId(100100000);
		$akbank->setStoreKey(123456);
		$akbank->setUsername('AKTESTAPI');
		$akbank->setPassword('AKBANK01');
			
		$akbank->setOrderId(1234567890123);
		$akbank->setPrice(10.25);
		$akbank->setSuccessUrl('https://sanalpos.botbenson.com/successUrl.php');
    $akbank->setFailureUrl('https://sanalpos.botbenson.com/failureUrl.php');
    
		$response = $akbank->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 çekilirken bir sorun oluştu; ';
        echo '<br>Hata Kodu: ' . $response->getCode();
        echo '<br>Hata Mesajı: ' . $response->getMessage();
    }
    
} catch (VirtualPosException $e) {
    echo 'Hata => ' . $e->getMessage();
}
```
