94 lines
3.1 KiB
Markdown
94 lines
3.1 KiB
Markdown
# Device Flows - QRIS Soundbox Platform v1
|
|
|
|
## 1. Soundbox Static Flow
|
|
### Karakteristik
|
|
- QR merchant bersifat statis
|
|
- customer input nominal di aplikasi bank/e-wallet
|
|
- device menerima notifikasi hasil transaksi
|
|
|
|
### Sequence
|
|
1. customer scan QR statis merchant
|
|
2. customer input nominal dan submit pembayaran
|
|
3. partner/bank memproses pembayaran
|
|
4. callback payment masuk ke backend
|
|
5. backend verifikasi signature dan status
|
|
6. transaction state diupdate
|
|
7. ledger internal diupdate
|
|
8. backend lookup binding merchant -> outlet -> terminal -> device
|
|
9. notification event dibuat
|
|
10. MQTT push ke device
|
|
11. device memainkan audio dan/atau menampilkan nominal
|
|
|
|
### Catatan
|
|
- challenge utama adalah mapping transaksi ke device yang tepat
|
|
- perlu binding yang presisi dan fallback jika device offline
|
|
|
|
## 2. Soundbox Dynamic MQTT-only Flow
|
|
### Karakteristik
|
|
- device tidak bisa hit API langsung
|
|
- request create QR lewat MQTT
|
|
- response dan success notification lewat MQTT
|
|
|
|
### Sequence
|
|
1. merchant input nominal di device
|
|
2. device publish request create QR ke topic uplink
|
|
3. backend MQTT adapter menerima request
|
|
4. device auth dan capability check dilakukan
|
|
5. backend validasi nominal, merchant binding, idempotency key
|
|
6. backend request QR dynamic ke partner QRIS
|
|
7. transaction dibuat dengan status pending/awaiting_payment
|
|
8. response QR payload dipublish ke topic device
|
|
9. device render QR di layar
|
|
10. customer scan dan bayar
|
|
11. callback payment masuk ke backend
|
|
12. backend verifikasi dan update transaction
|
|
13. ledger internal diupdate
|
|
14. notification success dipublish ke device
|
|
15. device memainkan audio sukses
|
|
|
|
### Catatan
|
|
- wajib ada request_id / correlation_id
|
|
- retry device tidak boleh menimbulkan double create
|
|
- MQTT handler jangan jadi pusat logic, hanya ingress adapter
|
|
|
|
## 3. Soundbox Dynamic API-direct Flow
|
|
### Karakteristik
|
|
- device dapat call API backend langsung
|
|
- create QR dilakukan secara sinkron via API
|
|
- success notification tetap realtime via MQTT
|
|
|
|
### Sequence
|
|
1. merchant input nominal di device
|
|
2. device call API create dynamic QR
|
|
3. backend auth device dan validasi payload
|
|
4. backend check capability dan idempotency
|
|
5. backend request QR dynamic ke partner QRIS
|
|
6. transaction dibuat dengan status pending
|
|
7. response API berisi QR payload + expiry + transaction reference
|
|
8. device render QR
|
|
9. customer scan dan bayar
|
|
10. callback payment masuk ke backend
|
|
11. backend verifikasi dan update transaction
|
|
12. ledger internal diupdate
|
|
13. success notification dikirim via MQTT
|
|
14. device memainkan audio sukses
|
|
|
|
### Catatan
|
|
- ini flow paling bersih untuk engineering
|
|
- request-response lebih natural, observability lebih baik
|
|
|
|
## 4. Heartbeat Flow
|
|
1. device kirim heartbeat secara periodik
|
|
2. backend update last_seen_at
|
|
3. backend simpan health metrics yang tersedia
|
|
4. status device diturunkan menjadi online/stale/offline/degraded
|
|
5. ops dashboard menampilkan alert bila perlu
|
|
|
|
## 5. Provisioning Flow
|
|
1. device didaftarkan di TMS
|
|
2. credential/token/certificate dibuat
|
|
3. device dibinding ke merchant/outlet/terminal
|
|
4. config profile ditetapkan
|
|
5. device mengambil config awal atau dikirimkan via channel yang tersedia
|
|
6. device aktif dan mulai heartbeat
|