Skip to content

Token İşlemleri

Ödeal Sanal POS API'sini kullanabilmek için öncelikle bir authentication token almanız gerekir. Bu token, tüm API isteklerinde Authorization header'ı ile gönderilir.

Token Yaşam Döngüsü

  1. Token Oluşturma: API Key ve Secret Key ile yeni bir access token alınır
  2. Token Kullanımı: Access token, tüm API isteklerinde Bearer token olarak gönderilir
  3. Token Yenileme: Token süresi dolmadan önce refresh token ile yeni token alınır
  4. Token Geçersiz Olma: Yeni token alındığında eski token otomatik olarak geçersiz hale gelir

1. Token Oluşturma

API üzerinden credential isteği ile bir session token oluşturulur. Bu token diğer sanal POS API'leri çağırırken Authorization: Bearer {Token} şeklinde header'da gönderilmelidir.

Endpoint

POST /authenticate/credential/v2

İstek Parametreleri

ParametreTipZorunluAçıklama
apiKeystringEvetSistem tarafından verilen unique değer
secretKeystringEvetMüşteri bazlı gizli anahtar bilgisi

İstek Örneği

json
{
  "apiKey": "your-api-key-here",
  "secretKey": "your-secret-key-here"
}

Başarılı Yanıt

json
{
  "result": {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  },
  "tokenType": "Bearer",
  "expiresIn": 3600
}

Yanıt Parametreleri

ParametreTipAçıklama
result.accessTokenstringAPI isteklerinde kullanılacak access token
result.refreshTokenstringToken yenilemede kullanılacak refresh token
tokenTypestringToken tipi (genellikle "Bearer")
expiresInintegerToken geçerlilik süresi (saniye cinsinden)

2. Token Yenileme

Token expire olduğunda yeni token alınmalıdır. Her yeni token alındığında eski token geçersiz hale gelir.

Endpoint

POST /authenticate/refresh-token/v2

İstek Parametreleri

ParametreTipZorunluAçıklama
refreshTokenstringEvetDaha önce alınan refresh token

İstek Örneği

json
{
  "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Başarılı Yanıt

json
{
  "result": {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  },
  "tokenType": "Bearer",
  "expiresIn": 3600
}

3. Token Kullanımı

Access token'ı aldıktan sonra, tüm API isteklerinde Authorization header'ında Bearer token olarak gönderin.

Header Örneği

http
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Önerilen Uygulamalar

1. Token Önbellekleme

Token'ı her istekte yeniden almak yerine, süresi dolana kadar önbellekte tutun. Bu performansı artırır ve gereksiz API çağrılarını önler.

2. Token Süresi Takibi

expiresIn değerini kullanarak token'ın ne zaman yenileneceğini belirleyin. Token süresinin dolmasından 5 dakika önce yenileme işlemine başlamak önerilir.

3. Güvenli Saklama

  • API Key ve Secret Key'i asla kodda saklamayın
  • Ortam değişkenleri (environment variables) kullanın
  • Secrets manager servisleri kullanın (AWS Secrets Manager, Azure Key Vault, vb.)

4. Hata Yönetimi

Token alımında oluşabilecek hataları yönetin. HTTP hataları ve response doğrulaması yapın.

5. Refresh Token Kullanımı

Token süresi dolmadan önce refresh token ile yenilemek, credential'ları tekrar göndermekten daha güvenlidir.

Güvenlik Önerileri

Kritik Güvenlik Kuralları

  1. API Key ve Secret Key'i asla client-side kodda (JavaScript, mobil app) saklamayın
  2. Bu bilgiler sadece backend/sunucu tarafında tutulmalıdır
  3. HTTPS kullanımı zorunludur
  4. Token'ları log'larda kaydetmeyin
  5. Token'ları URL parametresi olarak göndermeyin

Test ve Production Ortamları

Test (Staging) Ortamı

Base URL: https://apigwstg.odeal.com/mobile

Test ortamında farklı API Key ve Secret Key kullanılır.

Canlı (Production) Ortamı

Base URL: https://apigw.odeal.com/mobile

Canlı ortam için ayrı API Key ve Secret Key verilir.

Sık Sorulan Sorular

Token ne kadar süre geçerlidir?

Token geçerlilik süresi expiresIn alanında saniye cinsinden döner. Genellikle 1 saat (3600 saniye) geçerlidir.

Token süresi dolduktan sonra ne olur?

Token süresi dolduğunda API istekleri 401 Unauthorized hatası döner. Yeni bir token almanız veya refresh token ile yenilemeniz gerekir.

Birden fazla token alabilir miyim?

Evet, ancak her yeni token alındığında önceki token geçersiz hale gelir. Aynı anda sadece bir aktif token bulunur.

Refresh token ne zaman kullanmalıyım?

Access token süresi dolmadan önce (örneğin 5 dakika kala) refresh token ile yeni token almanız önerilir. Bu sayede kesintisiz hizmet sağlarsınız.

Token'ı nasıl saklamalıyım?

Backend uygulamalarında memory cache veya Redis gibi hızlı cache çözümleri kullanabilirsiniz. Client-side uygulamalarda token alımı backend üzerinden yapılmalıdır.

İlgili Kaynaklar

Ödeal A.Ş.