Ulangi pesanan dengan request_id awal dan parameter yang tidak berubah. Jangan membuat kunci baru hanya karena koneksi timeout. NotPanel dapat mengembalikan pesanan yang sudah diterima atau meminta Anda menunggu jika prosesnya belum selesai.
Pelanggan melakukan satu pembelian. Jika respons hilang setelah dikirim ke panel, langkah berikutnya adalah menemukan hasil pembelian itu tanpa mengubah ketidakpastian menjadi pembelian baru.
Timeout menyisakan tiga kemungkinan
- Permintaan tidak sampai dan belum ada pesanan yang diterima.
- Pesanan diterima, tetapi responsnya hilang.
- Permintaan masih diproses dan hasilnya belum diketahui.
Timeout tidak membedakan ketiganya. HTTP sendiri tidak menjamin keamanan pengulangan POST pembelian; perlindungannya berasal dari kontrak API. Lihat RFC 9110, §9.2.2.
Cara NotPanel mengenali pengulangan
request_id bersifat opsional, tidak boleh kosong, dan maksimal 128 karakter. idempotency_key adalah aliasnya; request_id dipilih jika keduanya dikirim. Gunakan akun, kunci, dan seluruh parameter yang sama. Pesanan yang diterima mengembalikan ID awal; kunci yang sama dengan parameter berbeda ditolak.
Tanpa kedua kolom itu, NotPanel melindungi add identik dari akun yang sama selama 60 detik. Jangan mengandalkan jendela pendek ini untuk pengulangan yang lebih lambat. Permintaan yang hasilnya belum pasti tetap dilindungi selama pemeriksaan.
Dua pembelian identik yang disengaja juga digabung dalam jendela tersebut. Beri setiap pembelian baru request_id berbeda agar langsung terpisah. Jangan mengganti kunci untuk melewati hasil yang belum pasti.
Parameter dan respons pembuatan pesanan
Pertahankan request_id awal setelah timeout.
Coba lagi dengan kunci dan detail pesanan yang sama.
Simpan ID pesanan yang ditemukan, atau tunggu jika hasilnya belum pasti.
Simpan identitas pembelian sebelum mengirim
Untuk baris pembelian 8427, simpan request_id dan semua parameter sebelum percobaan pertama. Skema memakai penanda dan pemisah baris; enkode formulir sebenarnya secara normal. Kirim nilai asli hanya jika Anda menginginkan pesanan berbayar.
POST https://notpanel.com/api/v3
Content-Type: application/x-www-form-urlencoded
key=YOUR_API_KEY
&action=add
&service=YOUR_SERVICE_ID
&link=YOUR_TARGET_URL
&quantity=YOUR_VALID_QUANTITY
&request_id=checkout-8427-line-1Setelah timeout, kirim kembali checkout-8427-line-1 dengan layanan, target, jumlah, dan kolom opsional yang sama, termasuk setelah aplikasi dimulai ulang. Simpan ID yang diterima untuk status. request_id mengidentifikasi pembuatan pesanan, bukan pengganti ID pesanan untuk pemeriksaan status.
Baca seluruh respons
- Timeout atau respons tidak pasti
- Pertahankan kunci dan parameter. Batasi percobaan, beri jeda, dan patuhi Retry-After. Simpan catatan belum terselesaikan ketika batas percobaan habis.
- REQUEST_PROCESSING atau REQUEST_UNCONFIRMED
- Tunggu dan ulangi hanya permintaan awal. Jangan membuat pengganti dengan kunci berbeda.
- REQUEST_ID_CONFLICT
- Bandingkan parameter tersimpan. Pulihkan pesanan memakai parameter awal; kunci baru hanya untuk pembelian yang sengaja berbeda.
- Kesalahan validasi, autentikasi, atau batas permintaan
- Baca error_code dan retryable. Perbaiki data atau kredensial, lalu patuhi waktu tunggu. Jangan mengulangi semua kesalahan otomatis.
Uji pemulihan sebelum menerima pembelian pelanggan
Mulai dengan API tiruan di lingkungan pengujian sendiri. Tidak perlu pembelian nyata atau kunci uji khusus NotPanel.
- Simulasikan pesanan diterima lalu respons hilang; pastikan kunci dan parameter tetap sama.
- Mulai ulang klien dan pulihkan identitas tersimpan.
- Simulasikan respons sedang diproses lalu berhasil; simpan satu ID pesanan.
- Simulasikan konflik atau kesalahan yang tidak dapat diulang; pastikan percobaan otomatis berhenti.
- Buat dua pembelian baru identik dengan kunci berbeda. Untuk pengujian nyata berikutnya, gunakan pesanan yang memang diinginkan dan periksa pesanan serta catatan dompet.
Pertanyaan umum
Apakah timeout berarti ditagih dua kali?
Tidak. Artinya aplikasi tidak mendapat respons yang dapat digunakan. Periksa pesanan yang ditemukan dan catatan dompet sebelum menyimpulkan adanya tagihan ganda.
Apakah request_id wajib?
Tidak. request_id dan idempotency_key opsional. Tanpanya, add identik dari akun yang sama dilindungi selama 60 detik. Kunci eksplisit menentukan identitas setiap pembelian.
Haruskah membuat kunci baru setiap percobaan?
Tidak. Simpan satu kunci sebelum percobaan pertama dan gunakan kembali dengan pesanan yang tidak berubah. Pembelian baru mendapat kunci baru.
Bisakah memeriksa status dengan request_id?
status memerlukan ID pesanan. Pulihkan ID dengan mengulang add awal beserta kunci dan parameternya. Jika hasil belum pasti, simpan detail untuk dukungan tanpa membuat pesanan lain.
Baca berikutnya: panduan integrasi · webhook dan pemeriksaan status · referensi kesalahan.



