Dokumentasi API
Satu API untuk menerima QRIS, GoPay, dan ShopeePay. Base URL: https://instanpedia.solusipremium.my.id/v1
Autentikasi
Semua permintaan ke /v1 wajib menyertakan header Authorization: Bearer <SECRET_KEY>. Secret key hanya ditampilkan sekali saat dibuat di Dashboard → API Keys.
Setiap respons memuat request_id. Sertakan nilai ini saat menghubungi dukungan agar penelusuran cepat.
Membuat pembayaran
POST /v1/payments membuat satu transaksi. Sertakan Idempotency-Key pada header agar permintaan ulang aman (tidak membuat transaksi ganda).
Bila belum ada provider yang dikonfigurasi, API tidak membuat transaksi palsu — respons berisi kode PROVIDER_NOT_CONFIGURED.
curl -X POST https://<host>/v1/payments \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-2026-0001" \
-d '{
"amount": 100000,
"currency": "IDR",
"payment_method": "QRIS",
"reference": "ORDER-0001",
"description": "Pesanan #0001",
"customer": { "name": "Budi", "email": "budi@example.com" }
}'Status & konfirmasi
GET /v1/payments/:id memuat status terkini. Nilai confirmation_source menunjukkan cara konfirmasi: POLLING (polling mutasi provider) atau WEBHOOK (provider bertanda tangan).
Endpoint GET /v1/payments/:id/events menyediakan aliran Server-Sent Events untuk pembaruan status real-time.
Webhook merchant
InstanPedia mengirim event ke endpoint Anda dengan header X-Instanpedia-Signature = HMAC-SHA256(timestamp + '.' + body, signing_secret).
Selalu verifikasi tanda tangan dan tolak bila selisih waktu terlalu besar. Pengiriman ulang berjenjang hingga dead-letter, yang dapat diputar ulang dari dashboard.
// Node.js — verifikasi tanda tangan
const crypto = require("crypto");
function verify(rawBody, signature, secret, timestamp) {
const expected = crypto
.createHmac("sha256", secret)
.update(timestamp + "." + rawBody)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}Kode error
INVALID_REQUEST · UNAUTHORIZED · RATE_LIMITED · IDEMPOTENCY_CONFLICT · PROVIDER_NOT_CONFIGURED · PROVIDER_TIMEOUT · REFUND_NOT_ALLOWED · REFUND_AMOUNT_EXCEEDED · RISK_BLOCKED · MERCHANT_SUSPENDED