vellTRDocs
API Referansına DönÖdemelerÖdeme Oturumu Oluştur

Ödeme Oturumu Oluştur

POST/v1/payments/sessionsCore

Barındırılan bir ödeme sayfası oturumu oluşturur. Oturum; tutarı, açıklamayı ve yönlendirme URL'lerini taşır, alıcı kart (veya TR QR) akışını Kvell'in barındırdığı sayfa üzerinden tamamlar. Kart ile ödeme yerine BKM/TCMB TR QR ödemesi oluşturmak için mode="qr" değerini ayarlayın.

Kimlik Doğrulama

İmza Deseni

HMAC-SHA256(secretKey, "{timestamp}\nPOST\n/v1/payments/sessions\n{sha256(body)}")
BaşlıkDeğerAçıklama
X-Api-Keypk_live_a1b2c3d4e5f6g7h8Merchant public API key
X-Signature{hmac_sha256_hex}Hex HMAC-SHA256 request signature (see below)
X-Timestamp2026-04-13T10:00:00ZISO 8601 UTC request time, validated within ±5 min

İstek Parametreleri

AdTürZorunluAçıklama
transactionIdstringZorunluUnique merchant transaction id (idempotency fence, unique per merchant)
amountintegerİsteğe BağlıAmount in kuruş (1/100 TRY). >=100 for mode="payment"/"qr"; omit for mode="card_update_only"
currencystringZorunluISO 4217, always "TRY" in Phase 1
descriptionstringİsteğe BağlıTransaction description shown on the checkout page
returnUrlstringZorunluRedirect URL after the buyer finishes (success or failure)
callbackUrlstringİsteğe BağlıOverride the store default webhook URL for this payment
installmentEnabledbooleanİsteğe BağlıShow the installment picker on the hosted page
customerIdstringİsteğe BağlıBind the session to a saved customer (enables save-card)
modestringİsteğe Bağlı"payment" (default) | "card_update_only" | "qr"
splitsarrayİsteğe BağlıMarketplace split config [{submerchantId, amountMinor}] — payment mode only

İstek Örneği

JSONİstek Gövdesi
{
  "transactionId": "ORDER-2026-001",
  "amount": 15000,
  "currency": "TRY",
  "description": "Order #1234",
  "returnUrl": "https://merchant.example.com/return"
}

Yanıt Parametreleri

AlanTürÖrnek
sessionIdstring"3f1c9a2e-6b4d-4e8a-9c1f-2a7b8c9d0e1f"
checkoutUrlstring"https://pay.kvell.group/s/3f1c9a2e-6b4d-…
expiresAtstring"2026-04-13T10:30:00Z"
merchantIdstring"mrc_8a1b2c3d4e5f"
amountinteger15000
currencystring"TRY"
statusstring"active"

Yanıt Örneği

JSONYanıt
{
  "sessionId": "3f1c9a2e-6b4d-4e8a-9c1f-2a7b8c9d0e1f",
  "checkoutUrl": "https://pay.kvell.group/s/3f1c9a2e-6b4d-4e8a-9c1f-2a7b8c9d0e1f",
  "expiresAt": "2026-04-13T10:30:00Z",
  "merchantId": "mrc_8a1b2c3d4e5f",
  "amount": 15000,
  "currency": "TRY",
  "status": "active"
}

Durum Kodları

200Success
201Created
400Bad Request
401Unauthorized
404Not Found
429Rate Limited
DeneSahte
POSThttps://api.pay.sandbox.kvell.group