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

# Postman ve HTTP Koleksiyonları

> Hazır API koleksiyonlarını indirip dakikalar içinde denemeye başlayın.

Sanal POS API'sini hızlı denemek için iki koleksiyon sunuyoruz:

<CardGroup cols={2}>
  <Card title="Postman Collection" icon="download" href="https://docs.payven.com.tr/files/payven-sanalpos.postman_collection.json">
    Postman 10+ ile uyumlu v2.1 koleksiyon. Tüm endpoint'ler, örnek payload'lar ve environment dahil.
  </Card>

  <Card title=".http Dosyası" icon="download" href="https://docs.payven.com.tr/files/payven-sanalpos.http">
    VS Code REST Client, JetBrains IDE'leri ve Visual Studio için.
  </Card>
</CardGroup>

## Postman ile başlama

<Steps>
  <Step title="Koleksiyonu indirin">
    Yukarıdaki "Postman Collection" linkinden `.json` dosyasını indirin.
  </Step>

  <Step title="Postman'e import edin">
    Postman → **Import** → dosyayı sürükle-bırak.
  </Step>

  <Step title="Environment'ı seçin">
    Sağ üstteki dropdown'dan `Payven Sandbox` veya `Payven Production` environment'ını seçin.
  </Step>

  <Step title="Değişkenleri doldurun">
    Environment değişkenlerine kimlik bilgilerinizi yazın:

    * `client_id`: `pvk_test_...` veya `pvk_live_...`
    * `client_secret`: secret değeriniz
    * `slug`: tenant slug'ınız (örn. `payven`)
    * `identity_base_url`: `https://identity-sandbox.payven.com.tr` veya `https://identity.payven.com.tr`
    * `vpos_base_url`: `https://vpos-sandbox.payven.com.tr` veya `https://vpos.payven.com.tr`
  </Step>

  <Step title="Token alın (otomatik)">
    Koleksiyonun **Pre-request Script**'i ilk istekten önce Identity'den access token alır ve `{{access_token}}` değişkenine yazar; expiry geldiğinde otomatik refresh.
  </Step>

  <Step title="Bir isteği gönderin">
    "Quickstart" klasöründeki **Non-3D Payment** isteğini açın ve **Send** edin.
  </Step>
</Steps>

<Note>
  **Beta erişim:** Postman koleksiyonu yayın hazırlığı sürüyor. Erken erişim için [destek ekibimize](/resources/support) yazın.
</Note>

## Koleksiyon içeriği

| Klasör         | İçerik                                            |
| -------------- | ------------------------------------------------- |
| Quickstart     | İlk Non-3D ödeme, durum sorgusu                   |
| Payments       | Tüm ödeme akışları                                |
| Refunds        | İade istekleri                                    |
| Webhooks       | Abonelik yönetimi + test çağrısı                  |
| Inquiries      | Liste, detay, geçmiş                              |
| Reconciliation | Mutabakat akışı                                   |
| Backoffice     | Konnektör, konfigürasyon (Bearer auth gerektirir) |

## .http dosyası ile başlama

VS Code'da [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) eklentisi yüklüyse:

```bash theme={null}
# Dosyayı açın
code payven-sanalpos.http

# Üst kısımdaki @clientId, @clientSecret, @slug ve @merchantId değişkenlerini doldurun
# İstek bloğunun üstündeki "Send Request" linkine tıklayın
```

## Otomasyon ile değişken aktarma

Postman içinde "Pre-request Script" ve "Tests" bölümleri kullanılarak istekler arası değer paylaşımı yapılır:

```javascript theme={null}
// Tests bölümünden — transaction_id'yi sonraki isteğe taşımak
const response = pm.response.json();
if (response.transaction_id) {
  pm.environment.set("last_transaction_id", response.transaction_id);
}
```

Sonraki istekte `{{last_transaction_id}}` ile kullanın.

```javascript theme={null}
// Pre-request script — token cache + auto-refresh
const expiry = parseInt(pm.environment.get("token_expires_at") || "0", 10);
if (Date.now() >= expiry - 60_000) {
  pm.sendRequest({
    url: pm.environment.get("identity_base_url")
       + "/api/v1/auth/" + pm.environment.get("slug") + "/token",
    method: "POST",
    header: { "Content-Type": "application/json" },
    body: { mode: "raw", raw: JSON.stringify({
      client_id:     pm.environment.get("client_id"),
      client_secret: pm.environment.get("client_secret"),
    })},
  }, (err, res) => {
    const data = res.json();
    pm.environment.set("access_token", data.access_token);
    pm.environment.set("token_expires_at", String(Date.now() + data.expires_in * 1000));
  });
}
```
