Integrasikan sistem pembayaran secara instan dan otomatis.
Masukkan URL server Anda untuk menerima notifikasi otomatis (JSON) saat pembayaran sukses.
Login diperlukan untuk mengatur Webhook.
Setiap request ke server wajib menyertakan API Key pada Header HTTP Anda.
| Base URL | https://app.digitalolshop.com/api |
|---|---|
| Header Wajib | X-API-KEY: API_KEY_ANDA_DISINI (Gunakan Sandbox Key untuk testing) |
| Content-Type | application/json |
Membuat tagihan QRIS baru (Topup) dan mengenerate kode unik secara otomatis.
paid dari Webhook!
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
amount | Integer | Ya | Nominal topup (contoh: 10000) |
curl -X POST https://app.digitalolshop.com/api/topup \
-H "X-API-KEY: API_KEY_ANDA_DISINI" \
-H "Content-Type: application/json" \
-d '{"amount": 50000}'fetch('https://app.digitalolshop.com/api/topup', {
method: 'POST',
headers: {
'X-API-KEY': 'API_KEY_ANDA_DISINI',
'Content-Type': 'application/json'
},
body: JSON.stringify({ amount: 50000 })
}).then(res => res.json()).then(console.log);$ch = curl_init('https://app.digitalolshop.com/api/topup');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-KEY: API_KEY_ANDA_DISINI',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['amount' => 50000]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;import requests
headers = {'X-API-KEY': 'API_KEY_ANDA_DISINI'}
res = requests.post('https://app.digitalolshop.com/api/topup', json={'amount': 50000}, headers=headers)
print(res.json())Ini adalah format JSON yang akan dikembalikan oleh server kami setelah Anda menjalankan script di atas.
{
"status": "pending",
"invoice_code": "INV-1718901234-567",
"total_amount": 50245,
"qr_url": "https://app.digitalolshop.com/uploads/qris/INV-1718901234-567.png",
"payment_type": "otomatis"
}qr_url di atas adalah tautan (URL) gambar kode QR murni. Untuk menampilkannya di website Anda, masukkan langsung ke dalam atribut src pada tag <img> HTML Anda:<img src="<?= $response['qr_url'] ?>" alt="QRIS Pembayaran">
Mengecek status tagihan QRIS secara manual berdasarkan Invoice.
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
invoice | String | Ya | Kode invoice (contoh: INV-12345) |
curl -X GET https://app.digitalolshop.com/api/topup/status/INV-12345 \ -H "X-API-KEY: API_KEY_ANDA_DISINI"
fetch('https://app.digitalolshop.com/api/topup/status/INV-12345', {
headers: { 'X-API-KEY': 'API_KEY_ANDA_DISINI' }
}).then(res => res.json()).then(console.log);$ch = curl_init('https://app.digitalolshop.com/api/topup/status/INV-12345');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: API_KEY_ANDA_DISINI']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;import requests
headers = {'X-API-KEY': 'API_KEY_ANDA_DISINI'}
res = requests.get('https://app.digitalolshop.com/api/topup/status/INV-12345', headers=headers)
print(res.json()){
"status": "pending",
"invoice": "INV-12345",
"payment_status": "pending",
"amount": 50000,
"total_amount": 50245
}Status / Payment Status dapat berupa: pending, paid, atau not_found.
Mengambil informasi sisa saldo (balance) akun Anda saat ini secara real-time. Sangat berguna untuk sinkronisasi saldo di website/aplikasi *reseller* Anda.
curl -X GET https://app.digitalolshop.com/api/balance \ -H "X-API-KEY: API_KEY_ANDA_DISINI"
$ch = curl_init('https://app.digitalolshop.com/api/balance');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: API_KEY_ANDA_DISINI']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;{
"status": "success",
"balance": 1500000
}Mengambil daftar produk E-Wallet (DANA, OVO, GoPay, dll) yang sedang aktif langsung dari server, beserta Kode SKU dan harga total potongannya. Anda bisa menggunakan ini untuk menampilkan pilihan otomatis (Dropdown) di form website Anda.
curl -X GET https://app.digitalolshop.com/api/ewallet \ -H "X-API-KEY: API_KEY_ANDA_DISINI"
$ch = curl_init('https://app.digitalolshop.com/api/ewallet');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: API_KEY_ANDA_DISINI']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;{
"status": "success",
"total_products": 2,
"data": [
{
"brand": "DANA",
"sku": "DANA25",
"product_name": "Saldo DANA 25.000",
"nominal": 25000,
"total_deduction": 26500,
"status": "Aktif"
},
{
"brand": "OVO",
"sku": "OVO50",
"product_name": "Saldo OVO 50.000",
"nominal": 50000,
"total_deduction": 51500,
"status": "Aktif"
}
]
}sku dari respon ini untuk dikirimkan sebagai parameter pada saat memanggil fungsi Tarik Instan di bawah.
Melakukan permintaan penarikan saldo (Withdrawal) secara manual melalui API.
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
ewallet_name | String | Ya | Nama tujuan (Contoh: DANA, BCA) |
ewallet_number | String | Ya | Nomor rekening / Nomor HP |
account_name | String | Ya | Nama pemilik rekening |
amount | Integer | Ya | Nominal penarikan (Contoh: 50000) |
curl -X POST https://app.digitalolshop.com/api/withdrawal \
-H "X-API-KEY: API_KEY_ANDA_DISINI" \
-H "Content-Type: application/json" \
-d '{"ewallet_name": "DANA", "ewallet_number": "0812345", "account_name": "Budi", "amount": 50000}'fetch('https://app.digitalolshop.com/api/withdrawal', {
method: 'POST',
headers: {
'X-API-KEY': 'API_KEY_ANDA_DISINI',
'Content-Type': 'application/json'
},
body: JSON.stringify({ ewallet_name: "DANA", ewallet_number: "0812345", account_name: "Budi", amount: 50000 })
}).then(res => res.json()).then(console.log);$payload = json_encode([
"ewallet_name" => "DANA",
"ewallet_number" => "0812345",
"account_name" => "Budi",
"amount" => 50000
]);
$ch = curl_init('https://app.digitalolshop.com/api/withdrawal');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-KEY: API_KEY_ANDA_DISINI',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);import requests
headers = {'X-API-KEY': 'API_KEY_ANDA_DISINI'}
data = {'ewallet_name': 'DANA', 'ewallet_number': '0812345', 'account_name': 'Budi', 'amount': 50000}
res = requests.post('https://app.digitalolshop.com/api/withdrawal', json=data, headers=headers)
print(res.json()){
"status": "success",
"message": "Permintaan withdrawal berhasil dibuat"
}Melakukan penarikan saldo instan / otomatis (E-Wallet) yang terintegrasi langsung dengan API Provider.
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
sku | String | Ya | Kode SKU Produk (Contoh: DANA25, OVO50) |
destination | String | Ya | Nomor rekening / e-Wallet tujuan |
curl -X POST https://app.digitalolshop.com/api/withdrawal/instant \
-H "X-API-KEY: API_KEY_ANDA_DISINI" \
-H "Content-Type: application/json" \
-d '{"sku": "DANA25", "destination": "08123456789"}'$payload = json_encode([
"sku" => "DANA25",
"destination" => "08123456789"
]);
$ch = curl_init('https://app.digitalolshop.com/api/withdrawal/instant');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-KEY: API_KEY_ANDA_DISINI',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);{
"status": "success",
"message": "Penarikan instan berhasil diproses.",
"ref_id": "WD-1718901234-999",
"trx_status": "Sukses",
"total_deduction": 26500
}Jika sistem provider gangguan atau nomor tujuan salah, sistem kami akan memberikan HTTP Code 400 dan saldo dikembalikan otomatis (Refund).
{
"status": "error",
"message": "Penarikan instan gagal: Nomor tujuan tidak terdaftar."
}Webhook adalah "Kurir" otomatis dari sistem kami. Ketika pelanggan Anda selesai mentransfer uang via QRIS, server kami akan langsung mengirimkan pesan (JSON) ke URL Webhook milik Anda.
{
"event": "topup_success",
"invoice": "INV-123456789",
"amount": 50000,
"status": "paid"
}<?php
$payload = file_get_contents('php://input');
$data = json_decode($payload, true);
if (isset($data['event']) && $data['event'] === 'topup_success') {
$invoice = $data['invoice'];
$status = $data['status'];
if($status === 'paid'){
}
http_response_code(200);
echo json_encode(['status' => 'success']);
} else {
http_response_code(400);
echo json_encode(['status' => 'failed']);
}app.post('/webhook', express.json(), (req, res) => {
const data = req.body;
if (data && data.event === 'topup_success') {
const invoice = data.invoice;
const status = data.status;
if (status === 'paid') {
}
res.status(200).json({ status: 'success' });
} else {
res.status(400).json({ status: 'failed' });
}
});