DOKU Payment Gateway
DokuApiService (app/Services/DokuApiService.php) — wrapper lengkap untuk DOKU API.
Autentikasi
HMAC-SHA256 signature per DOKU spec:
- Headers:
Client-Id,Request-Id,Request-Timestamp,Signature - Signature: HMAC-SHA256 dari
Client-Id + Request-Id + Request-Timestamp + Request-Target + Digest
Config di config/doku.php:
DOKU_CLIENT_IDDOKU_SECRET_KEYDOKU_BASE_URL— production:https://api.doku.com, sandbox:https://api-sandbox.doku.com
Method
| Method | Deskripsi |
|---|---|
createSubAccount($email, $name) | Buat sub-account DOKU baru |
getBalance($accountId) | Cek saldo sub-account |
payout($accountId, $amount, $invoice, $bankCode, $accountNumber, $accountName) | Transfer ke rekening bank |
transfer($originAccount, $destAccount, $amount, $invoice) | Transfer antar sub-account (untuk service fee) |
createPaymentCheckout($params) | Buat checkout payment |
verifyCheckoutSignature($params) | Verifikasi signature webhook |
checkOrderStatus($invoice) | Cek status order |
Fee Collector
Fitur khusus untuk mengumpulkan service fee dari withdrawal:
- Buat sub-account DOKU khusus sebagai fee collector
- Simpan di
PlatformSetting(_id: 'platform') - Saat withdraw di-approve → payout ke user + transfer service fee ke fee collector
Hanya boleh ada 1 fee collector account aktif. Account ID format: SAC-xxxx-xxxxxxxxxxxxx.
Engine WhatsApp
Admin Dazo berkomunikasi dengan engine WhatsApp untuk provisioning device:
| Environment | URL |
|---|---|
production | https://engine.dazo.id |
local | http://localhost:5002 |
Flow Provisioning
- Admin buat device baru →
DeviceController::store() - Generate random token
- Simpan ke MongoDB (
admin_devices) - cURL POST ke
{$url_engine}/newdengan form data - Engine spawn instance WhatsApp baru
Live Chat Data
LiveChatController membaca data chat langsung dari MySQL (database engine WhatsApp):
$connection = app('db')->connection('mysql');
$chats = $connection->table('chat_inbox')->get();dazoapp (Main App)
Admin Dazo memanggil API dazoapp untuk operasi tertentu:
| Environment | URL |
|---|---|
production | https://app.dazo.id |
local | http://localhost:8000 |
Dipakai di CustomerController untuk broadcast messaging dan operasi lain yang memerlukan data dari main app.
RajaOngkir
Api\RajaongkirController — proxy untuk RajaOngkir API:
GET /api/rajaongkir/province— daftar provinsiGET /api/rajaongkir/city— daftar kotaGET /api/rajaongkir/autocomplete— autocomplete alamatGET /api/rajaongkir/kecamatan— daftar kecamatanPOST /api/rajaongkir/waybill— tracking resiGET /api/rajaongkir/expedisi— daftar ekspedisi
Data disimpan di collection provinces, cities, subdistricts (MongoDB).