Engine Bot berintegrasi dengan DazoApp/DOKU untuk instant payment. Engine Bot memanggil DazoApp, DazoApp memanggil DOKU. Engine Bot tidak memanggil DOKU langsung.
Tanggung Jawab
| Sistem | Tanggung jawab |
|---|---|
| Engine Bot | Percakapan, pilih metode, request checkout, cek status, kirim WhatsApp |
| DazoApp | Create checkout, simpan payment metadata/status, terima webhook DOKU |
| DOKU | Payment page dan payment processing |
Create Checkout
Engine Bot memanggil DazoApp:
POST {env.base_url}api/payment/engine-bot/create-checkout
Content-Type: application/jsonPayload aktual
{
"order_number": "ORD-001",
"customer_name": "Budi",
"customer_phone": "628123456789",
"total_amount": 150000,
"device_id": "device-1",
"store_id": "store-1"
}Expected success response
{
"success": true,
"checkout_url": "https://checkout.example/payment",
"expires_at": "2026-07-23T12:00:00+07:00"
}Engine Bot hanya memerlukan success dan checkout_url. Message yang dikirim saat ini menyatakan link berlaku satu jam.
Request timeout: 10 detik.
Check Status
POST {env.base_url}api/payment/engine-bot/check-status/{order_number}
Content-Type: application/jsonBody: {}
Expected response
{
"success": true,
"status": "pending",
"payment_url": "https://checkout.example/payment",
"expires_at": "2026-07-23T12:00:00+07:00",
"paid_at": null,
"total_amount": 150000
}Status yang ditangani Engine Bot
| Status | Behavior |
|---|---|
paid | Order selesai, kirim notifikasi sukses |
pending | Menunggu pembayaran |
expired | Link kedaluwarsa, kirim notifikasi |
failed | Pembayaran gagal, kirim notifikasi |
Payment Notification Callback
DazoApp memanggil Engine Bot:
POST {ENGINE_BOT_URL}/api/webhook/payment-notification
Authorization: Bearer <engine-bot-jwt>
Content-Type: application/jsonDetail callback ada di Payment Webhook.
Paid Flow
customer memilih instant_payment
-> payment agent menyimpan metode
-> confirmOrder
-> confirmOrderProccessInstantPayment
-> DazoApp create checkout
-> checkout URL dikirim
-> customer membayar di DOKU
-> DazoApp update database
-> DazoApp callback Engine Bot
-> Engine Bot cancel follow-up
-> Engine Bot load order/store/device
-> Engine Bot send WhatsApp success messageUntuk produk digital, callback/status response menampilkan attachment_link dari order item snapshot bila tersedia. Produk fisik menerima pesan proses packing.
Error Mapping
| Kondisi | Engine Bot behavior |
|---|---|
Timeout/ETIMEDOUT | Minta customer mencoba lagi atau hubungi admin |
| HTTP 422 | Data order tidak valid |
| HTTP 404 | Order tidak ditemukan |
| HTTP 5xx | Sistem payment bermasalah |
| Invalid response | Generic payment error |
Rollback Operasional
Rollback paling kecil: nonaktifkan instant_payment di settings.shipping.payment_method untuk store terdampak. Metode lain tetap mengikuti settings.
Jangan menghapus order instant payment yang sudah terbentuk. Rekonsiliasi status dengan DazoApp/DOKU, lalu kirim notifikasi manual bila callback gagal.
Security Requirements
Sebelum production-hardening dianggap selesai:
- Authenticate Engine Bot ke DazoApp create/status endpoints
- Gunakan signature atau dedicated credential untuk callback DazoApp ke Engine Bot
- Cocokkan
store_id, order, device, amount, dan customer dengan record database - Tambahkan idempotency key/event ID
- Jangan mempercayai callback payload untuk link digital tanpa order lookup terverifikasi
- Tambahkan retry/outbox untuk notification delivery
Kembali ke
- API Reference Index — daftar semua grup
- Payment Webhook — detail callback
- Order Flow — paid flow lengkap