Dashboard
Ringkasan hari ini (WIB). Diperbarui otomatis tiap 10 detik.
Saldo GoBiz (belum dicairkan)
| Akun | Saldo | Total settlement | MDR | Diperbarui | |||||
|---|---|---|---|---|---|---|---|---|---|
Per merchant
| Merchant | Lunas | Pendapatan | Pending |
|---|---|---|---|
Sesi akun GoBiz
| Akun | Status | Token berlaku s/d |
|---|---|---|
Akun GoBiz
Akun GoPay Merchant yang dipakai untuk membaca transaksi masuk. Login cukup sekali; token diperbarui otomatis.
| Label | Nomor HP | Outlet | Status | Token berlaku s/d | Poll terakhir | |
|---|---|---|---|---|---|---|
Merchant
Setiap merchant = satu QRIS statis. Hubungkan ke akun GoBiz pemilik QRIS agar pembayaran bisa diverifikasi.
| ID | Nama | Nama di QRIS | Akun GoBiz | Webhook | Status | |
|---|---|---|---|---|---|---|
Payment
Semua payment yang dibuat lewat API.
| TRX ID | Merchant | Reference | Nominal | Status | Dibuat | Dibayar |
|---|---|---|---|---|---|---|
API Token
Token untuk sistem lain memanggil /api/v1. Buat satu token per sistem agar mudah dicabut.
| Nama | Prefix | Akses merchant | Izin | Terakhir dipakai | Dibuat | Status | |
|---|---|---|---|---|---|---|---|
Webhook
Riwayat pengiriman notifikasi ke sistem kamu. Gagal dicoba ulang otomatis: 1m, 5m, 30m, 2j, 6j.
Log Aktivitas
Login, perubahan konfigurasi, pembayaran, dan error sistem.
| Waktu | Level | Aktor | Aksi | Pesan |
|---|---|---|---|---|
Integrasi API
Contoh pemanggilan dari sistem kamu. Ganti gpq_xxx dengan API token.
1. Buat payment
Respon berisi trx_id, amount (nominal final, bisa +kode unik), checkout_url, qr_image_url, qris_string, expires_at. Kirim reference_id yang sama lagi → payment yang sama dikembalikan (aman untuk retry). Opsional: callback_url, expiry_seconds, metadata, customer ({name, email, phone}), items ([{name, quantity, price}], tampil di halaman bayar), redirect_url (pembeli dialihkan ke sini setelah lunas, dengan ?trx_id=&status=PAID).
2. Terima webhook
Event payment.paid dan payment.expired dikirim (POST JSON) ke callback_url payment atau Webhook URL merchant. Verifikasi header:
X-Webhook-Signature: sha256=HMAC_SHA256(webhook_secret, X-Webhook-Timestamp + "." + raw_body)
// Node.js
const crypto = require('crypto');
function verify(rawBody, headers, secret) {
const expected = 'sha256=' + crypto.createHmac('sha256', secret)
.update(headers['x-webhook-timestamp'] + '.' + rawBody).digest('hex');
const fresh = Math.abs(Date.now() / 1000 - Number(headers['x-webhook-timestamp'])) < 300;
const given = Buffer.from(headers['x-webhook-signature'] || '');
return fresh && given.length === expected.length && crypto.timingSafeEqual(given, Buffer.from(expected));
}
Balas HTTP 2xx agar dianggap terkirim. Proses secara idempoten berdasarkan data.trx_id (webhook bisa terkirim lebih dari sekali).
3. Endpoint lain
| GET /api/v1/payments/:trx_id | Status payment (dibaca dari database, cepat) |
| GET /api/v1/payments?reference_id=&status= | Daftar / cari payment |
| POST /api/v1/payments/:trx_id/cancel | Batalkan payment yang masih menunggu |
| GET /api/v1/merchants | Merchant yang bisa diakses token |
| GET /api/v1/merchants/:id/transactions | Mutasi langsung dari GoBiz (start_time, end_time ISO 8601). Izin: Mutasi GoBiz |
| GET /api/v1/merchants/:id/balance | Saldo belum dicairkan, settlement, MDR. Izin: Saldo & pencairan |
| GET /api/v1/merchants/:id/payouts?page= | Riwayat pencairan ke bank. Izin: Saldo & pencairan |
| GET /api/v1/accounts | Daftar akun GoBiz. Izin: Kelola akun |
| POST /api/v1/accounts | Login langkah 1: {label, phone} → OTP dikirim, balas account.id. Izin: Kelola akun |
| POST /api/v1/accounts/:id/verify-otp | Login langkah 2: {otp}. Juga: /request-otp (kirim ulang / login ulang), /refresh |
| GET /api/v1/accounts/:id/outlets | Merchant & outlet GoBiz beserta QRIS statis (pop_id) |
| PATCH / DELETE /api/v1/accounts/:id | Ubah label / hapus akun |
| GET /api/v1/merchants/:id | Detail merchant termasuk webhook_secret. Izin: Kelola merchant |
| POST /api/v1/merchants | Buat merchant: {name, gobiz_account_id, import_outlet: {pop_id}} (QRIS diambil otomatis) atau qris_static. Opsional: webhook_url, expiry_seconds, unique_code_max, telegram_chat_id, discord_webhook_url, gopay_merchant_id |
| PATCH / DELETE /api/v1/merchants/:id | Ubah (mis. {is_active: false}) / hapus (hanya jika belum ada payment) |
| POST /api/v1/merchants/:id/rotate-secret | Ganti webhook secret. Juga: /test-qris, /test-notification |