vellTRDocs
RehberlerCanlıya Geçiş

Canlıya Geçiş

Orta15 min

KYC onboarding süreci, canlı API anahtarları, webhook sağlamlaştırma ve canlı yayın öncesi kontrol listesi.


Sandbox'tan üretime geçiş üç şeyi değiştirir: entegrasyonunuz artık gerçek bir bankaya ve gerçek paraya dokunur, hesabınızın canlı bir ödemeyi işleyebilmesi için önce KYC sürecini tamamlaması gerekir ve simülasyonda önemsiz görünen birkaç sağlamlaştırma adımı birden kritik hale gelir. Bu rehber, bu geçiş için kontrol listenizdir.

1. KYC onboarding sürecini tamamlayın

Her üye işyeri hesabı, canlı ödeme işleyebilmek için önce KYC sürecinden geçmelidir. İşletme bilgileri — şahıs işletmesi (TCKN) veya şirket (VKN/MERSİS) — üye işyeri panosundaki onboarding akışı üzerinden gönderilir; entegrasyonunuz tarafında yalnızca sonucu okumanız yeterlidir:

Shell
curl https://api.pay.kvell.group/v1/kyc/status \
  -H "X-Api-Key: pk_live_a1b2c3d4e5f6g7h8" \
  -H "X-Timestamp: 2026-04-13T10:00:00Z" \
  -H "X-Signature: <signature>"
JSON
{
  "status": "approved",
  "decidedAt": "2026-04-10T09:00:00Z",
  "sessionId": "f1c9a2e6-b4d4-e8a9-c1f2-a7b8c9d0e1f3",
  "subjectId": "sbj_3c4d5e6f7081"
}

status değeri none, pending, approved, rejected, suspended veya expired değerlerinden biridir. Ödemelere yalnızca approved durumundayken izin verilir — diğer her değer, herhangi bir ödeme çağrısında 403 KVELL-GW-4020 hatasıyla sonuçlanır. Birden fazla satıcı adına entegrasyon yapıyorsanız, her alt üye işyerinin de kendi KYC kararı vardır — bkz. Pazaryeri ve Bölünmüş Ödemeler.

2. Canlı kimlik bilgilerine geçin

SandboxÜretim
Temel URLapi.pay.sandbox.kvell.groupapi.pay.kvell.group
API anahtarı ön ekipk_demo_…pk_live_…
Gizli anahtar ön ekisk_demo_…sk_live_…

Panodan canlı bir anahtar çifti oluşturun, temel URL'nizi üretime yönlendirin ve X-Sim-Scenario göndermeyi bırakın — orada sessizce yok sayılır, ancak başlığın hâlâ orada olması bir ortamın karıştığının iyi bir işaretidir. Sandbox ile üretim arasındaki tam karşılaştırma için Sandbox Ortamında Test Etme rehberine bakın.

3. Webhook uç noktanızı sağlamlaştırın

Sandbox testleri genellikle üretimde hemen önem kazanan üç şeyi gizler:

  • HTTPS üzerinden yayın yapın. Kvell düz HTTP bir URL'ye teslimat yapmaz.
  • Her istekte X-Kvell-Signature doğrulaması yapın — gövde üzerinde işlem yapmadan önce. İmzasız veya yanlış imzalanmış bir yükü asla güvenilir kabul etmeyin.
  • X-Kvell-Event-Id üzerinden tekilleştirin, yalnızca olay tipi + ödeme id'sine göre değil. Yeniden denenen bir teslimat yeni bir X-Kvell-Delivery değeri alır ama aynı olay id'sini taşır.
  • 10 saniye içinde 2xx yanıtı verin. Hızlıca onaylayın, yavaş işleri (e-postalar, defter kayıtları, sipariş karşılama) asenkron olarak yapın — yavaş bir işleyici başarısız bir işleyiciyle aynı görünür ve yeniden denemeyi tetikler.
JavaScript
import crypto from 'node:crypto';

function verifyKvellSignature(rawBody, signatureHeader, secret) {
  // signatureHeader "sha256=<hex>" biçimindedir
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signatureHeader),
    Buffer.from(expected)
  );
}

Uç noktayı üye işyeri panosundan kaydedin (veya döndürün) — uç nokta yönetimi pano oturumunuz üzerinden yürür, imzalı genel API üzerinden değil. Tam olay listesi ve yeniden deneme takvimi için Webhook'lar rehberine bakın.

4. Canlı yayın öncesi kontrol listesi

KontrolNeden önemli
Her yazma işlemi bir idempotency güvencesi taşıyor (Idempotency-Key başlığı, veya oturum/tahsilatlar için transactionId)Zaman aşımı sonrası yeniden denenen bir istek çift tahsilata veya çift ödemeye yol açmamalı
Tutarlar her yerde tam sayı kuruş cinsinden15000, 150,00 TRY anlamına gelir — akışın herhangi bir yerinde ondalıklı sayı kullanmak bir hatadır
4xxx ile 5xxx hata kodları arasında ayrım yapıyorsunuz4xxx yeniden denemeyle başarılı olmaz (isteği düzeltin); 5xxx olabilir (geri çekilmeli olarak yeniden deneyin)
İade akışı uçtan uca test edildiKısmi bir iade ve refundableAmount değerini geri okumak dahil
Mutabakat (reconciliation) kurulduListelemek için GET /v1/transactions, zamanlanmış bir CSV/PDF çekimi için POST /v1/transactions/exports — ikisini de kendi defterinizle eşleştirin
Hız sınırınızı biliyorsunuzVarsayılan katman sürekli 500 istek/sn, anlık artışta 1.000 — sıkı bir döngü değil, geri çekilmeli yeniden denemeler tasarlayın

Örnek: bir mutabakat (reconciliation) dışa aktarımı zamanlama

Shell
curl -X POST https://api.pay.kvell.group/v1/transactions/exports \
  -H "X-Api-Key: pk_live_a1b2c3d4e5f6g7h8" \
  -H "X-Timestamp: 2026-04-13T10:00:00Z" \
  -H "X-Signature: <signature>" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "csv",
    "filters": { "from": "2026-04-01T00:00:00Z", "to": "2026-04-30T23:59:59Z", "status": "captured" }
  }'
JSON
{
  "exportId": "exp_3c4d5e6f7081",
  "status": "queued"
}

Dışa aktarım hazır olana kadar sorgulayın, ardından indirin:

Shell
curl https://api.pay.kvell.group/v1/transactions/exports/exp_3c4d5e6f7081 \
  -H "X-Api-Key: pk_live_a1b2c3d4e5f6g7h8" \
  -H "X-Timestamp: 2026-04-13T10:00:05Z" \
  -H "X-Signature: <signature>"
JSON
{
  "exportId": "exp_3c4d5e6f7081",
  "status": "ready",
  "downloadUrl": "/v1/transactions/exports/exp_3c4d5e6f7081/download",
  "rowCount": 128
}

Bunu düzenli bir takvimde (her gece veya her ay) çalıştırın ve rowCount ile toplamları kendi sipariş veritabanınızla karşılaştırın — kalıcı bir uyuşmazlık genellikle Kvell'in defterinin hatalı olduğu değil, bir webhook'un kaçırıldığı anlamına gelir.

5. Güvenlik notları

  • Gizli anahtarınız her isteği sunucu tarafında imzalar — asla bir tarayıcıya, mobil uygulamaya veya herkese açık bir depoya ait olmamalıdır.
  • Bir anahtar açığa çıkarsa panodan hemen döndürün; eski anahtar anında çalışmayı durdurur.
  • Ham bir kart numarasını asla loglamayın. Pratikte loglayacak bir numaranız da olmayacaktır — hosted checkout ve tokenization sayesinde bir PAN yalnızca Kvell'in kart kasasına ulaşır, altyapınızın başka hiçbir yerine değil.

Sonraki adımlar

RehberNeyi kapsar
Sandbox Ortamında Test EtmeAnahtarı çevirmeden önce her akışın geçtiğini doğrulayın
Pazaryeri ve Bölünmüş ÖdemelerBirden fazla satıcı adına satış yapma
API referansıHer uç nokta, istek ve yanıt biçimi