RIDOPAY Logo RIDOPAY Docs
Webhook Tester Open Merchant Dashboard Live Checkout Demo

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');
    }
});