QA manual untuk tagihan langganan HaloRT (paket Starter / Bisnis Pro / Enterprise) lewat Duitku sandbox. Proses rilis: Testing/Testing Mechanism. Ini bukan iuran warga — iuran komunitas punya alur sendiri (Iuran, Bendahara). Untuk iuran warga yang dikumpulkan merchant HaloRT + fee 2%, lihat Features/Iuran Managed HaloRT / Testing/Iuran Managed HaloRT Checklist.
Apa yang diuji
HaloRT membuat invoice Duitku POP, penguji bayar di halaman checkout Duitku, lalu API memperpanjang subscription_ends_at tenant dan (jika dipilih) memperbarui paket.
| Alur | Siapa | URL |
|---|---|---|
| Operator HaloRT | Super admin platform | admin.halort.com → Tenant Control |
| Pengurus komunitas | Admin / ketua RW / super admin komunitas | {slug}.halort.com/admin/settings/layanan — contoh gp2.halort.com/admin/settings/layanan |
| Transaksi lintas tenant | Super admin | admin.halort.com/transactions |
Callback produksi: POST https://api.halort.com/api/payments/duitku/callback (Surfaces/Platform API).
Bukan bagian uji ini
- Iuran RT (bukti transfer atau Duitku iuran warga), donasi, pasar, disbursement ke rekening komunitas
- Kartu / transfer uang sungguhan (akun Duitku masih sandbox; dashboard bisa menampilkan “akun belum aktif” untuk production — itu normal)
- Merchant production (project terpisah setelah KYC Duitku)
Persiapan
- Deploy
halort-platform,halort-admin, danhalort-platform-webkemainsudah hijau (GitHub Actions → Argo CD). - Tenant uji:
gp2. Catat jatuh tempo langganan sebelum bayar (dashboard tenant / layar Layanan). - Akun:
- Operator: email super admin platform (Guides/Platform/Super Admin Platform)
- Komunitas: peran
admin,ketua_rw, atausuper_admindi gp2 (Concepts/Roles and Portals)
- Paket berbayar (kode tetap
basic/standard/enterprise):
| Label UI | Kode | Harga bulanan | Tahunan (bayar 10 bln, aktif 12) |
|---|---|---|---|
| Starter | basic | Rp 99.000 | Rp 990.000 |
| Bisnis Pro | standard | Rp 249.000 | Rp 2.490.000 |
| Enterprise | enterprise | Rp 999.000 | Rp 9.990.000 |
- Batas KK: Starter 50 · Bisnis Pro 200 · Enterprise unlimited.
- Swagger: api.halort.com/swagger — tag Billing / Platform invoices.
D — Operator (admin.halort.com)
- Masuk admin.halort.com (Google / magic link).
- Buka Tenant Control — temukan
gp2. - Edit tenant. Catat paket dan tanggal jatuh tempo.
- Pilih paket berbayar (bukan Promo). Pilih durasi Duitku: 1 / 3 / 12 bulan.
- Bayar via Duitku — browser diarahkan ke
app-sandbox.duitku.com/redirect_checkout. - Selesaikan pembayaran sandbox (lihat metode di bawah).
- Setelah return ke admin, jatuh tempo bertambah sesuai durasi; status tenant ACTIVE jika sebelumnya expired/suspended (bukan terminated).
- Cek Transaksi (
/transactions) — invoice muncul dengan statuspaid. - Simpan Perubahan tanpa Duitku tetap boleh dipakai untuk koreksi manual — jangan campur dengan langkah 5 di sesi yang sama agar hasil jelas.
E — Pengurus komunitas (layanan)
- Masuk gp2.halort.com/admin sebagai pengurus sistem (bukan bendahara-only).
- Pengaturan → Layanan (
/admin/settings/layanan). - Pilih paket (Starter / Bisnis Pro / Enterprise) — boleh upgrade dari paket saat ini; harga diambil dari katalog
/api/pricing. - Model pembayaran: Bulanan atau Tahunan.
- Tahunan: badge Gratis 2 bulan + Setara Rp…/bulan (Hemat 2 Bulan); tagihan = 10× harga bulanan, aktif 12 bulan.
- Bayar via Duitku → checkout sandbox.
- Setelah sukses:
- Layar menampilkan konfirmasi dan Aktif sampai maju
- Paket diperbarui sesuai pilihan
- Email invoice paid dikirim ke pengurus (
admin/ketua_rw/super_admin) - Baris baru di Riwayat pembayaran
- Tagihan otomatis perpanjangan: ~14 hari sebelum expired, API membuat invoice pending + email SUBSCRIPTION_RENEWAL_DUE (job scheduler /
POST /api/internal/jobs/subscription-reminders).
Warga / sekretaris / bendahara tidak boleh membuat invoice SaaS (API 403).
F — Metode sandbox Duitku
Gunakan hanya lingkungan sandbox. Nominal uji mengikuti harga paket (jangan turunkan di dashboard kecuali Anda sengaja mengubah katalog pricing).
| Metode | Cara uji | Catatan |
|---|---|---|
| Kartu (aggregator) | Visa 4000 0000 0000 0044, valid thru 03/33, CVV 123 · Mastercard 5500 0000 0000 0004 sama | Limit kartu personal ~Rp 1 jt; tagihan Enterprise 12 bulan bisa ditolak |
| Virtual account | Pilih VA di checkout; ikuti instruksi sandbox Duitku (simulasi bayar di dashboard/docs Duitku) | VA BCA di production butuh merchant perusahaan; sandbox bisa menampilkan channel lebih banyak |
| QRIS / e-wallet | Jika muncul di checkout, pakai app simulasi yang Duitku berikan, atau minta jadwal uji ke support Duitku | Jangan scan QRIS production |
Jika checkout kosong / error: cek project DS34248 masih Active di dashboard Duitku → Proyek Saya (mode sandbox).
G — Callback & status
Setelah bayar:
- Return URL berisi
merchantOrderId(danresultCodedari Duitku). Prefix SaaS:hrt…. - UI memanggil GET invoice → API
checkTransactionDuitku bila callback belum sampai. - Callback form-urlencoded ke
/api/payments/duitku/callbackharus dijawab OK (HTTP 200). Ulangi callback tidak boleh menambah bulan dua kali (idempotent). - Bayar yang dibatalkan/expired: invoice
failed/expired; jatuh tempo tidak berubah.
Cek cepat API (ganti token dan order id):
GET https://api.halort.com/api/billing/invoices/{merchantOrderId}
Authorization: Bearer …
X-Halort-Tenant-Slug: gp2
Operator: GET /api/platform/tenants/{id}/invoices/{merchantOrderId}.
H — Kasus negatif
| Skenario | Expected |
|---|---|
| Tenant Promo, tombol bayar operator tanpa ganti paket | Boleh diarahkan ke Starter (atau paket dipilih di Layanan) |
| Tenant terminated | Tidak bisa buat invoice |
| Callback signature salah | BAD SIGNATURE, langganan tidak berubah |
| Order id tidak ada | ORDER NOT FOUND |
| Iuran warga upload bukti | Tetap alur verifikasi bendahara |
Iuran warga Duitku (hri…) | Lunas otomatis via callback yang sama — bukan alur SaaS ini |
Laporan issue
Format Testing/Testing Mechanism:
Scenario: Duitku D3 / E4 / F-kartu
Device + OS: Chrome macOS / Safari iPhone
Tenant: gp2
merchantOrderId: hrt…
Steps: …
Expected: jatuh tempo +1 bulan (atau +12 tahunan), status ACTIVE, paket sesuai pilihan
Actual: …
Screenshot: checkout Duitku + layar Layanan/Tenant
Terkait
Guides/Platform/Super Admin Platform · Guides/Pengurus/Admin Ketua RT · Guides/Pengurus/Ketua RW · Guides/Pengurus/Super Admin Komunitas · Features/Web Features · Surfaces/Platform API · Ops/Secrets Overview · Testing/Web Admin Checklist