Webhook İmza Doğrulama ve İdempotensi

Ham istek gövdesi ile 6MM Ajan webhooks doğrulayın ve tekrarlamalar, zaman aşımları ve tekrarlayan olaylar işlemini tekrarlayan iş eylemleri olmadan gerçekleştirin.

Markdown olarak görüntüle

Webhooks eş arka uçunu asenkron iş durumu değişiklikleri hakkında bilgilendirir. Teslimat tekrar denenebildiği için, her alıcı güvenilir verileri ayrıştırmadan önce imzayı doğrulamalı ve olayı ikametsiz bir şekilde işlemek zorundadır.

Webhook başlıklar

BaşlıkTanım
X-Ajan-Zaman DamgasıUnix zaman damgası saniyelerde.
X-Ajan-NonceTekrar oynatma koruması yok.
X-Ajan-İmzasıHMAC-SHA256 imzası.
timestamp + nonce + rawBody

İmzalanmış değeri yeniden oluştururken HTTP üzerinden alınan tam ham istek gövdesini kullanın. İlk olarak JSON ayrıştırıp yeniden serileştirmek, boşluk veya alan sırasını değiştirebilir ve farklı bir imza üretebilir.

Doğrulama akışı

  1. Zaman damgası, nonce ve imza başlıklarını okuyun.
  2. Değiştirilmemiş ham istek gövdesini ele geçir.
  3. Build timestamp + nonce + rawBody.
  4. Hesapla HMAC-SHA256 partnerle API sır.
  5. Hesaplanan ve alınan imzaları sabit zamanlı bir karşılaştırma ile karşılaştırın.
  6. Onaylanmış zaman damgası-tazelik ve tekrar kullanmama kontrolleri uygulanır.
  7. Olayı ancak doğrulama başarılı olduktan sonra ayrıştırıp işleyin.

Resmi bir Agent SDK doğrulayıcı mevcut olduğunda, bağımsız imza kodunu korumak yerine onu kullanın.

Order idempotency

DavaYol tutuşu
İlk transfer isteğiKüresel olarak benzersiz bir agentOrderNooluşturun.
HTTP molaYeni bir agentOrderNo oluşturmadan önce orijinal sorgulayın.
PROCESSING yanıtıwebhook veya sipariş durumunu sorgulayın.
Tekrarlayan webhookIdempotency anahtarı ve nihai duruma göre deduplicate.

Tekrarlanan teslimatı tanıyacak kadar bilgi depolayın ve güvenli bir şekilde kurtarın:

SahaAmaç
Etkinlik veya iş anahtarıBildirimi veya işlemi benzersiz şekilde tanımlar.
Ortak sipariş numarasıEtkinliği orijinal isteğe bağlar.
Yük hashÇelişkili tekrarlayan yükleri tespit etmeye yardımcı olur.
Mevcut işlem durumuAlınan, işlenen ve başarısız olan çalışmaları ayırt eder.
Son iş durumuTerminal bir eylemin iki kez uygulanmasını engeller.
İşlenen zaman damgasıSoruşturma ve tutma politikalarını destekler.

Mümkün olduğunda aynı işlemde iş değişikliği ve idempotency kaydını taahhüt edin. Tekrarlanan bir olay, bakiye, sipariş veya kullanıcı değişikliğini tekrar uygulamak yerine zaten bilinen sonucu geri getirmelidir.

Mola ve yeniden deneme kuralı

HTTP bir zaman aşımı orijinal talebin başarısız olduğunu kanıtlamaz. Operasyonu orijinal agentOrderNoile sorgulayın veya başka bir eylemin gerekip gerekmediğine karar vermeden önce webhookbekleyin. Her zaman bitiminden sonra yeni bir iş siparişi numarası oluşturmak, fonların tekrarlanmasına neden olabilir.

Üretim kontrol listesi

  • Ayrıştırma veya iş işleme öncesi imzayı JSON doğrulamak.
  • Ham gövdeyi ayrıştırılmış yükten bağımsız olarak korumak.
  • Onaylanmış entegrasyon politikasına göre eski veya tekrar oynanan talepleri reddetmek.
  • Etkinlik işleme süreçlerini tekrarlanan ve sırasız teslimatlar için güvenli hale getirmek.
  • Etkinlik kimliklerini, ortak sipariş numaralarını, işlem sonuçlarını ve istek zamanını kaydet.
  • Loglardan ve destek eklerinden sırlar ve imza değerlerini mantıklayın.