Quickstart
Panduan tercepat untuk integrasi Dehuyz Gateway. Setelah baca ini lo sudah bisa generate QR dan terima notifikasi pembayaran.
1. Setup akun
- Daftar di /signup — email + password (8+ karakter).
- Setelah signup, lo dapat starter API key (
sk_test_...) yang ditampilkan sekali di halaman dashboard. Salin segera. - Untuk production, generate key baru di /dashboard/api-keys dengan mode
live.
2. Generate invoice + QR
curl -X POST https://gateway.dehuyz.example.com/api/v1/invoices \ -H "Authorization: Bearer sk_live_xxx" \ -H "Content-Type: application/json" \ -d '{ "amount": 50000, "description": "Order #INV-001", "external_id": "order-001" }'
Response (200):
{ "invoice_id": "a1b2c3d4e5f67890", "external_id": "order-001", "status": "pending", "amount": 50000, "qr_string": "00020101...", "qr_image": "iVBORw0KGgo...", "refnum_bri": "100000XYZ", "expires_at": "2026-05-22T12:05:00+00:00" }
qr_string: QRIS string yang bisa di-render jadi QR dengan library lo sendiri (qrcode, dll).qr_image: base64 PNG, bisa langsung di-set sebagai<img src="data:image/png;base64,...">.
3. Terima notifikasi pembayaran
Pilih salah satu (atau keduanya):
Cara A — Polling (paling sederhana)
import httpx, time while True: r = httpx.get( f"https://gateway.dehuyz.example.com/api/v1/invoices/{inv['invoice_id']}", headers={"Authorization": f"Bearer {api_key}"}, ) status = r.json()["status"] if status == "paid": print("PAID!") break elif status in ("expired", "cancelled"): break time.sleep(3) # poll tiap 3 detik
Cara B — Webhook (real-time, push)
- Setup endpoint webhook di /dashboard/webhooks — paste URL HTTPS yang akan menerima notifikasi.
- Sistem auto-generate
secretHMAC. Simpan baik-baik. - Saat customer bayar, gateway POST ke URL lo dengan signed body.
Detail lengkap: lihat Webhooks dan Polling.
4. Customer bayar
Customer scan QR dari aplikasi mobile banking apa pun yang support QRIS Indonesia (BRImo, Livin Mandiri, BCA Mobile, OVO, Gopay, dll). Pembayaran otomatis terdeteksi sistem dalam 2 detik.
Status invoice
| Status | Arti |
|---|---|
pending |
QR sudah di-generate, menunggu pembayaran |
paid |
Pembayaran berhasil terdeteksi |
expired |
QR kadaluarsa (default 5 menit) |
cancelled |
Lo cancel via API atau dashboard |
failed |
Error generate atau payment gagal |
Limit & default
- QR expiry default: 300 detik (5 menit) — diatur BRI portal, gak bisa di-override
- Min amount: 1 (Rp 1)
- Max amount: 9,999,999,999 (BIGINT)
- Idempotency: pakai
external_idunik per request — duplicate calls return invoice yang sama - Rate limit per merchant: 60 req/min (configurable)
Selanjutnya
- Authentication — detail API key + best practice
- Webhooks — verifikasi HMAC, retry, idempotency receiver
- Polling — best practice polling tanpa hammer server
- Errors — handle response error
- Settlement — withdraw saldo ke rekening bank