From 2ea6cd3d176fd58b484a9c15478e069433fd9be5 Mon Sep 17 00:00:00 2001 From: asepharyana Date: Wed, 5 Aug 2026 09:32:37 +0700 Subject: [PATCH] docs: payment flow status in audit findings --- docs/dev-audit-findings.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/dev-audit-findings.md b/docs/dev-audit-findings.md index 3b64736..31a0539 100644 --- a/docs/dev-audit-findings.md +++ b/docs/dev-audit-findings.md @@ -31,4 +31,16 @@ Semua diuji lokal (Postgres `dimentorin`, backend :4099). ## Rekomendasi -Tangani #1 dan #2 sebelum go-live. #2 adalah kelas bug "OTP di-generate tapi tak dipakai" — sisi verifikasi email saat ini tidak lebih dari form "set is_active=true tanpa autentikasi". \ No newline at end of file +Tangani #1 dan #2 sebelum go-live. #2 adalah kelas bug "OTP di-generate tapi tak dipakai" — sisi verifikasi email saat ini tidak lebih dari form "set is_active=true tanpa autentikasi". + +## 4. ✅ DONE — Payment flow (alur bisnis menjual) + +**Status: DONE di feat/dimentorin-postgres (2026-08-05).** + +- Tabel `app_payments`: amount (dari `mentoring_rate` mentor) + service_fee 2000 + total; method `va`/`qris`/`manual`; provider `manual` default (swap Midtrans/Xendit nanti — cukup ganti nilai `provider` dan implementasi `generate_external_ref`/notifikasi webhook). +- Routes protected: `POST /payments/sessions/{id}/create`, `GET /payments/me`, `GET /payments/{id}`, `POST /payments/{id}/confirm`. +- Guard: mentee hanya bisa akses payment miliknya (403 kalau bukan); confirm hanya Admin / Admin Pembayaran. +- `confirm_payment` otomatis mengubah session terkait `pending` -> `confirmed` (loop bisnis lengkap: book -> bayar -> sesi terkonfirmasi -> feedback). +- FE: PaymentStep pilih VA/QRIS, rate real dari `mentoring_rate`; modal appointment: book -> create payment -> tampil VA/QR dengan `external_ref` + total + expiry -> success. Service lib: `postCreatePayment/getMyPayments/getPaymentById/postConfirmPayment`. +- E2E verified (lokal :4099): create VA dan QRIS, confirm 200, re-confirm 409, non-admin 403, akses payment orang lain 403, session auto-confirmed. +- TODO produksi: isi kredensial payment gateway (Midtrans/Xendit) + webhook callback; SMTP masih blocker (#1).