Dokumentasi REST API RIDOPAY
RIDOPAY menyediakan REST API yang simpel dan scalable untuk menerima pembayaran berbagai aset kripto (USDT, BTC, ETH, SOL, IDRX) langsung ke toko online atau sistem aplikasi kamu tanpa risiko volatilitas.
Autentikasi API
Setiap permintaan API memerlukan Header HTTP Authorization menggunakan API Secret Key yang bisa kamu dapatkan di halaman Merchant Dashboard.
Authorization: Bearer sk_live_rido_98a7238b10f2c41e984a
1. Buat Invoice Pembayaran Baru
Gunakan endpoint ini untuk membuat tautan invoice baru saat pembeli akan melakukan checkout di website kamu.
POST
https://api.ridopay.com/v1/invoices
Parameter Request Payload (JSON)
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| amount_usd | Number | Ya | Jumlah tagihan dalam denominasi USD (misal: 49.99). |
| order_id | String | Ya | ID unik pesanan dari sistem toko kamu (misal: ORD-99182). |
| description | String | Opsional | Keterangan singkat produk/layanan yang dibeli. |
| callback_url | String | Opsional | URL webhook merchant untuk menerima notifikasi saat pembayaran selesai. |
Contoh Request Code
curl -X POST https://api.ridopay.com/v1/invoices \ -H "Authorization: Bearer sk_live_rido_98a7238b10f2" \ -H "Content-Type: application/json" \ -d '{ "amount_usd": 49.99, "order_id": "ORD-99182", "description": "Pro Membership" }'
Contoh Response (HTTP 201 Created)
201 OK
{
"status": "success",
"invoice_id": "inv_891a273b",
"checkout_url": "https://pay.ridopay.com/inv_891a273b",
"amount_usd": 49.99,
"status_payment": "PENDING",
"expires_at": "2026-07-21T05:45:00Z"
}
2. Webhook Notification (Real-Time Callback)
Setelah status pembayaran berubah menjadi CONFIRMED di blockchain, RIDOPAY akan mengirimkan request HTTP POST otomatis ke callback_url toko kamu.
Verifikasi Keamanan Signature (HMAC SHA-256)
Untuk memastikan notifikasi benar-benar berasal dari RIDOPAY, setiap payload webhook disertai Header HTTP X-Ridopay-Signature.
Node.js Webhook Verification Example
const crypto = require('crypto'); app.post('/api/ridopay-callback', (req, res) => { const signature = req.headers['x-ridopay-signature']; const secret = 'whsec_rido_77a8291b'; // Merchant Webhook Secret const expectedSignature = crypto .createHmac('sha256', secret) .update(JSON.stringify(req.body)) .digest('hex'); if (signature === expectedSignature) { // Process Order (mark paid in DB) console.log('Payment confirmed for order:', req.body.order_id); res.status(200).send({ received: true }); } else { res.status(401).send('Invalid Signature'); } });