JWT Gereksinimleri

JWT’niz aşağıdaki özelliklere uygun olmalıdır:

  • Algoritma: HS256 (HMAC SHA-256)
  • İmza: SHA-256 hash kullanılarak oluşturulmuş
  • Geçerlilik Süresi: Kısa ömürlü token (60 saniye)

İmza Oluşturma

JWT oluşturmadan önce bir imza oluşturmanız gerekir:

const crypto = require('crypto');

// Örnek değerler
const currency = 'BTC';
const amount = '0.001';
const orderId = '12345';

// İmza stringi oluştur
const signatureData = `${currency}#${amount}#${orderId}`;

// İmza hash oluştur
const signature = crypto
  .createHash("sha256")
  .update(JSON.stringify(signatureData))
  .digest("hex");

JWT Payload Yapısı

JWT payload’ınız şunları içermelidir:

const payload = {
  "url": "/path/to/endpoint",  // API uç nokta yolu
  "iat": Date.now(),          // Oluşturulma zamanı (milisaniye)
  "exp": Date.now() + 60000,  // Geçerlilik süresi (şu anki zaman + 60 saniye)
  "key": "YOUR_AUTH_KEY",     // Sizin Auth Key'iniz
  "signature": signature      // Yukarıda oluşturulan imza
};

Önemli Notlar:

  • Tüm tarih/saat değerleri GMT formatında olmalıdır
  • Geçerlilik süresi (exp), şu anki zaman + 60 saniye (milisaniye olarak) olarak ayarlanmalıdır

JWT Oluşturma

JWT’yi imzalamak için Enc Key’inizi kullanın:

const jwt = require('jsonwebtoken');

// İmzalı token oluştur
const token = jwt.sign(
  payload,
  'YOUR_ENC_KEY',   // Sizin Enc Key'iniz
  { algorithm: 'HS256' }
);

// Token artık API isteğinizde kullanılabilir

JWT’yi İsteklerde Kullanma

JWT’yi API isteklerinize dahil edin:

const headers = {
  'Authorization': `Bearer ${token}`,
  'x-auth-key': 'YOUR_AUTH_KEY',
  'Content-Type': 'application/json'
};

// Bu başlıklarla API isteğinizi yapın

Sorun Giderme

Kimlik doğrulama hatalarıyla karşılaşırsanız:

  • Auth Key ve Enc Key’inizin doğru ve aktif olduğunu doğrulayın
  • Sistem saatinizin senkronize olduğundan emin olun (JWT doğrulama zaman duyarlıdır)
  • Gerekli tüm payload alanlarının mevcut ve doğru formatta olduğundan emin olun
  • İmzanızın doğru şekilde oluşturulduğunu kontrol edin