Payment Orchestrator
3D Secure

Kart — 3D Secure

POST /payments/direct/payment ile paymentMethod: "CARD" ve force3D: true gönderdiğinizde kart kendi sunucunuzdan banka doğrulamasıyla çekilir. Kart çekilmeden önce alıcı işlemi kendi bankasıyla onaylar (SMS kodu, banka uygulaması onayı, biyometri). Sorumluluk devri (liability shift) istediğinizde ve kartı kaydetmek istediğinizde kullanın. Platform banka gidiş-dönüşünü sizin yerinize yürütür; siz ödemeyi başlatır, alıcıyı yönlendirir ve sonucu alırsınız.

Checkout Formu kullanıyorsanız bu sayfa sizin için değildir; kart çekimini ve yönlendirmeyi form yapar → 2D Form · 3D Form.

Tüm tutarlar minor unit (kuruş) tam sayıdır: "amount": 10050 = ₺100,50. Ondalık ya da float göndermeyin.

⚠️

PCI DSS gerektirir. Ham kart numarasını (PAN) sunucunuzda alıp gönderdiğiniz için sistemleriniz PCI DSS kapsamına (SAQ D) girer. Kart verisi işlemek için sertifikalı değilseniz Checkout Formu kullanın.

Nasıl çalışır

İmzalı isteği gönderin

Sunucunuzdan POST /payments/direct/payment çağırın: paymentMethod: "CARD", force3D: true, callbackUrl ve card. Ödeme AWAITING_3D durumunda açılır ve yanıt bir REDIRECT aksiyonu taşır.

Alıcıyı yönlendirin

Alıcının tarayıcısını action.redirect.url adresine gönderin (GET /payments/threed/:token). Bu adres herkese açıktır; yoldaki tek kullanımlık token kimlik bilgisinin kendisidir. Platform alıcıyı bankanın 3D Secure sayfasına iletir.

Alıcı bankada doğrulanır

Banka alıcıdan doğrulama ister (SMS kodu, uygulama onayı). Bu adım alıcı ile bankası arasındadır.

Platform çekimi tamamlar

Banka doğrulama sonucunu platforma döndürür. Platform sonucu doğrular ve yalnız doğrulama başarılıysa çekimi yapar.

Sunucunuza imzalı bir form POST gelir

Alıcının tarayıcısı callbackUrl adresinize, sonucu taşıyan bir HTML form POST'u ile gönderilir. Bu POST alıcı arayüzünü yönetmek içindir; teslimat kararını ona göre vermeyin.

Webhook ile teyit edin

Nihai durum webhook olarak da gönderilir (payment.captured, payment.failed). Siparişi webhook'a ya da GET /payments/:id sorgusuna göre teslim edin.

⚠️

Başarılı yönlendirme başarılı ödeme değildir. 3D Secure'da iki aşama vardır: doğrulama (alıcının kendini bankaya kanıtlaması) ve yetkilendirme (paranın çekilmesi). Ödeme doğrulamayı geçip yetkilendirmede düşebilir: yetersiz bakiye, banka reddi, limit. "Alıcı bankadan döndü" diye ürün göndermeyin; payment.captured webhook'unu ya da GET /payments/:id teyidini bekleyin.

Kimlik doğrulama

Uç Step-Up ister: Authorization: Bearer at_… token'ınız ve isteğin Ed25519 imzası. Her istek şu başlıkları taşır:

BaşlıkDeğer
AuthorizationBearer at_test_… (test) ya da Bearer at_live_… (canlı)
X-Key-IdKayıtlı Ed25519 public key'inizin kimliği
X-DateISO 8601 istek zamanı; sunucu saatine göre ±5 dakika içinde
X-Nonceİstek başına benzersiz, tek kullanımlık değer
DigestHam JSON gövdesinin SHA-256=<base64> özeti
X-SignatureKanonik dizgi üzerinde Base64 Ed25519 imzası
Idempotency-KeyZorunlu, en fazla 200 karakter; bkz. Idempotency

İmzanın nasıl kurulacağı Kimlik Doğrulama sayfasındadır. Uç hesabınızda Payment Gateway ürününün açık olmasını ister.

İstek

POST https://api-gateway.lunixi.com/api/v1/payments/direct/payment
Content-Type: application/json

Kart alanları

AlanTipZorunluAçıklama
paymentMethodstringEvetCARD
force3DbooleanEvettrue. Boolean olmalıdır; "true" gibi metin değer 400 VALIDATION_ERROR alır. Gönderilmezse ya da false ise çekim 2D yapılır → Kart — 2D
cardobjectEvetKart bilgisi; bkz. card
callbackUrlstringHayırhttp ya da https adresi, en fazla 2048 karakter. Alıcının tarayıcısı sonuçla bu adrese POST edilir. Göndermezseniz alıcı platformun sonuç sayfasını görür ve sayfanıza dönmez
installmentintegerHayırTaksit sayısı, varsayılan 1. 2 ve üzeri için installmentQuoteToken gerekir
installmentQuoteTokenstringHayırTaksit quote'undan aldığınız bağlayıcı token; bkz. Taksit
preauthbooleanHayırtrue: banka doğrulamasından sonra tutar bloke edilir, ödeme AUTHORIZED olur; bkz. Ön provizyon. Verilmezse ya da false ise tutar çekilir

card, force3D, installment ve installmentQuoteToken yalnız paymentMethod: "CARD" ile gönderilebilir. Kartta sağlayıcıyı yönlendirme seçer; providerCode gönderilmez.

Sipariş alanları

AlanTipZorunluAçıklama
amountintegerEvetTutar, minor unit tam sayı; en az 1. Sepet toplamıdır: alıcının ödediği ürün ve hizmet bedeli, vade farkı hariç. basketItems gönderirseniz kalemlerin price toplamına eşit olmalıdır. Kartta taksit seçilirse vade farkını sistem ekler. Örnek: 10050
currencystring (enum)EvetISO 4217 kodu: TRY, USD, EUR, GBP, RUB, AED, SAR, QAR, KWD, JPY, CHF, CAD, AUD, CNY, AZN. Hesabınızda açık olmayan para birimi reddedilir
orderIdstringEvetSizin sipariş numaranız, en fazla 128 karakter. Örnek: ORD-84722
customerIdstringHayırSizin müşteri anahtarınız. Cüzdanla ödemede alıcıyı tanımlar; 3D Secure ile kart kaydında kart bu anahtarın altına yazılır. Örnek: cust_7788
descriptionstringHayırÖdeme açıklaması
localestringHayırMesaj dili, varsayılan tr
paymentChannelstringHayırÖdeme kanalı. Örnek: WEB
paymentGroupstringHayırÜrün grubu. Örnek: PRODUCT
buyerobjectHayırAlıcı bilgisi; bkz. buyer
shippingAddressobjectHayırTeslimat adresi; bkz. Adres
billingAddressobjectHayırFatura adresi; bkz. Adres
basketItemsarrayHayırSepet kalemleri; bkz. basketItems[]
metadataobjectHayırKendi kayıtlarınız için serbest anahtar-değer nesnesi. Ön provizyonu metadata ile değil preauth alanıyla isteyin

Tutar yalnız amount ile gönderilir; kaldırılan tutar alanları 400 payment.amount.field_removed alır. Tanımlı olmayan bir alan gönderirseniz istek 400 VALIDATION_ERROR ile reddedilir.

card

AlanTipZorunluAçıklama
cardHolderNamestringHam karttaKart üzerindeki ad soyad
cardNumberstringHam karttaKart numarası
expireMonthstringHam karttaİki haneli ay, 01–12
expireYearstringHam karttaİki haneli yıl. Örnek: 30
cvcNumberstringHam kartta3 ya da 4 haneli güvenlik kodu. Kayıtlı kart çekiminde de bankaların çoğu ister
cardUserKeystringKayıtlı karttaKartın kayıtlı olduğu müşteri anahtarı
cardTokenstringKayıtlı karttaKayıtlı kartın kalıcı referansı (storedCardToken). Checkout Formu'nun tek kullanımlık kart token'ı burada kullanılamaz
cardSavebooleanHayırtrue: kart, ödeme başarılı olursa customerId anahtarının altına kaydedilir. Yalnız 3D Secure istekte (force3D: true) gönderilebilir; 2D istekte 400 payment.card.save_requires_3ds alır
cardNamestringHayırKaydedilen karta verdiğiniz ad; cardSave: true ile birlikte. Örnek: İş kartım
  • expireMonth ve expireYear gönderildiğinde iki haneli olmalıdır.
  • Ham kartla çekimde cardHolderName, cardNumber, expireMonth, expireYear ve cvcNumber gönderilir. Kayıtlı kartla çekimde ham kart alanları yerine cardUserKey ve cardToken gönderilir.

buyer

buyer opsiyoneldir. Gönderirseniz aşağıdaki "Evet" alanlarının hepsi dolu olmalıdır. Checkout Formu intent'inde (POST /payments/intents, POST /payments/marketplace/intents) bu zorunluluk yoktur: alanların hepsi isteğe bağlıdır, gönderdiğiniz alanların tipi ve uzunluğu doğrulanır.

AlanTipZorunluÖrnek
idstringHayırCUST-1
namestringEvetAda
surnamestringEvetYılmaz
identityNumberstringEvet11111111111
emailstring (e-posta)Evet[email protected]
gsmNumberstringEvet+905000000000
citystringEvetİstanbul
countrystringEvetTurkey
zipCodestringEvet34732
ipstringEvetAlıcının IP adresi
registrationDatestringHayır2024-04-21 15:12:09
lastLoginDatestringHayır2026-10-05 12:43:35
registrationAddressstringHayırKayıtlı adres

Zorunluluk kuralı, customerId ile farkı ve hata alan yolları: Alıcı Bilgileri.

Adres

shippingAddress ve billingAddress aynı yapıdadır. Nesneyi gönderirseniz beş alan da zorunludur.

AlanTipÖrnek
contactNamestringAda Yılmaz
addressstringAltunizade Mah. …
citystringİstanbul
countrystringTurkey
zipCodestring34742

İki adresin farkı ve hata alan yolları: Adres Bilgileri.

basketItems[]

AlanTipZorunluAçıklama
idstringEvetKalem kodu
namestringEvetKalem adı
category1stringEvetAna kategori
category2stringHayırAlt kategori
itemTypestring (enum)EvetPHYSICAL ya da VIRTUAL
priceintegerEvetKalem tutarı, minor unit tam sayı, en az 0

Kalemlerin price toplamı amount'a eşit olmalıdır; eşit değilse istek 400 VALIDATION_ERROR ile reddedilir. Vade farkı kalemlere yazılmaz.

Örnek istek

# Step-Up imza başlıklarının nasıl hesaplandığı için Kimlik Doğrulama sayfasına bakın.
curl -X POST https://api-gateway.lunixi.com/api/v1/payments/direct/payment \
  -H "Authorization: Bearer at_test_5f3e2b1a..." \
  -H "Content-Type: application/json" \
  -H "X-Key-Id: mk_test_sk_..." \
  -H "X-Date: 2026-10-11T09:00:00.000Z" \
  -H "X-Nonce: 7d2c4e1a-3b9f-4a6d-8c51-2e0f9b7a6d34" \
  -H "Digest: SHA-256=..." \
  -H "X-Signature: ..." \
  -H "Idempotency-Key: ORD-84721-1" \
  -d '{
    "paymentMethod": "CARD",
    "force3D": true,
    "amount": 10050,
    "currency": "TRY",
    "orderId": "ORD-84721",
    "customerId": "cust_7788",
    "callbackUrl": "https://merchant.example.com/payments/3d-result",
    "card": {
      "cardHolderName": "Ada Yilmaz",
      "cardNumber": "5400000000000004",
      "expireMonth": "12",
      "expireYear": "30",
      "cvcNumber": "123"
    }
  }'

Yanıt

Banka gidiş-dönüşü tamamlanana kadar ödeme AWAITING_3D durumunda bekler. Yanıt HTTP 202 ile ve zarf status: "partial", code: "AWAITING_3D" olarak döner:

{
  "status": "partial",
  "code": "AWAITING_3D",
  "message": "…",
  "data": {
    "paymentId": "9c6f2b1a-4e8d-4a3f-b5e6-2d7c1a9b8e30",
    "orderId": "ORD-84721",
    "status": "AWAITING_3D",
    "paymentMethod": "CARD",
    "providerCode": "<providerCode>",
    "action": {
      "id": "3ds_9c6f2b1a-4e8d-4a3f-b5e6-2d7c1a9b8e30",
      "type": "REDIRECT",
      "expiresAt": "2026-10-11T09:15:00.000Z",
      "redirect": { "url": "/api/v1/payments/threed/<yönlendirme-token>" }
    }
  },
  "statusCode": 202,
  "requestId": "…"
}
AlanAçıklama
paymentIdÖdeme kimliği; capture, iade ve sorgu çağrılarında kullanılır
statusAWAITING_3D
providerCodeÖdemeyi yürüten sağlayıcının kodu; kartta sağlayıcıyı yönlendirme seçer. <providerCode> bir yer tutucudur
action.typeREDIRECT
action.redirect.urlAlıcının gideceği yönlendirme adresi
action.expiresAtYönlendirmenin son geçerlilik zamanı (ISO 8601)
  • action.redirect.url görelidir; https://api-gateway.lunixi.com köküne göre çözün ve alıcının tarayıcısını bu adrese gecikmeden yönlendirin (tarayıcı GET isteği).
  • Yönlendirme adresi tek kullanımlıktır. İkinci açılışta alıcı hata sayfası görür.
  • AWAITING_3D'de terk edilen ödemeyi platform kendisi sonuçlandırır: sağlayıcıya gerçek sonucu sorar ve ödemeyi gerçek durumuna bağlar (çekim yoksa FAILED, çekim yapılmışsa CAPTURED).
  • Kart 3D Secure aksiyonu için confirm çağrılmaz; sonuç dönüşte doğrulanır ve webhook ile bildirilir.

İstek doğrulamadan önce reddedilirse (limit, risk, geçersiz taksit quote'u) yanıt HTTP 400 ile döner: zarf status: "failure", data.status: "FAILED", code ret sebebini taşır. code alanına göre dallanın; message metni değişebilir. Zarfın alanları için bkz. Hata Yönetimi.

Sunucunuza gelen imzalı callback

Banka gidiş-dönüşünden sonra alıcının tarayıcısı callbackUrl adresinize bir HTML form POST (application/x-www-form-urlencoded) ile gönderilir. Gövde şu alanları taşır:

AlanAnlamı
paymentIdÖdemenin kimliği
orderIdSizin sipariş numaranız (istekte verdiyseniz)
statussuccess, failure ya da pending (sonuç hâlâ doğrulanıyor)
success"true" / "false"
codeMakine tarafından okunabilir sonuç kodu
messageOkunabilir sonuç mesajı
_timestampİmzalama zamanı, ISO 8601
_signaturev2=<hex>: ${paymentId}.${_timestamp}.${canonical} üzerinde HMAC-SHA256, hex özet

Kanonik dizgi, _signature dışındaki bütün alanların (_timestamp dahil) anahtara göre sıralanıp key=value biçiminde yazılması ve satır sonu (\n) ile birleştirilmesiyle oluşur.

⚠️

Bu callback bilgilendirme amaçlıdır; teslimat kararını ona göre vermeyin. _signature ve _timestamp platformun ürettiği bütünlük alanlarıdır; merchant tarafında bu imzayı doğrulayacağınız bir sır dağıtılmaz. Siparişi ödenmiş saymadan önce durumu GET /payments/:id ile ya da payment.captured webhook'u ile teyit edin.

Callback'i alıcının arayüzünü yönetmek (sonuç sayfası göstermek, oturumu sürdürmek) için kullanın. Alıcının tarayıcısı callbackUrl adresinize hiç ulaşmayabilir (kapanan sekme, bağlantı kaybı); webhook ise her durumda gönderilir.

Durum geçişleri

NeredenNereyeNe zaman
INITIATEDAWAITING_3D3D ödeme kabul edildi, yönlendirme adresi üretildi
AWAITING_3DCAPTUREDBanka doğrulaması ve çekim başarılı
AWAITING_3DAUTHORIZEDÖn provizyonda banka doğrulaması başarılı, tutar bloke edildi
AWAITING_3DFAILEDAlıcı doğrulamayı geçemedi ya da yarıda bıraktı, ya da yetkilendirme reddedildi
AWAITING_3DNEEDS_RECONCILIATIONSonuç belirlenemedi (ör. banka dönüşü kayboldu); platform sağlayıcıya tekrar sorar ve nihai durumu bağlar

Kayıtlı kart

Kartı kaydetme

Kart, 3D Secure ile yapılan bir ödeme sırasında kaydedilir; ayrı bir "kartı kaydet" çağrısı yoktur. force3D: true ile birlikte customerId gönderin ve ham kartla birlikte card.cardSave: true ekleyin; isterseniz card.cardName ile karta ad verin. Kart, doğrulama ve çekim başarılı olursa customerId anahtarının altına kaydedilir; ödeme başarısız olursa kaydedilmez.

Ödeme yanıtı bu ödemede yeni kaydedilen bir kartı taşıdığında kart data.savedCard içindedir:

AlanAçıklama
storedCardTokenKayıtlı kartın kalıcı referansı; sonraki çekimlerde card.cardToken olarak gönderilir
cardUserKeyKartın kayıtlı olduğu müşteri anahtarı
maskedNumber, binNumber, lastFourKartın maskeli numarası, BIN'i ve son dört hanesi
expireMonth, expireYearSon kullanma ayı ve yılı
cardBrand, cardType, cardFamily, bankCode, cardNameVarsa kartın marka, tip, aile, banka ve ad bilgisi
deduplicatedtrue: kart zaten kayıtlıydı, yeni kayıt açılmadı ve mevcut referans döndü

Kayıtlı kartları her zaman GET /payments/cards ile okuyabilirsiniz. Kart saklamanın panelden açılması ve kartların listelenmesi için bkz. Kart Saklama.

Kayıtlı kartla 3D ödeme

Ayrı bir uç yoktur. card nesnesine ham kart alanları yerine cardUserKey ve cardToken koyun:

{
  "paymentMethod": "CARD",
  "force3D": true,
  "amount": 10050,
  "currency": "TRY",
  "orderId": "ORD-84724",
  "callbackUrl": "https://merchant.example.com/payments/3d-result",
  "card": {
    "cardUserKey": "cust_7788",
    "cardToken": "9f3c1a7e-…",
    "cvcNumber": "123"
  }
}

Checkout Formu'nun tek kullanımlık kart token'ı burada kullanılamaz; cardToken kalıcı kayıt referansıdır.

Taksit

Alıcı bir taksit seçeneği seçtiyse installment ile birlikte taksit quote'undan aldığınız installmentQuoteToken'ı gönderin.

  • installment 2 ve üzeriyse installmentQuoteToken zorunludur.
  • amount sepet toplamı olarak kalır; vade farkını siz göndermezsiniz. Sistem vade farkını bağlayıcı quote'tan hesaplar ve çekilen tutara ekler: çekilen tutar = amount + vade farkı. Gösterdiğiniz tutar neyse çekilen tutar odur.
  • Sorgudaki ve webhook'taki tutar alanları bu çekilen tutarı gösterir.
  • Token yoksa, süresi dolmuşsa ya da istekle uyuşmuyorsa ödeme FAILED olur ve yanıt 400 INSTALLMENT_QUOTE_REJECTED döner. Yeni bir quote alıp yeni bir Idempotency-Key ile tekrar gönderin.

Ön provizyon

Tutarı çekmeden önce bloke etmek için istekte "preauth": true gönderin. Alıcı banka doğrulamasını tamamladığında para çekilmez: ödeme CAPTURED yerine AUTHORIZED olur ve payment.authorized gönderilir. Tutarı daha sonra capture ile çeker ya da void ile blokeyi kaldırırsınız.

  • Sağlayıcının ön provizyonu 3D Secure ile de desteklemesi gerekir. Desteklemeyen sağlayıcılar adaylardan çıkarılır; uygun sağlayıcı kalmazsa ödeme FAILED olur ve ret kodu PREAUTH_3DS_NOT_SUPPORTED'dır.
  • 3D Secure ile ön provizyonu destekleyen hiçbir sağlayıcı yoksa istek ödeme başlamadan 422 payment.preauth.three_ds_unsupported ile reddedilir. Talimat hiçbir koşulda anında çekime dönüştürülmez.
  • Capture, kısmi capture, void, süre dolumu ve hatalar: Ön Provizyon, Capture & İptal.

Idempotency

Idempotency-Key zorunludur (en fazla 200 karakter). Yoksa istek işlenmeden 400 payment.operation.idempotency_key_required alır. Ödemeyi değil denemeyi tanımlayan bir değer kullanın (örneğin ORD-84721-1).

DurumSonuç
Aynı anahtar, aynı istekİlk denemenin sonucu döner; ikinci ödeme açılmaz. Açık REDIRECT aksiyonu varsa yanıtta yine yer alır
Aynı anahtar, farklı istek (ör. farklı tutar)409 payment.idempotency.conflict
Aynı anahtarla ilk istek hâlâ işleniyor429 payment.idempotency.processing; kısa bir süre sonra aynı anahtarla tekrar deneyin
⚠️

Başarısız bir siparişi yeniden denemek için (başka kart, yeniden doğrulama) yeni bir Idempotency-Key gönderin. Aynı anahtarı kullanırsanız önceki denemenin sonucu döner. Aynı siparişi önce 2D sonra 3D ile denerken de yeni anahtar kullanın; aksi hâlde istek 409 ile reddedilir.

Hatalar

DurumYanıtNe yapmalı
Eksik, hatalı ya da tanımsız alan400 VALIDATION_ERRORdetails içindeki alanı düzeltin
Kaldırılan bir tutar alanı gönderildi400 payment.amount.field_removedTutarı yalnız amount ile gönderin
Sepet toplamı amount'a eşit değil400 VALIDATION_ERRORKalemlerin price toplamını amount'a eşitleyin
Idempotency-Key yok400 payment.operation.idempotency_key_requiredHer deneme için bir anahtar gönderin
Bearer token yok ya da süresi dolmuş401 UNAUTHENTICATEDYeni token alın
İmza doğrulanamadı401 INVALID_SIGNATUREKanonik dizgiyi Kimlik Doğrulama'daki sırayla kurun
Nonce daha önce kullanıldı401 NONCE_REPLAYHer istek için yeni X-Nonce üretin
X-Date ya da Digest hatalı401 INVALID_DATE, DIGEST_MISSING, INVALID_DIGESTBkz. Hata Yönetimi
Token ile imza anahtarı farklı merchant'a ait403 AUTH_MERCHANT_MISMATCHAynı hesabın anahtarlarını kullanın
IP izinli listede değil403 IP_NOT_ALLOWEDPanelden IP listesini güncelleyin
Hesap askıda403 MERCHANT_SUSPENDEDDestekle iletişime geçin
Ürün açık değil403 PRODUCT_NOT_ENABLEDPayment Gateway ürününün hesabınızda ve API anahtarınızda açık olduğunu doğrulayın
Ürün yetkisi o an doğrulanamadı503 PRODUCT_ENTITLEMENT_UNAVAILABLEGeçicidir; kısa süre sonra tekrar deneyin
Taksit quote'u geçersiz ya da eksik400 INSTALLMENT_QUOTE_REJECTED, ödeme FAILEDYeni quote alıp yeni Idempotency-Key ile gönderin
3D Secure ile ön provizyon desteklenmiyor422 payment.preauth.three_ds_unsupported ya da ödeme FAILED, ret kodu PREAUTH_3DS_NOT_SUPPORTEDPara bloke edilmedi; bkz. Ön Provizyon
Limit kuralı reddetti400 payment.limit.exceeded, ödeme FAILEDLimitlerinizi kontrol edin
Risk değerlendirmesi reddetti400 RISK_BLOCKED, ödeme FAILEDÖdemeyi teslim etmeyin
Yönlendirme adresi süresi dolmuş ya da kullanılmışGET /payments/threed/:token hata sayfası gösterirYeni Idempotency-Key ile yeni ödeme başlatın
Banka doğrulaması başarısızCallback status=failure, ödeme FAILED, payment.failedAlıcının başka kartla denemesine izin verin
Doğrulama sonrası yetkilendirme reddiCallback status=failure, ödeme FAILED, payment.failedReddi gösterin; teslimat yapmayın
Sonuç kesinleşmediCallback status=pending, ödeme NEEDS_RECONCILIATIONYeni ödeme açmayın; webhook'u bekleyin
Aynı anahtar, farklı istek409 payment.idempotency.conflictYeni deneme için yeni anahtar kullanın
Aynı anahtarla istek sürüyor429 payment.idempotency.processingKısa süre sonra aynı anahtarla tekrar deneyin
Geçici kesinti503GET /payments/:id ile durumu kontrol edin; aynı Idempotency-Key ile tekrar denemek ikinci ödeme açmaz

Yöntem ve sağlayıcı seçimine ait ortak kodlar: Payment — Hata kodları.

Webhook'lar

EventNe zaman
payment.capturedÇekim tamamlandı, para çekildi. Siparişi bunun üzerine teslim edin
payment.failedDoğrulama ya da yetkilendirme başarısız oldu (terk edilip çekimsiz sonuçlanan ödemeler dahil)
payment.authorizedÖn provizyonda banka doğrulaması tamamlandı ve tutar bloke edildi (AUTHORIZED); para henüz çekilmedi. Bkz. Ön Provizyon

Olayların data'sında paymentMethod: "CARD" ve ödemeyi yürüten sağlayıcının providerCode'u bulunur. Teslimat ve imza doğrulama için bkz. Webhook'lar.

Sonraki adımlar