API Payment Gateway Crypto: 12 Hal yang Wajib Dicek Sebelum Integrasi

Semua API pembayaran crypto bisa membuat invoice. Perbedaannya terlihat saat retry, pembayaran sebagian, dan webhook yang gagal. Checklist 12 poin untuk developer, lengkap dengan cara API mistKET menangani setiap poin.

Diperbarui: 5 menit baca
Checklist API payment gateway crypto — request bertanda tangan, status invoice, dan retry webhook

Setiap API payment gateway crypto menjanjikan hal yang sama: buat invoice, terima pembayaran, dapatkan callback. Perbedaannya baru terlihat belakangan — saat dua request saling berebut, saat pelanggan mengirim sedikit kurang dari nominal invoice, saat server Anda mati selama satu jam, atau saat penyerang memutar ulang request yang berhasil disadap. Memilih API dengan cermat menghemat jauh lebih banyak waktu daripada mengintegrasikannya dengan terburu-buru.

Ini adalah checklist untuk developer dan CTO yang membandingkan API pembayaran crypto sebelum menulis satu baris kode pun. Untuk setiap poin, Anda akan melihat apa yang perlu dicari, mengapa itu penting, dan bagaimana API mistKET menanganinya. Jika Anda sudah memilih dan ingin kode langkah demi langkah, langsung saja ke panduan integrasi API pembayaran crypto kami.

Kumpulan endpoint minimum

API pembayaran crypto yang layak pakai butuh lebih dari sekadar “buat pembayaran”. Minimal, carilah:

KemampuanMengapa Anda membutuhkannyaEndpoint mistKET
Membuat invoiceSatu permintaan pembayaran per pesanan, dengan masa berlakuPOST /invoices
Mengambil invoiceRekonsiliasi saat ada webhook yang terlewatGET /invoices/{uuid}
Menampilkan dan memfilter invoiceTampilan back-office dan rekonsiliasi malam hariGET /invoices
Membatalkan invoiceMelepas stok saat pesanan ditinggalkanPOST /invoices/{uuid}/cancel
Aset yang didukungHanya menampilkan jaringan yang bisa dibayar saat iniGET /assets
Kuotasi kursMenampilkan nominal kripto sebelum membuat invoiceGET /rate
Health checkMonitoring dan fallback yang mulusGET /health

Jika penyedia tidak bisa mengambil atau menampilkan daftar invoice, Anda terpaksa memercayai webhook begitu saja — posisi yang buruk saat pertama kali ada pengiriman yang gagal.

1. Autentikasi: apakah setiap request ditandatangani?

API key yang dikirim di header adalah opsi paling lemah: siapa pun yang menyadap atau membocorkannya bisa membuat dan membatalkan invoice. Pilih API yang setiap request-nya ditandatangani dengan secret yang tidak pernah dikirim lewat jaringan. Request ke mistKET membawa X-Api-Key, X-Api-Timestamp, dan signature HMAC-SHA256 dari timestamp dan raw body. Secret hanya ditampilkan sekali di panel merchant.

2. Perlindungan replay

Signature saja tidak mencegah seseorang mengirim ulang request yang disadap. Carilah jendela timestamp dan dukungan nonce. mistKET menolak timestamp yang selisihnya lebih dari ±300 detik dari waktu server dan menolak signature yang sama dipakai dua kali untuk request yang mengubah state. Signature versi 2 menambahkan nonce per request dan juga menandatangani method dan path, sehingga signature tidak bisa dipakai ulang di endpoint lain.

3. Idempotensi saat membuat invoice

Koneksi bisa timeout. Jika checkout Anda mengulang panggilan “buat invoice”, jangan sampai satu pesanan punya dua invoice. API yang baik menyediakan idempotency key. Di mistKET, order_id milik Anda sendiri berperan sebagai kunci itu: memanggil lagi dengan ID pesanan yang sama akan mengembalikan invoice yang sudah ada dengan "idempotent": true, bukan membuat invoice baru.

4. Model status yang mencakup pembayaran nyata

“Lunas / belum lunas” tidak cukup. Pelanggan mengirim sedikit kurang karena exchange memotong biaya, atau mengirim lebih, atau membayar setelah invoice kedaluwarsa. Pastikan API menampilkan kasus-kasus ini secara eksplisit. Invoice mistKET bergerak melalui status new, pending, underpaid, paid, confirmed, overpaid, expired, dan cancelled, dengan field seperti paid_amount, remaining_amount, can_pay_remaining, dan under_review sehingga kode Anda tidak perlu menebak-nebak.

Intinya: pastikan API membedakan “transaksi terlihat” dari “transaksi final”. Di mistKET, paid berarti transfer sudah terdeteksi dan sedang menunggu konfirmasi; penuhi pesanan hanya saat status confirmed atau overpaid.

5. Konfirmasi yang bisa dilihat

API harus memberi tahu berapa konfirmasi blok yang sudah dimiliki sebuah pembayaran dan berapa yang dibutuhkan, beserta hash transaksi dan link explorer. Dengan begitu, tiket dukungan soal pembayaran bisa dicek dalam hitungan detik. mistKET mengembalikan confirmations, required_confirmations, dan array transactions[] berisi hash, nominal, status, dan URL explorer untuk setiap invoice.

6. Penguncian kurs dan mata uang harga

Anda menetapkan harga dalam fiat; pelanggan membayar dalam kripto. Tanyakan mata uang fiat apa saja yang diterima dan berapa lama kurs yang dikutip ditahan. mistKET menerima harga dalam USD, EUR, TRY, RUB, GBP, dan AED (atau langsung dalam simbol kripto), mengunci kurs selama masa berlaku invoice, dan memungkinkan Anda mengatur masa berlaku itu antara 5 hingga 1.440 menit per invoice.

7. Pemilihan jaringan

Bisakah Anda menetapkan jaringan di panggilan API, atau membiarkan pelanggan memilih di halaman hosted? Keduanya berguna: menetapkan jaringan cocok untuk bot dan alur otomatis, sedangkan membiarkan pelanggan memilih mengurangi pembayaran ke jaringan yang salah. mistKET mendukung keduanya lewat pay_currency + network atau asset_id, dan GET /assets melaporkan available: false saat sebuah jaringan tidak punya alamat yang tersedia. Saat ini USDT di TRON (TRC-20) sudah aktif; aset dan jaringan lain diaktifkan per merchant atas permintaan. Baca USDT TRC20 vs ERC20 untuk tahu mengapa TRON menjadi pilihan default yang umum.

8. Webhook yang ditandatangani, di-retry, dan bisa dilacak

Di webhook-lah sebagian besar integrasi gagal. Periksa empat hal: payload ditandatangani, ada timestamp untuk menolak pengiriman yang basi, pengiriman yang gagal di-retry selama berjam-jam (bukan hitungan detik), dan setiap pengiriman punya ID yang bisa dipakai untuk deduplikasi. mistKET menandatangani webhook dengan webhook secret terpisah, mengirim header X-Mistket-Delivery dan X-Mistket-Event, dan mengulang respons non-2xx pada 10 s, 30 s, 2 min, 10 min, 30 min, 1 h, 2 h, dan 3 h, dengan riwayat pengiriman yang terlihat di dashboard. Artikel kami tentang webhook pembayaran crypto membahas desain handler secara mendalam.

9. Error dan rate limit yang terdokumentasi

Anda harus tahu sejak awal seperti apa respons untuk signature yang salah, IP yang diblokir, atau error validasi. mistKET mengembalikan body yang konsisten { "success": false, "error": … } dengan detail per field untuk error validasi, memakai kode standar (401, 403, 404, 422, 429, 503), dan mendokumentasikan batasnya: 120 request per menit per API key.

10. Kontrol di level jaringan

Dengan IP allow-list, API key yang bocor tidak berguna di mana pun selain dari server Anda. mistKET memungkinkan Anda mengaturnya di dashboard; request dari alamat lain mendapat 403. Dikombinasikan dengan request bertanda tangan dan jendela timestamp yang pendek, ini menutup jalur serangan yang paling umum.

11. Tanpa ketergantungan pada SDK

SDK memang praktis sampai tertinggal dari versi bahasa pemrograman Anda. API yang dibangun di atas HTTPS dan JSON biasa, dengan penandatanganan cukup satu panggilan HMAC, bisa dipakai dari PHP, Node.js, Python, Go, atau shell script. mistKET menyediakan contoh klien siap salin untuk PHP, Node.js, dan Python di dokumentasi API-nya, tetapi tidak satu pun yang wajib dipakai.

12. Jalur manual untuk non-developer

Bisnis yang API-first pun sesekali perlu menagih klien satu kali. Pastikan invoice juga bisa dibuat di panel dan dibagikan sebagai link, sehingga tim sales dan support tidak perlu memanggil developer. Di mistKET, invoice yang sama tersedia di panel merchant, dan setiap halaman hosted checkout berfungsi sebagai link pembayaran.

Tips: sebelum go-live, jalankan satu invoice nyata bernominal kecil dari awal sampai akhir — buat, bayar, terima webhook-nya, lalu panggil GET /invoices/{uuid} dan bandingkan. Cara ini memverifikasi penandatanganan, handler webhook, dan rekonsiliasi Anda sekaligus.

Tanda bahaya saat menilai API pembayaran crypto

  • Webhook tanpa signature atau webhook yang “diamankan” hanya dengan URL rahasia.
  • Tidak ada cara mengambil invoice setelah dibuat.
  • Tidak ada status underpaid atau overpaid — kasus khusus berakhir di chat support.
  • Retry hanya beberapa menit, atau tidak ada log pengiriman.
  • Rate limit dan format error yang tidak terdokumentasi.
  • Biaya per transaksi yang tidak jelas — bandingkan dengan panduan kami tentang biaya payment gateway kripto.

Mendapatkan akses API mistKET

Merchant di-onboard oleh tim mistKET: kirim pesan ke @mistnetwork di Telegram berisi website, jenis bisnis, dan perkiraan volume Anda. Setelah disetujui, Anda membuat API key, secret, dan pengaturan webhook di panel merchant. Integrasi pada umumnya selesai dalam satu sore.

7endpoint REST
8retry webhook dalam ~7 jam
HMACtanda tangan dua arah

Pelajari bagian developer, harga, dan referensi API lengkap sebelum mulai.

Pertanyaan umum

Apa saja yang harus ada di API payment gateway crypto?
Minimal: membuat, mengambil, menampilkan daftar, dan membatalkan invoice, daftar aset yang didukung, kuotasi kurs, webhook bertanda tangan dengan retry, serta error dan rate limit yang terdokumentasi. Tanpa endpoint untuk mengambil dan menampilkan daftar invoice, Anda tidak bisa merekonsiliasi webhook yang terlewat.
Bagaimana autentikasi API mistKET?
Setiap request membawa API key, timestamp Unix, dan signature HMAC-SHA256 dari timestamp dan raw body yang dibuat dengan API secret Anda. Signature versi 2 menambahkan nonce dan juga menandatangani method dan path.
Bagaimana mencegah invoice ganda saat request timeout?
Kirim order_id Anda sendiri di setiap invoice. Jika Anda memanggil lagi dengan ID pesanan yang sama, mistKET mengembalikan invoice yang sudah ada dengan tanda idempotent, bukan membuat invoice kedua.
Kapan sebaiknya pesanan dipenuhi?
Hanya saat invoice berstatus confirmed atau overpaid. Status paid berarti transfer sudah terlihat tetapi masih menunggu jumlah konfirmasi blok yang dibutuhkan.
Koin apa saja yang bisa diterima lewat API mistKET?
Saat ini USDT di TRON (TRC-20) sudah aktif di halaman pembayaran. Aset dan jaringan lain diaktifkan per merchant atas permintaan; GET /assets selalu menampilkan apa yang tersedia untuk toko Anda.
Apakah API mistKET punya rate limit?
Ya, 120 request per menit per API key. Jika terlampaui, API mengembalikan HTTP 429; jadi cache daftar aset dan gunakan webhook daripada polling terus-menerus.

Artikel terkait

Artikel terbaru

Semua artikel