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.

AlurSiapaURL
Operator HaloRTSuper admin platformadmin.halort.com → Tenant Control
Pengurus komunitasAdmin / ketua RW / super admin komunitas{slug}.halort.com/admin/settings/layanan — contoh gp2.halort.com/admin/settings/layanan
Transaksi lintas tenantSuper adminadmin.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

  1. Deploy halort-platform, halort-admin, dan halort-platform-web ke main sudah hijau (GitHub Actions → Argo CD).
  2. Tenant uji: gp2. Catat jatuh tempo langganan sebelum bayar (dashboard tenant / layar Layanan).
  3. Akun:
  4. Paket berbayar (kode tetap basic / standard / enterprise):
Label UIKodeHarga bulananTahunan (bayar 10 bln, aktif 12)
StarterbasicRp 99.000Rp 990.000
Bisnis ProstandardRp 249.000Rp 2.490.000
EnterpriseenterpriseRp 999.000Rp 9.990.000
  1. Batas KK: Starter 50 · Bisnis Pro 200 · Enterprise unlimited.
  2. Swagger: api.halort.com/swagger — tag Billing / Platform invoices.

D — Operator (admin.halort.com)

  1. Masuk admin.halort.com (Google / magic link).
  2. Buka Tenant Control — temukan gp2.
  3. Edit tenant. Catat paket dan tanggal jatuh tempo.
  4. Pilih paket berbayar (bukan Promo). Pilih durasi Duitku: 1 / 3 / 12 bulan.
  5. Bayar via Duitku — browser diarahkan ke app-sandbox.duitku.com/redirect_checkout.
  6. Selesaikan pembayaran sandbox (lihat metode di bawah).
  7. Setelah return ke admin, jatuh tempo bertambah sesuai durasi; status tenant ACTIVE jika sebelumnya expired/suspended (bukan terminated).
  8. Cek Transaksi (/transactions) — invoice muncul dengan status paid.
  9. 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)

  1. Masuk gp2.halort.com/admin sebagai pengurus sistem (bukan bendahara-only).
  2. Pengaturan → Layanan (/admin/settings/layanan).
  3. Pilih paket (Starter / Bisnis Pro / Enterprise) — boleh upgrade dari paket saat ini; harga diambil dari katalog /api/pricing.
  4. Model pembayaran: Bulanan atau Tahunan.
    • Tahunan: badge Gratis 2 bulan + Setara Rp…/bulan (Hemat 2 Bulan); tagihan = 10× harga bulanan, aktif 12 bulan.
  5. Bayar via Duitku → checkout sandbox.
  6. 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
  7. 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).

MetodeCara ujiCatatan
Kartu (aggregator)Visa 4000 0000 0000 0044, valid thru 03/33, CVV 123 · Mastercard 5500 0000 0000 0004 samaLimit kartu personal ~Rp 1 jt; tagihan Enterprise 12 bulan bisa ditolak
Virtual accountPilih 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-walletJika muncul di checkout, pakai app simulasi yang Duitku berikan, atau minta jadwal uji ke support DuitkuJangan scan QRIS production

Jika checkout kosong / error: cek project DS34248 masih Active di dashboard Duitku → Proyek Saya (mode sandbox).

G — Callback & status

Setelah bayar:

  1. Return URL berisi merchantOrderId (dan resultCode dari Duitku). Prefix SaaS: hrt….
  2. UI memanggil GET invoice → API checkTransaction Duitku bila callback belum sampai.
  3. Callback form-urlencoded ke /api/payments/duitku/callback harus dijawab OK (HTTP 200). Ulangi callback tidak boleh menambah bulan dua kali (idempotent).
  4. 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

SkenarioExpected
Tenant Promo, tombol bayar operator tanpa ganti paketBoleh diarahkan ke Starter (atau paket dipilih di Layanan)
Tenant terminatedTidak bisa buat invoice
Callback signature salahBAD SIGNATURE, langganan tidak berubah
Order id tidak adaORDER NOT FOUND
Iuran warga upload buktiTetap 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