IOSOR Panduan

Webhook duplikat tidak boleh mencipta debit kedua

Laluan gagal: percubaan semula dan main semula kekal idempoten pada wang prabayar dan peti masuk — satu ID acara, satu baris debit, satu baris peti masuk.

Penghantaran sekurang-kurangnya sekali akan membuat percubaan semula. Webhook duplikat yang menghantar debit kedua atau baris peti masuk kedua ialah insiden wang dan operasi, bukan «pengakuan tidak berbahaya». Halaman ini adalah laluan gagal: percubaan semula dan main semula kekal idempoten pada wang prabayar dan peti masuk — bukannya esei idempotensi hantaran API dan bukan buku panduan percubaan semula SMS masuk.

Berkaitan: Gerbang tandatangan dan tetingkap replay, Kontrak webhook sebelum penghantaran pertama, Baris debit vs status penghantaran pada ledger sama.

IOSOR ialah prabayar label putih.

Idempotensi ialah laluan gagal, bukan slogan

Laluan berjaya: satu acara ditandatangani, satu penerimaan, satu debit. Laluan gagal merosakkan kepercayaan — masa tamat, 5xx, main semula penyedia, dorongan semula pengendali. Simpan kunci idempotensi dari Kontrak webhook sebelum penghantaran pertama sebelum kesan sampingan: lejar, peti masuk, CRM.

Apa yang dikira sebagai duplikat

Isyarat Rawat sebagai duplikat apabila Hasil selamat
ID Acara ID sama sudah diterima dalam tetingkap ACK; tiada debit kedua
ID Mesej Mesej sama sudah dipaut lejar Guna semula baris; tiada caj baharu
Kunci Peti Masuk MO/MT sama sudah difailkan Tiada baris peti masuk kedua
Luar tetingkap replay Percubaan lewat selepas penolakan gerbang Tolak; tiada tulis wang/status
Jenis tidak diketahui Tiada dalam senarai acara

Wang tidak boleh bergerak dua kali

Debit kedua untuk ID acara yang sama adalah pepijat walaupun produk «masih menunjukkan dihantar». Kewangan menapis mengikut acara atau ID mesej dan melihat satu baris prabayar untuk tetingkap UTC tersebut. Kesan sampingan separa selepas ACK — CRM dahulu, lejar kemudian — menghasilkan kebenaran berkembar. Jika pemprosesan gagal selepas ketekunan, cuba semula pekerja pada kunci yang sama; jangan terima semula badan HTTP sebagai caj baharu.

Peti masuk juga tidak boleh berganda

Idempotensi bukan sahaja mengenai wang. Peristiwa masuk atau penghantaran yang dimainkan semula yang membuka benang peti masuk kedua melatih sokongan untuk mengejar hantu dan boleh mencetuskan gelung balasan automatik. Simpan kunci peti masuk dengan ID acara yang sama yang digunakan untuk debit. Produk dan kewangan berkongsi penolakan dan duplikasi.

Senarai semak pembeli untuk webhook selamat duplikat

Pastikan kunci idempotensi disimpan sebelum mana-mana tindakan susulan CRM atau pangkalan data. Sahkan bahawa respons HTTP 200 dihantar untuk duplikat yang diakui tanpa memicu debit lejar tambahan. Pastikan tetingkap main semula dikuatkuasakan di pintu masuk tandatangan sebelum sebarang logik perniagaan dijalankan. Uji sistem anda secara berkala dengan suntikan beban duplikat.

Mulakan dengan IOSOR

Paksa satu main semula bertandatangan dalam tetingkap pada koridor yang sudah didebitkan. Eksport id peristiwa di sisi id lejar dan buktikan satu baris debit serta satu baris peti masuk. Jika debit susulan muncul, hentikan pengguna itu dan pulangkan baris lebih — jangan tolak dengan trafik kemudian. Pintu ini wang main semula, bukan semakan E.164 mahupun salinan penghantaran.

Inti IOSOR

Main semula bukan hantaran baharu. Satu id peristiwa menulis satu debit.

Buat: biarkan tandatangan dan tetingkap main semula hidup, kemudian buktikan satu debit selepas POST dalam tetingkap. Jangan buat: debit setiap POST, atau anggap cubaan semula rangkaian sebagai invois kedua.

Adakah panduan ini membantu?

Panduan berkaitan