Kimlik Doğrulama API Dokümantasyonu
Kullanıcı giriş işlemleri ve JWT token yönetimi
Genel Bakış
OdemeNet API kimlik doğrulama sistemi JWT (JSON Web Token) tabanlıdır. Kullanıcılar giriş yaptıktan sonra aldıkları token ile API endpoint'lerine erişebilirler.
Önemli: Token süresi 5 saattir. Süre dolduğunda yeniden giriş yapmanız gerekmektedir.
Desteklenen Giriş Türleri:
- API Kullanıcısı (Tip 1): Mobil uygulama ve API entegrasyonları için -
/api/Auth/Login - Web Kullanıcısı (Tip 2): Web paneli için -
/api/Auth/LoginWeb
Kullanıcı Girişi
Endpoint Bilgileri
| Method | POST |
| URL | /api/Auth/Login |
| Content-Type | application/json |
Request Parametreleri
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
MemberMerchantNo |
string | Evet | Üye işyeri numarası |
Username |
string | Evet | Kullanıcı adı |
Password |
string | Evet | Kullanıcı şifresi |
Canlı Test
Web Kullanıcı Girişi
Endpoint Bilgileri
| Method | POST |
| URL | /api/Auth/LoginWeb |
| Content-Type | application/json |
Request Parametreleri
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
Username |
string | Evet | Kullanıcı adı |
Password |
string | Evet | Kullanıcı şifresi |
Not: Web girişi için üye işyeri numarası gerekmez. Sadece kullanıcı adı ve şifre yeterlidir.
Web Giriş Örneği
JSON
{
"Username": "webuser",
"Password": "password123"
}
Farklar
- Kullanıcı Tipi: Sadece tip 2 (Web kullanıcısı) giriş yapabilir
- Üye İşyeri No: Gerekmez, kullanıcı adı ile doğrudan arama yapılır
- Token Claims: UserType claim'i eklenir
Response Örnekleri
Başarılı Response
JSON
{
"status": true,
"message": "Giriş başarılı",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenExpiration": "2024-01-15T18:30:00",
"refreshToken": "550e8400-e29b-41d4-a716-446655440000",
"userId": "123e4567-e89b-12d3-a456-426614174000",
"companyName": "Test Firması",
"companyId": "987fcdeb-51a2-43d7-8f9e-123456789abc",
"endDate": "2024-12-31T23:59:59",
"email": "test@example.com",
"fullName": "Test Kullanıcı"
}
}
Hatalı Response Örnekleri
Kullanıcı Bulunamadı:
JSON
{
"status": false,
"message": "User not found."
}
Hatalı Şifre:
JSON
{
"status": false,
"message": "Invalid password."
}
Kullanıcı Pasif:
JSON
{
"status": false,
"message": "User account is inactive."
}
Firma Pasif:
JSON
{
"status": false,
"message": "Company is inactive."
}
Hata Kodları ve Mesajları
| Durum | Hata Mesajı | Açıklama | Çözüm |
|---|---|---|---|
| Hata | "User not found." | Girilen kullanıcı adı sistemde kayıtlı değil | Kullanıcı adını kontrol edin veya yöneticiye başvurun |
| Hata | "Invalid password." | Girilen şifre yanlış | Şifrenizi kontrol edin veya şifre sıfırlama işlemi yapın |
| Uyarı | "User account is inactive." | Kullanıcı hesabı devre dışı bırakılmış | Sistem yöneticisine başvurun |
| Uyarı | "Company is inactive." | Firma hesabı devre dışı bırakılmış | Firma yöneticisine başvurun |
| Hata | "Company not found." | Girilen üye işyeri numarası sistemde kayıtlı değil | Üye işyeri numarasını kontrol edin |
| Uyarı | "This user type is not suitable for login." | Kullanıcı tipi API girişi için uygun değil | Doğru kullanıcı tipi ile giriş yapın |
| Hata | "Bir hata oluştu: [hata detayı]" | Sistem hatası | Teknik destek ekibiyle iletişime geçin |
Kod Örnekleri
C# HttpClient
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
var client = new HttpClient();
var loginData = new
{
MemberMerchantNo = "123456",
Username = "testuser",
Password = "password123"
};
var json = JsonSerializer.Serialize(loginData);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.odemenet.com/api/Auth/Login", content);
var result = await response.Content.ReadAsStringAsync();
JavaScript Fetch API
const loginData = {
MemberMerchantNo: '123456',
Username: 'testuser',
Password: 'password123'
};
fetch('https://api.odemenet.com/api/Auth/Login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(loginData)
})
.then(response => response.json())
.then(data => {
if (data.status) {
localStorage.setItem('token', data.data.token);
console.log('Giriş başarılı:', data.data);
} else {
console.error('Giriş hatası:', data.message);
}
});
cURL Command
curl -X POST "https://api.odemenet.com/api/Auth/Login" \
-H "Content-Type: application/json" \
-d '{"MemberMerchantNo":"123456","Username":"testuser","Password":"password123"}'
Python Requests
import requests
data = {
'MemberMerchantNo': '123456',
'Username': 'testuser',
'Password': 'password123'
}
response = requests.post('https://api.odemenet.com/api/Auth/Login', json=data)
result = response.json()
if result['status']:
token = result['data']['token']
print(f"Giriş başarılı. Token: {token}")
else:
print(f"Giriş hatası: {result['message']}")
Güvenlik Notları
Önemli Güvenlik Uyarıları
- Şifreler SHA256 ile hash'lenerek saklanmaktadır
- Token'lar 5 saat sonra otomatik olarak geçersiz hale gelir
- HTTPS kullanımı zorunludur
- Token'ları güvenli şekilde saklayın ve paylaşmayın
- Her istekte Authorization header'ında Bearer token kullanın