> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tahsilat.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kimlik Doğrulama

> API isteklerinin Secret ve Public anahtarlar ile doğrulanması

Tahsilat API, token tabanlı kimlik doğrulama kullanır. Tüm istekler <b>Secret</b> ve <b>Public</b> anahtarlarla doğrulanır. Anahtarlarınızı Üye İşyeri Paneli üzerinden görüntüleyebilir ve yönetebilirsiniz.

Anahtar önekleri ortamı belirler: test modunda `sk_test_` ve `pk_test_`, canlı modda `sk_live_` ve `pk_live_`. Secret Key sunucu tarafı isteklerin kimlik doğrulamasında kullanılır; Public Key ise istemci tarafı (JavaScript SDK, iframe) entegrasyonları içindir.

Secret Key tüm hesap yetkilerini taşır. GitHub gibi herkese açık alanlarda ya da istemci tarafı kodlarda asla paylaşmayın. Public Key ise mobil ve web uygulamalarında güvenle kullanılabilir.

API anahtarınızı `TahsilatClient` örneğini oluştururken verirsiniz; PHP kütüphanesi anahtarı her istekte otomatik gönderir.

<Warning>
  Sunucu tarafı entegrasyonlarda mutlaka Secret Key (sk\_) kullanın.
  Public Key (pk\_) yalnızca tarayıcı tarafı entegrasyonlar içindir; sunucu
  tarafında kullanıldığında daha kısıtlı rate limitlerine tabi olur.
</Warning>

***

Her istemci 10 dakika geçerli bir erişim token'ı üretir; token yenilemeyi SDK kendisi yönetir.

Örnek PHP kodu:

<CodeGroup>
  ```php İstek theme={null}
  $tahsilat = new TahsilatClient('sk_test_rwwg...');
  ```

  ```bash Yanıt (200 OK) theme={null}
  ^ Tahsilat\TahsilatClient {#1556
  -apiKey: "sk_test_rwwg..."
  -accessToken: "ZpyZmkwA9oHkUgb9pKKfVuF9ouaqqoYgLfW3n2JyjPPygXGfJ9zmZLIpg8qtThr5N4jBzrYtqyfstTXN15j........"
  -config: array:6 [
  "api_version" => "v1"
  "max_retries" => 3
  "connect_timeout" => 30
  "timeout" => 80
  "verify_ssl_certs" => true
  "ca_bundle_path" => null
  ]
  -services: []
  }
  ```
</CodeGroup>

***

## HTTP Durum Kodları

Tahsilat API, isteklerin sonucunu standart HTTP durum kodlarıyla bildirir.

| Kod | Durum | Açıklama |
| :- | :- | :- |
| 200 | OK | İstek başarıyla tamamlandı. |
| 400 | Bad Request | İstek kabul edilemez, genellikle gerekli bir parametre eksik. |
| 401 | Unauthorized | Geçerli bir API anahtarı sağlanmadı. |
| 402 | Request Failed | Parametreler geçerliydi ancak istek başarısız oldu. |
| 403 | Forbidden | API anahtarının bu isteği gerçekleştirme izni yok. |
| 404 | Not Found | İstenen kaynak mevcut değil. |
| 409 | Conflict | İstek, kaynağın mevcut durumuyla çakışıyor (örneğin işlem üzerinde devam eden başka bir süreç). |
| 424 | External Dependency Failed | İstek, Tahsilat dışındaki bir bağımlılıktaki hata nedeniyle tamamlanamadı. |
| 429 | Too Many Requests | İstek limiti aşıldı. İsteklerinizi yavaşlatın. |
| 500, 502, 503, 504 | Server Errors | Tahsilat tarafında bir sorun oluştu. (Bu durumlar nadirdir.) |

<Note>
  Hata durumlarında API, hatanın türünü ve detaylarını içeren bir JSON yanıtı döndürür.
</Note>

<Warning>
  429 (Too Many Requests) aldığınızda tekrar denemeden önce kısa bir süre bekleyin.
  Sürekli hızlı istek gönderimi hesabınızın geçici olarak kısıtlanmasına neden olabilir.
</Warning>

<div className="panels">
  <Panel>
    <CodeGroup>
      ```php PHP theme={null}
      $tahsilat = new TahsilatClient('sk_test_rwwg...');
      ```

      ```js JS theme={null}
      const tahsilat = new TahsilatSDK('pk_test_wsg...');
      const elements = tahsilat.elements();
      ```
    </CodeGroup>

    <Note>
      <b>Secret Key (sk\_)</b> yalnızca sunucu tarafında kullanılmalı, istemci kodunda asla açıkta olmamalıdır.
      <b>Public Key (pk\_)</b> JavaScript SDK ve iframe entegrasyonları içindir; sunucu tarafında
      kullanılması düşük işlem limitlerine ve IP bazlı kısıtlamalara neden olur.
    </Note>
  </Panel>
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.