D
Engineering

External Services

Integrasi eksternal Admin Dazo — DOKU payment gateway, engine WhatsApp, RajaOngkir, dan dazoapp.

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_ID
  • DOKU_SECRET_KEY
  • DOKU_BASE_URL — production: https://api.doku.com, sandbox: https://api-sandbox.doku.com

Method

MethodDeskripsi
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:

  1. Buat sub-account DOKU khusus sebagai fee collector
  2. Simpan di PlatformSetting (_id: 'platform')
  3. 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:

EnvironmentURL
productionhttps://engine.dazo.id
localhttp://localhost:5002

Flow Provisioning

  1. Admin buat device baru → DeviceController::store()
  2. Generate random token
  3. Simpan ke MongoDB (admin_devices)
  4. cURL POST ke {$url_engine}/new dengan form data
  5. Engine spawn instance WhatsApp baru

Live Chat Data

LiveChatController membaca data chat langsung dari MySQL (database engine WhatsApp):

php
$connection = app('db')->connection('mysql');
$chats = $connection->table('chat_inbox')->get();

dazoapp (Main App)

Admin Dazo memanggil API dazoapp untuk operasi tertentu:

EnvironmentURL
productionhttps://app.dazo.id
localhttp://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 provinsi
  • GET /api/rajaongkir/city — daftar kota
  • GET /api/rajaongkir/autocomplete — autocomplete alamat
  • GET /api/rajaongkir/kecamatan — daftar kecamatan
  • POST /api/rajaongkir/waybill — tracking resi
  • GET /api/rajaongkir/expedisi — daftar ekspedisi

Data disimpan di collection provinces, cities, subdistricts (MongoDB).