DigitalPedia H2H API

Dokumentasi API

Integrasi QRIS deposit ke sistem Anda dalam hitungan menit.

Base URL & Autentikasi
Endpoint dasar & cara kirim API Key
https://pay.digitalpedia.id
Header: x-api-key: YOUR_API_KEY
Semua komunikasi wajib via HTTPS — HTTP ditolak otomatis
API Key tersedia di halaman Profil & API. Jangan bagikan ke siapapun.
Deposit QRIS
Buat invoice, cek status & batalkan
POST /api/deposit/create Buat Invoice

Membuat invoice QRIS baru. User diambil otomatis dari API Key di header.

ParameterTipeKeterangan
amountwajibintegerNominal deposit (min 500, max 1.000.000)
Contoh Request
const res = await fetch('https://pay.digitalpedia.web.id/api/deposit/create', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': 'YOUR_API_KEY' }, body: JSON.stringify({ amount: 50000 }) }); const data = await res.json();
Response
200 OK400 Bad Request401 Unauthorized
{ "success": true, "deposit": { "id": "DP17500001234567", "amount": 50000, "fee": 150, "total_payment": 50337, "qr_image": "https://cdn.jsdelivr.net/gh/images/s2@main/uploads/abc.png", "status": "pending", "expired_at": 1750000000000 } }
POST /api/deposit/status Cek Status

Cek status deposit. Terdapat cooldown 30 detik antar pengecekan untuk deposit_id yang sama.

ParameterTipeKeterangan
deposit_idwajibstringID deposit dari response create
Response
pendingsuccessexpired
// Berhasil dibayar { "success": true, "status": "success", "message": "Deposit berhasil! Saldo bertambah." } // Masih menunggu { "success": true, "status": "pending", "message": "Menunggu pembayaran" } // Kadaluarsa { "success": true, "status": "expired", "message": "Deposit expired" }
POST /api/deposit/cancel Batalkan
ParameterTipeKeterangan
deposit_idwajibstringID deposit yang ingin dibatalkan (hanya status pending)
{ "success": true, "message": "Deposit berhasil dibatalkan" }
Cek Saldo
Ambil saldo aktif akun via API Key
GET /api/balance Saldo Aktif

Tidak memerlukan body. Kirim API Key di header x-api-key.

Contoh Request
const res = await fetch('https://pay.digitalpedia.web.id/api/balance', { headers: { 'x-api-key': 'YOUR_API_KEY' } }); const { balance } = await res.json();
Response
{ "success": true, "balance": 125000 }
Contoh Implementasi
Node.js / JavaScript lengkap
Node.js (axios)
const axios = require('axios'); const API_KEY = 'YOUR_API_KEY'; const BASE = 'https://pay.digitalpedia.web.id'; const H = { 'x-api-key': API_KEY }; // Buat deposit async function createDeposit(amount) { const { data } = await axios.post(`${BASE}/api/deposit/create`, { amount }, { headers: H }); return data.deposit; } // Polling status (tiap 10 detik) async function waitPaid(depositId) { while (true) { const { data } = await axios.post(`${BASE}/api/deposit/status`, { deposit_id: depositId }, { headers: H }); if (data.status === 'success') return true; if (data.status === 'expired' || data.status === 'canceled') return false; await new Promise(r => setTimeout(r, 10000)); } } // Contoh pakai const dep = await createDeposit(50000); console.log('QRIS:', dep.qr_image); const paid = await waitPaid(dep.id); console.log(paid ? '✅ Dibayar!' : '❌ Gagal/expired');
Error & Rate Limit
Kode status HTTP yang mungkin dikembalikan
StatusPenyebab
200Sukses
400Parameter tidak valid (nominal di luar range, dll)
401API Key tidak valid atau tidak disertakan
403Akun di-suspend
429Rate limit — max 10 request/menit atau terlalu banyak deposit pending
500Error server / provider tidak merespons
Cooldown cek status: 30 detik antar pengecekan untuk deposit_id yang sama. Polling disarankan setiap 10–30 detik.
Butuh Bantuan?
Hubungi CS kami di Telegram
Chat CS