POST /validate — Token Doğrulama
📋 Genel Bilgi
Gönderilen token'ı doğrular ve müşteri bilgisi, cihaz/IP detayları, KVKK/onay durumlarını döndürür.
Base URL: {{url}}/validate
Method: POST
Content-Type: application/json
🔐 Headers
| Header | Value |
|---|---|
| Authorization | Bearer {{masked_jwt_10}} |
| Content-Type | application/json |
📥 Request Body
{
"token": "13165160"
}
Parametreler
| Alan | Tip | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|
token | string | ✅ | Müşterinin mobil/web uygulamasından ürettiği doğrulama token'ı (QR/PIN/Barkod) | "13165160" |
🔄 Akış Diyagramı (Token Doğrulama — Mağaza Terminalinde Çağrılır)
Adım Açıklamaları:
| Adım | Taraf | İşlem | Açıklama |
|---|---|---|---|
| 1 | Müşteri → Mobil/Web | Doğrulama başlatılır | Müşteri mobil veya web uygulamasında doğrulama işlemi başlatır. |
| 2 | Mobil/Web → Müşteri | QR kod / PIN / Barkod üretir | Uygulama, müşteriye gösterilmek üzere bir doğrulama kimliği oluşturur. Bu bir QR kod, 6-8 haneli PIN veya barkod olabilir. |
| 3 | Müşteri ← Mobil/Web | Üretilen QR/PIN/Barkod gösterilir | Müşteri, üretilen doğrulama kimliğini alır. |
| 4 | Müşteri → Mağaza Yetkilisi | QR kodu okutur / PIN veya Barkodu gösterir | Müşteri, mağazadaki kasiyer yetkilisine mobil uygulamasındaki doğrulama kimliğini gösterir. Kasiyer terminalde QR okuyucu ile tarar, PIN'i ekrana yazar veya barkod okutur. |
| 5 | Mağaza Yetkilisi → API | Token'ı ekrana yazar / okutur | Kasiyer, doğrulama token'ını mağaza terminaline giriş yapar (QR okuyucu ile tarama, manuel PIN girişi veya barkod okuma). |
| 6 | Mağaza Yetkilisi → API | POST /validate endpoint'ini çağırır | Terminal, gönderilen token'ı doğrulamak için bu endpoint'e istek gönderir. |
| 7 | API → Mağaza Yetkilisi | Doğrulama sonucu döner | Müşteri bilgisi (isim, telefon), cihaz/IP detayları ve onay durumları (ivt.etk, ivt.kvkk) döner. |
| 8 | Terminal → Müşteri | Sonuç gösterilir | Kasiyer, müşteri bilgilerini ekranda görür ve işlemi devam ettirir (ödeme, sadakat puanı vb.). |
Token Türleri:
| Token Türü | Format | Açıklama |
|---|---|---|
| QR Kod | Görsel (SVG/PNG) | Müşteri uygulamasında oluşturulan QR kod; kasiyer terminalindeki okuyucu ile taranır. |
| PIN Kodu | 6-8 haneli numeric | Müşteri uygulamasında üretilen sayısal token; kasiyer tarafından manuel ekrana yazılır. |
| Barkod | Görsel (1D/2D) | QR okuyucu olmayan kasalar için alternatif barkod formatı. |
✅ Response — 200 OK
{
"token": "13165160",
"success": true,
"msisdn": "{{customer_msisdn}}",
"ip": "{{customer_ip}}",
"deviceInfo": {
"requestId": null,
"timestamp": "2026-07-26T10:39:06.706Z",
"ip": "{{customer_ip}}",
"deviceContext": {
"deviceName": "Desktop Computer",
"deviceVendor": "",
"deviceModel": "",
"deviceType": "desktop",
"osName": "Windows",
"osVersion": "10",
"browserName": "Chrome",
"browserVersion": "150.0.0.0",
"cpuArchitecture": "amd64"
},
"ipContext": {
"country": "Türkiye",
"countryCode": "TR",
"city": "Küçükçekmece",
"region": "Istanbul",
"regionCode": "34",
"latitude": {{customer_latitude}},
"longitude": {{customer_longitude}},
"timezone": "Europe/Istanbul",
"postalCode": "{{customer_postal_code}}",
"accuracyRadius": 500
}
},
"ivt": {
"etk": {
"sms": 1,
"call": 1,
"email": 1,
"share": 1
},
"kvkk": {
"process": 1,
"share": 1,
"international": 1
},
"loyalty": -1,
"firstName": "{{customer_firstName}}",
"lastName": "{{customer_lastName}}",
"email": "{{customer_email}}"
}
}
Response Alanları
| Alan | Tip | Açıklama |
|---|---|---|
token | string | Doğrulanan token |
success | boolean | Doğrulama sonucu |
msisdn | string | Müşteri telefon numarası |
ip | string | İstemci IP adresi |
deviceInfo | object | Cihaz ve IP detayları |
ivt.etk | object | EK (Eksik Onay) durumları — sms, call, email, share |
ivt.kvkk | object | KVKK onayları — process, share, international |
❌ Error Responses
Tüm hata yanıtları aşağıdaki formatta döner:
{
"Response": {
"code": 5001,
"description": "Verification code is missing"
},
"Success": false
}
| HTTP | code | Enum | description | Ne Zaman Oluşur |
|---|---|---|---|---|
| 400 | 5001 | ValidateCodeMissing | Verification code is missing | token alanı boş gönderildi |
| 404 | 5002 | ValidateCodeNotFound | Verification code not found | token'a karşılık gelen bir qr_login_sessions kaydı bulunamadı — token hiç yok, süresi dolmuş (expiresAt), ya da zaten kullanılmış (used=1). Aynı kod, kullanıcı bulunamadığında da (u == null) dönüyor — token DB'de var ama bağlı olduğu User kaydı silinmiş/yok olsa bile bu durumda da 5002 döner (bkz. Not). |
| 500 | 5004 | ValidateCustomerCreateProblem | A problem occurred while creating the customer | Token ve kullanıcı doğru bulundu, ama customerId oluşturma işlemi (0 dönerse) başarısız oldu |
Örnek — 400 Missing Token
{
"Response": {
"code": 5001,
"description": "Verification code is missing"
},
"Success": false
}
Örnek — 404 Code Not Found / Expired / Already Used
{
"Response": {
"code": 5002,
"description": "Verification code not found"
},
"Success": false
}
Örnek — 500 Customer Create Problem
{
"Response": {
"code": 5004,
"description": "A problem occurred while creating the customer"
},
"Success": false
}
📝 Notlar
- Bu endpoint mağaza terminali/kasiyer tarafı tarafından çağrılır, müşteri tarafı değil.
- Müşteri önce mobil/web uygulamasından doğrulama kimliği (QR/PIN/Barkod) üretir ve mağazaya gösterir.
- Kasiyer token'ı QR okuyucu ile tarar, ekrana yazar veya barkod okutur →
/validateendpoint'ine gönderilir. etkalanındaki değerler: 1 = onaylanmış, -1 = onaysız/bilinmiyorkvkkalanındaki değerler: 1 = onaylanmış, -1 = onaysız/bilinmiyorloyalty: -1değeri sadakat bilgisinin bulunamadığını gösterir.ipContext.accuracyRadius: IP konumunun tahmini doğruluk yarıçapı (metre)