Skip to main content

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.

Access token’ın süresi dolduğunda kullanıcıyı yeniden login’e yönlendirmek yerine refresh token kullanarak sessizce yenileyebilirsiniz.

Endpoint

POST /api/v1/auth/{slug}/refresh

İstek

curl -X POST https://identity.payven.com.tr/api/v1/auth/acme-bank/refresh \
  -H "Content-Type: application/json" \
  -d '{
    "refreshToken": "eyJhbGciOiJIUzUxMiIs..."
  }'

Yanıt

{
  "isSuccess": true,
  "data": {
    "accessToken": "yeni-access-token...",
    "refreshToken": "yeni-refresh-token...",
    "expiresIn": 3600,
    "refreshExpiresIn": 1800,
    "tokenType": "Bearer"
  }
}
Yenileme sonrası hem access hem refresh token yenilenir. Eski refresh token bir kez kullanıldıktan sonra geçersiz olur (rotation).

Önerilen yenileme stratejisi

Token süresi dolmadan 30 saniye önce proaktif yenileme yapın:
class TokenManager {
  constructor() {
    this.accessToken = null;
    this.refreshToken = null;
    this.expiresAt = 0;
  }

  async getValidToken() {
    const bufferMs = 30_000;
    if (Date.now() < this.expiresAt - bufferMs) {
      return this.accessToken;
    }
    await this.refresh();
    return this.accessToken;
  }

  async refresh() {
    const res = await fetch(`${BASE}/auth/${SLUG}/refresh`, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ refreshToken: this.refreshToken }),
    });
    const { data } = await res.json();
    this.accessToken = data.accessToken;
    this.refreshToken = data.refreshToken;
    this.expiresAt = Date.now() + data.expiresIn * 1000;
  }
}

Hata yanıtları

HTTPcodeAnlam
401INVALID_REFRESH_TOKENRefresh token geçersiz veya kullanılmış
401REFRESH_TOKEN_EXPIREDRefresh token süresi dolmuş — yeniden login gerekli
REFRESH_TOKEN_EXPIRED aldığınızda kullanıcıyı login ekranına yönlendirin.