D
API Reference

Instant Payment

Integrasi DazoApp/DOKU — Engine Bot request checkout, cek status. Engine Bot tidak memanggil DOKU langsung. Auth belum diterapkan pada create-checkout dan check-status.

Engine Bot berintegrasi dengan DazoApp/DOKU untuk instant payment. Engine Bot memanggil DazoApp, DazoApp memanggil DOKU. Engine Bot tidak memanggil DOKU langsung.

Tanggung Jawab

SistemTanggung jawab
Engine BotPercakapan, pilih metode, request checkout, cek status, kirim WhatsApp
DazoAppCreate checkout, simpan payment metadata/status, terima webhook DOKU
DOKUPayment page dan payment processing

Create Checkout

Engine Bot memanggil DazoApp:

http
POST {env.base_url}api/payment/engine-bot/create-checkout
Content-Type: application/json

Payload aktual

json
{
  "order_number": "ORD-001",
  "customer_name": "Budi",
  "customer_phone": "628123456789",
  "total_amount": 150000,
  "device_id": "device-1",
  "store_id": "store-1"
}

Expected success response

json
{
  "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

http
POST {env.base_url}api/payment/engine-bot/check-status/{order_number}
Content-Type: application/json

Body: {}

Expected response

json
{
  "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

StatusBehavior
paidOrder selesai, kirim notifikasi sukses
pendingMenunggu pembayaran
expiredLink kedaluwarsa, kirim notifikasi
failedPembayaran gagal, kirim notifikasi

Payment Notification Callback

DazoApp memanggil Engine Bot:

http
POST {ENGINE_BOT_URL}/api/webhook/payment-notification
Authorization: Bearer <engine-bot-jwt>
Content-Type: application/json

Detail callback ada di Payment Webhook.

text
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 message

Untuk produk digital, callback/status response menampilkan attachment_link dari order item snapshot bila tersedia. Produk fisik menerima pesan proses packing.

Error Mapping

KondisiEngine Bot behavior
Timeout/ETIMEDOUTMinta customer mencoba lagi atau hubungi admin
HTTP 422Data order tidak valid
HTTP 404Order tidak ditemukan
HTTP 5xxSistem payment bermasalah
Invalid responseGeneric 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