IOSOR Panduan
Idempotensi API kirim: duplikat, retry, dan uang
Panduan pengembang untuk API kirim prabayar — kunci idempotensi, retry aman, pencegahan duplikat, dan korelasi ramah ledger agar kesalahan engineering tidak jadi insiden keuangan.
Timeout terjadi. Load balancer melakukan retry. Klien seluler double-tap. Tanpa idempotensi, produk "kirim sekali" jadi debit prabayar ganda dan UX OTP duplikat. Panduan ini untuk engineering dan product teknis yang mengintegrasikan API messaging prabayar white-label — setiap duplikat terlihat di dompet. IOSOR mengharapkan integrasi money-aware: panggilan terotentikasi, debit yang bisa dikorelasikan, dan error klien yang tidak menumpahkan payload merek asing. Mendekati USD 1.000+ pemakaian platform bulanan, disiplin duplikat tidak lagi opsional.
Mengapa duplikat menjadi masalah uang
| Mode kegagalan | Pengguna melihat | Dompet melihat |
|---|---|---|
| Timeout klien + retry buta | Dua OTP / dua peringatan | Dua debit |
| Handler webhook non-idempoten | Side effect ganda | Kebingungan pada sukses |
| Kirim ulang pengguna di atas auto-retry | Pengguna kesal | Unit bertumpuk |
| Tanpa korelasi | Tiket "gagal" | Baris ledger tak cocok |
Demo memaafkan. Finance produksi tidak. Pada intensitas prabayar, akhir pekan retry buta jadi proyek rekonsiliasi, bukan catatan kaki log. Rancang happy path dan jalur timeout dengan aturan debit yang sama.
Kunci idempotensi yang bertahan dari retry
Jalur kirim yang serius menerima kunci buatan klien yang unik per niat bisnis, bukan per percobaan TCP. Saat replay dalam jendela TTL, ia harus mengembalikan hasil accepted yang sama. Ini mencegah debit kedua untuk niat yang sama. Kunci harus dicatat di samping ID pesan dan referensi prabayar. Kunci ini harus bekerja melalui timeout, retry gateway, dan redrive dukungan.
Anggaran retry vs kirim ulang pengguna
Retry otomatis butuh anggaran: maks percobaan, backoff, dan kelas error mana yang boleh di-retry. Kirim ulang oleh pengguna adalah aksi produk lain dengan batas dan biaya prabayarnnya. Mencampurnya mengubah jaringan yang tidak stabil jadi peristiwa dompet akhir pekan. Ikat keduanya dengan penghentian saat saldo rendah dan alasan penolakan yang jelas.
Checklist pembeli / engineering
- Dokumentasi semantik kunci idempotensi dan TTL.
- Uji replay yang membuktikan satu debit untuk satu niat.
- Pemisahan anggaran auto-retry dari logika kirim ulang pengguna.
- Correlation ID di seluruh request, status, dan ledger.
- Staging yang melatih koridor nyata, bukan mock.
- Kebersihan kunci dan hak akses minimum untuk kredensial.
- Penanganan 429 dan 503 tanpa kehilangan kunci niat asli.
- Alert otomatis untuk tingkat penolakan kunci duplikat yang tinggi.
Bendera merah
- "Retry sampai 200" tanpa kunci idempotensi.
- Handler webhook non-idempoten yang memicu side effect dua kali.
- Kunci rahasia atau token di log atau tiket support.
- Kesalahan yang menampilkan payload merek upstream ke pengguna.
- Tidak ada pemantauan selisih antara ledger dan jaringan.
Mulai dengan IOSOR
Di konsol kirim, tembak satu OTP atau peringatan dengan kunci idempotensi buatan klien. Paksa timeout klien, lalu putar ulang permintaan yang sama dalam TTL kunci. Buka ledger prepaid: niat itu harus menunjukkan satu debit dan satu pesan yang terlihat pengguna. Dua baris berarti kunci tidak selamat dari retry — perbaiki TTL dan handler sebelum koridor tetap Live.
- webhook yang bertahan setelah peluncuran
- batas laju API dari pilot ke produksi
- Overlay NANP Sebelum Anda Mengirim: Kualitas Data untuk Keuangan
Intisari IOSOR
Lakukan: anggap setiap kirim sebagai peristiwa ledger dulu. Kunci unik per niat bisnis, bukan per percobaan TCP. Auto-retry punya anggaran; ketukan kirim ulang pengguna adalah aksi produk lain dengan biaya prepaid sendiri.
Jangan: hantam sampai 200 tanpa kunci, atau biarkan webhook non-idempoten mencetak efek samping kedua. Dua OTP untuk satu ketukan adalah kutu uang, bukan cerita jaringan.
Apakah panduan ini membantu?
Panduan terkait
- Mensimulasikan Latensi dan Error DLR dalam Pengujian Integrasi Lokal
Pelajari cara melakukan mock tanda terima pengiriman asinkron, menangani latensi DLR, dan menguji kasus tepi secara lokal sebelum mempromosikan integrasi CPaaS Anda.
- Menyeimbangkan Batch Payload dan Throughput Permintaan Tunggal
Optimalkan strategi konkurensi API untuk pengiriman notifikasi volume tinggi sambil menjaga kepatuhan batas tarif pada konsol CPaaS label putih Anda.
- Pengaturan Cakupan Kunci API Multi-Penyewa untuk Keamanan Platform
Amankan sub-akun CPaaS label putih dengan membatasi token API untuk mengisolasi lalu lintas penyewa, mencegah kebocoran pesan antar-akun, dan menegakkan batas finansial.