Gezinmeye atla

Webhook Etkinlikler ve Tasfiye Uyarıları

Satıcı Webhook olay türleri, idempotency kimlikleri, tasfiye uyarı alanları ve fon sonuç örnekleri.

Markdown olarak görüntüle

Bu sayfa takip ediyor Agent Java SDK WEBHOOKS.md taahhüt sırasında fa6c7b6. Bu yalnızca belgelere yönelik bir güncelleştirmedir; uyarı yardımcı yöntemlerini içeren yeni bir SDK yapı yayınlanmadı.

Dört olay türünün tümü, satıcının tek yapılandırılmış geri aramasını URL (agents.webhook_url) kullanır. Gövde üzerine gönderim event; ayrı bir uyarıya URL gerek yoktur. Örnekler yük yapısını gösterir ve bir test ortamına veri eklemek için kullanılmamalıdır.

Olaylar ve geçicilik

eventAnlamtargetStatus / tekilleştirme anahtarı
transfer.completedTersine çevrildikten sonra orijinal siparişin güncellenmesi de dahil olmak üzere terminal durumunu aktarın; mutlaka başarılı değilSUCCESS / FAILED / REVERSED; orderType:orderId:targetStatus
reverse.completedTers sipariş terminal durumuSUCCESS / FAILED; orderType:orderId:targetStatus
transfer.deadNihai fon siparişi durumu, yeniden denemelerden sonra onaylanmadan kalır ve manuel mutabakat gerektirir; onaylanmış bir başarısızlık değilDEAD; orderType:orderId:targetStatus
liquidation.warningSipariş terminal durumu alanları olmadan tasfiye riski uyarısıliquidation.warning:notificationId

Satıcı uyarı olayı şu şekildedir: liquidation.warning; kullanıcı WebSocket data.event, LIQUIDATION_WARNING olarak kalır. İki kanalı ayrı tutun.

Geçmiş satıcı bildirimleri LIQUIDATION_WARNING kullanıldı. Dondurulmuş veriler yeniden denemelerde orijinal gövdelerini korur, bu nedenle alıcıların her iki adı da tanıması gerekir. Mevcut iş kayıtları büyük harfli bir uyarı anahtarı öneki kullanıyorsa, bildirimin tekrar işlenmesini önlemek için orijinal anahtarı saklayın veya taşıma sırasında her iki anahtarı da kontrol edin.

Mevcut WebhookVerifier.idempotencyKey yalnızca fon olayları için orderType:orderId:targetStatus’i çıkarır ve uyarı yükleri için boş bir dize döndürür. Bu belge güncellemesiyle uyarı yardımcı yöntemleri içeren yeni bir SDK yapı yayınlanmamıştır. Ham uyarı gövdesini doğrulamak için mevcut verify yöntemini kullanmaya devam edin. İmza ve sahiplik kontrollerinden sonra, satıcı iş kodunun her iki etkinlik adını da tanıması, notificationId öğesinin pozitif bir ondalık tamsayı dizesi olduğunu doğrulaması ve liquidation.warning:<notificationId> oluşturması gerekir. Asla boş bir veri tekilleştirme anahtarı kullanmayın veya fon talimatı alanlarını içermesi için uyarı gerektirmeyin.

Satıcı ve environment kapsamında tekilleştirmeyi sürdürün ve bunu iş süreçleriyle atomik olarak gerçekleştirin. Farklı notificationId değerlerine sahip FIRST / UPGRADE / REMINDER bildirimleri bağımsızdır; bunları kullanıcı, bölüm veya eventType temelinde gruplayarak atmayın. Boş anahtar, geçerli bir kimliğin çıkarılamadığı anlamına gelir. SDK yalnızca bir yardımcı anahtar döndürür; kayıtları saklamaz veya ticari işlemler gerçekleştirmez. Aynı kimliği farklı bir bedenle çatışma olarak kaydedin; işlenen gövdenin üzerine yazmayın.

Tasfiye uyarı alanları ve örneği

AlanTip / açıklama
notificationIdPozitif ondalık tamsayı dizesi; benzersiz bildirim kimliği. Bunu kayan noktalı sayıya dönüştürmeyin.
eventTypeFIRST: mevcut bölümdeki ilk uyarı; UPGRADE: bu bölümde normal risk yüksek riske yükseltildi; REMINDER: devam eden riskin bir başka hatırlatıcısı.
severityNORMAL / HIGH. FIRST zaten HIGH olabilir; UPGRADE, HIGH’dir; REMINDER, NORMAL veya HIGH olabilir.
occurredAtJSON sayı; Uyarının tetiklendiği Unix milisaniyesi, HTTP teslimatının ulaştığı zaman değil.
objecttype=CROSS: symbol, side ve positionId için boş dizelere sahip çapraz kenar boşluğu hesabı. ISOLATED: karşılık gelen sözleşmeyi, tarafı ve pozisyon kimliğini taşıyan izole marjlı pozisyon.
episodeSicim; güncel uyarı bölümü. FIRST kullanıcının ilk uyarısı anlamına gelmez.
stateVersion / configVersionDizeler; yukarı akış durumu/yapılandırma sürümü. Bu alanlara dayalı bildirimleri bağımsız olarak atmayın.
riskRatio / minLargePositionValue / liquidationHighRiskThresholdRisk oranı, normal uyarı eşiği ve yüksek risk eşiği için ondalık dizeler. Hassasiyeti koruyun; yukarı akış eşik kurallarını hesaplar.
environmentPRODUCTION / SIMULATED; sunucu adına göre değil, yapılandırılmış fon ortamına göre izole edin.
agentId / agentCode / agentUserIdDizeler; acente kimliği, acente kodu ve satıcı tarafı kullanıcı kimliği.
platformUserIdSicim; Hizmetin dahili user_id değil, bağlama sonucuyla eşleşen genel platform kullanıcı kimliği.
{
"event": "liquidation.warning",
"notificationId": "68460336",
"eventType": "FIRST",
"severity": "NORMAL",
"occurredAt": 1791875870804,
"object": {
"type": "CROSS",
"symbol": "",
"side": "",
"positionId": ""
},
"episode": "3",
"stateVersion": "9",
"riskRatio": "0.29133109",
"minLargePositionValue": "0.20000000",
"liquidationHighRiskThreshold": "0.40000000",
"configVersion": "8",
"environment": "PRODUCTION",
"agentId": "16",
"agentCode": "DEMO",
"agentUserId": "merchant-user-001",
"platformUserId": "6054354872"
}

Sonuç örneğini aktar

Fon geri aramaları mevcut türlerini korur: orderId ve agentId, JSON sayılarıdır; amount ve platformUserId dizelerdir. Uyarı dizesi agentId kuralını fon geri aramalarına uygulamayın. Tamsayı / ondalık türleri kullanarak büyük tamsayıları hassasiyet kaybı olmadan okuyun. completedAt, UTC RFC3339’dır; ts Unix saniyesidir.

{
"environment": "PRODUCTION",
"event": "transfer.completed",
"orderType": "transfer",
"orderId": 10001,
"orderNo": "merchant-order-001",
"targetStatus": "SUCCESS",
"agentId": 16,
"agentCode": "DEMO",
"currency": "USDT",
"amount": "10.00",
"direction": "IN",
"transferMode": "FIXED_AMOUNT",
"agentUserId": "merchant-user-001",
"platformUserId": "6054354872",
"rejectCode": 0,
"rejectMessage": "",
"failReason": "",
"completedAt": "2026-10-13T07:17:50Z",
"ts": 1791875870
}

Ters sonuç örneği

{
"environment": "PRODUCTION",
"event": "reverse.completed",
"orderType": "transfer",
"orderId": 10002,
"orderNo": "merchant-reverse-001",
"targetStatus": "SUCCESS",
"agentId": 16,
"agentCode": "DEMO",
"currency": "USDT",
"amount": "10.00",
"direction": "IN",
"transferMode": "FIXED_AMOUNT",
"agentUserId": "merchant-user-001",
"platformUserId": "6054354872",
"rejectCode": 0,
"rejectMessage": "",
"failReason": "",
"completedAt": "2026-10-13T07:17:50Z",
"ts": 1791875870
}

Fon emri ölü durum örneği

{
"environment": "PRODUCTION",
"event": "transfer.dead",
"orderType": "transfer",
"orderId": 10003,
"orderNo": "merchant-order-002",
"targetStatus": "DEAD",
"agentId": 16,
"agentCode": "DEMO",
"currency": "USDT",
"amount": "10.00",
"direction": "IN",
"transferMode": "FIXED_AMOUNT",
"agentUserId": "merchant-user-001",
"platformUserId": "6054354872",
"rejectCode": 0,
"rejectMessage": "",
"failReason": "order dead",
"completedAt": "2026-10-13T07:17:50Z",
"ts": 1791875870
}

Bu örnekler yalnızca protokolü gösterir. FAILED için, rejectCode, rejectMessage ve failReason gerçek reddi yansıtır. Etkinlik adı tek başına paranın yatırıldığını kanıtlamaz.

İmza doğrulama, yanıtlar ve yeniden denemeler