IOSOR Panduan

Webhook duplikat tidak boleh memicu debit kedua

Jalur gagal: percobaan ulang dan putar ulang tetap idempoten pada dana prabayar dan kotak masuk — satu ID peristiwa, satu baris debit, satu baris kotak masuk.

Pengiriman setidaknya sekali akan mencoba lagi. Webhook duplikat yang memposting debit kedua atau baris kotak masuk kedua adalah insiden uang dan operasional, bukan konfirmasi yang tidak berbahaya. Halaman ini adalah jalur gagal: percobaan ulang dan putar ulang tetap idempoten pada dana prabayar dan kotak masuk — bukan esai idempotensi pengiriman API dan bukan buku panduan percobaan ulang SMS masuk.

Terkait: Gerbang tanda tangan dan jendela replay, Kontrak webhook sebelum pengiriman pertama, Baris debit vs status pengiriman di ledger yang sama.

IOSOR adalah prabayar label putih.

Idempotensi adalah jalur gagal, bukan slogan

Jalur sukses: satu peristiwa bertanda tangan, satu penerimaan, satu debit. Jalur gagal membakar kepercayaan — waktu habis, 5xx, putar ulang penyedia, dorongan ulang operator. Simpan kunci idempotensi dari Kontrak webhook sebelum pengiriman pertama sebelum efek samping buku besar, kotak masuk, dan CRM.

Apa yang dihitung sebagai duplikat

Sinyal Perlakukan sebagai duplikat saat Hasil yang aman
ID peristiwa ID yang sama sudah diterima dalam jendela ACK; tidak ada debit kedua
ID pesan Pesan yang sama sudah tertaut buku besar Gunakan kembali baris; tidak ada biaya baru
Kunci kotak masuk MO/MT yang sama sudah diajukan Tidak ada baris kotak masuk kedua
Di luar jendela replay Percobaan

Uang tidak boleh bergerak dua kali

Debit kedua untuk ID peristiwa yang sama adalah bug meskipun produk masih menampilkan terkirim. Keuangan menyaring berdasarkan ID peristiwa dan melihat satu baris prabayar untuk jendela UTC tersebut. Efek samping parsial setelah ACK — CRM dulu, buku besar kemudian — menghasilkan kebenaran ganda. Jika pemrosesan gagal setelah penyimpanan, coba lagi pekerja pada kunci yang sama.

Kotak masuk juga tidak boleh berlipat ganda

Idempotensi bukan hanya tentang uang. Peristiwa masuk atau pengiriman yang diputar ulang membuka utas kotak masuk kedua melatih dukungan untuk mengejar hantu dan memicu putaran balasan otomatis. Simpan kunci kotak masuk dengan ID peristiwa yang sama yang digunakan untuk debit. Produk dan keuangan berbagi logika penolakan yang bersih.

Daftar periksa pembeli untuk webhook yang aman dari duplikat

Validasi tanda tangan dan header sebelum menyentuh buku besar. Kunci ID peristiwa dalam basis data untuk memblokir kondisi balapan. Selalu kembalikan 2xx setelah berhasil diproses tetapi jangan pernah menulis debit kedua. Pemantauan harus melaporkan peristiwa duplikat secara instan.

Mulai dengan IOSOR

Paksa satu replay bertanda tangan di dalam jendela pada koridor yang sudah menagih. Ekspor event id di samping id buku besar dan buktikan satu baris debit plus satu baris kotak masuk. Jika debit kedua muncul, hentikan konsumen itu dan kembalikan baris lebih — jangan net-kan dengan lalu lintas kemudian. Gerbang ini uang replay, bukan cek E.164 dan bukan naskah pengiriman.

Intisari IOSOR

Replay bukan kiriman baru. Satu event id menulis satu debit.

Lakukan: biarkan tanda tangan dan jendela replay menyala, lalu buktikan satu debit setelah POST dalam jendela. Jangan: debit setiap POST, atau anggap coba ulang jaringan sebagai faktur kedua.

Apakah panduan ini membantu?

Panduan terkait