Gunakan tanpa tombol beli
Tombol beli adalah lapisan kemudahan. Di baliknya, Coin Moebius adalah webhook sewaan ditambah beberapa endpoint JSON. Jika Anda lebih suka membangun antarmuka sendiri, menjalankan alur checkout sendiri, atau menyambungkan Coin Moebius ke sesuatu yang tidak bisa ditangani tombol (langganan Square atau Authorize.Net, formulir pembayaran kustom, skrip sisi-server, aplikasi seluler), setiap endpoint yang dipakai tombol juga bisa dipanggil dari apa pun. Tanpa perubahan kode di sisi kami.
Mengautentikasi panggilan backend
Panggilan yang Anda buat dari server Anda sendiri bisa membawa kunci API proyek Anda sebagai bearer token. Buat kunci di dasbor, di bawah kunci API proyek Anda (diawali cmk_), dan kirimkan di header Authorization:
Authorization: Bearer cmk_live_xxxxxxxxxxxxxxxxxxxxxxxxKuncinya terikat pada satu proyek, dan panggilan terautentikasi mendapat batas laju lebih tinggi daripada yang anonim. Tombol beli sendiri bersifat publik dan tidak butuh kunci. Simpan kunci Anda di server Anda. Jangan pernah menaruhnya di browser atau kode sisi-klien lain.
Endpoint ini semuanya tinggal di bawah URL proyek Anda. Di produksi basis itu adalah https://api.coinmoebius.com. URL lengkap untuk masing-masing ditampilkan di bawah (ganti bagian {…} dengan nilai Anda sendiri).
| Endpoint | Apa yang dilakukannya |
|---|---|
POST https://api.coinmoebius.com/api/checkout/{provider}/{projectId} | Memulai checkout. POST { productId, metadata }; terima kembali apa pun yang dibutuhkan penyedia (URL pengalihan untuk Stripe, URL persetujuan untuk PayPal, token untuk Authorize.Net Accept Hosted). Render sesuka Anda. |
POST https://api.coinmoebius.com/webhook/{provider}/{projectId} | Penyedia mengirim ke sini. Kami memverifikasi tanda tangan, menormalkan event-nya, menyimpannya, menghitung kuota. Arahkan webhook penyedia ke URL ini baik checkout asalnya datang dari tombol kami atau dari integrasi Anda sendiri. |
GET https://api.coinmoebius.com/status/{projectId}/{txId} | Polling untuk keadaan terkini sebuah pembayaran atau langganan. Mengembalikan bentuk ternormalkan yang sama dengan yang didapat tombol beli. |
POST https://api.coinmoebius.com/api/subscriptions/{projectId}/{subscriptionId}/portal-url | Menghasilkan URL portal terhosting penyedia bagi pembeli untuk mengelola langganannya. Berfungsi untuk penyedia mana pun yang punya portal. |
Kenali pembeli di sistem Anda sendiri dengan mengirim metadata.customerRef pada panggilan checkout. Ia merangkai lewat penyedia dan kembali pada setiap event webhook, jadi Anda bisa menggabungkan catatan Coin Moebius ke basis data pengguna Anda sendiri tanpa kami menyimpan apa pun tentang pembeli.
Kenapa seseorang memakai jalur ini: pembangun situs statis yang ingin menulis tombolnya sendiri agar cocok dengan desain situsnya dan hanya butuh webhook ditangani. Developer yang ingin melewati tombol sepenuhnya dan memanggil API dari servernya sendiri. Penjual yang ingin menjalankan langganan Square atau Authorize.Net dan tidak masalah merangkai pengumpulan kartu sendiri. Tombol adalah titik awal. API-lah produk sesungguhnya.
Mendengarkan event pembeli
Elemennya memicu tiga event browser. Dengarkan dengan addEventListener pada elemennya (atau pada document, event-nya menggelembung). Semua event bisa dibatalkan, memanggil event.preventDefault() menghentikan alur default.
| Event | Kapan ia dipicu | Payload detail |
|---|---|---|
cm-load-providers | Modal pemilih akan meminta daftar penyedia yang dikonfigurasi pada proyek ini ke API. | Kosong. |
cm-checkout-started | Pembeli memilih penyedia dan Coin Moebius akan membuat sesi checkout (Stripe / NOWPayments) atau menghasilkan kode referensi (manual). | { provider: 'stripe' | 'nowpayments' | 'manual', ... } |
cm-error | Sesuatu gagal: kesalahan jaringan, kegagalan tanda tangan, tidak ada penyedia yang dikonfigurasi. | { error: Error } |
document.addEventListener('cm-error', (event) => {
console.error('Coin Moebius:', event.detail.error);
// Show your own error UI, send to your analytics, etc.
});Tidak ada event cm-success di browser pembeli. Pada saat pembayaran benar-benar selesai, pembeli telah dialihkan ke checkout terhosting penyedia pembayaran (Stripe Checkout, halaman invoice NOWPayments). Mereka kembali ke situs Anda lewat success_url yang Anda konfigurasi (lihat bagian berikutnya), dan server Anda mengetahui pembayarannya lewat dasbor atau dengan polling endpoint /status.
Polling dari backend Anda
Untuk sumber kebenaran sisi-server, polling GET /status/:projectId/:txId dari backend Anda. Bentuk responsnya:
{
"status": "succeeded",
"amount": 29.99,
"currency": "USD",
"isTest": false,
"createdAt": "2026-05-14T01:04:21.000Z",
"updatedAt": "2026-05-14T01:04:21.000Z"
}Nilai status mengikuti enum yang sama dengan dasbor (lihat Status transaksi). Endpoint-nya tanpa autentikasi tapi dibatasi laju 60 permintaan / menit per IP. Id transaksi yang Anda kirim adalah apa pun yang dikembalikan SDK di event cm-checkout-started atau yang ditampilkan di kolom Referensi dasbor.
Pola tipikal: saat halaman success_url Anda dimuat, mulai pekerjaan backend yang melakukan polling /status/:projectId/:txId setiap 15 detik sampai ia melihat succeeded (atau failed / timeout), lalu penuhi pesanannya.