๐ฌ Simulate:
Subscription Success
โ
Payment Successful
Your payment is complete and course access has been granted.
Purchase Summary
- Item
- Course Access โ Period ยท Introduction to Digital Tools for TVET
- Amount
- 20,000 LAK
- Reference No.
TXN-2026-06010001- Paid at
- 2026-06-01 10:30
- Access type
- monthly
- Access from
- 2026-06-01
- Access until
- 2026-07-01
Screen Flow (uc-bil-01-purchase-course.flow.puml):
๐ Spec notes โ UC-BIL.01 / SUC-BIL-01 / SCR-BIL.10 (fields, actions, requirements)
Identity
- Screen: SCR-BIL.10 โ Subscription Success
- Use case: UC-BIL.01 โ Purchase Course (main flow step 5, post-checkout; screen owned by SUC-BIL-01, shared with UC-BIL.03)
- Sub-use case: SUC-BIL-01 โ Checkout via BCEL (invoked by UC-BIL.01, UC-BIL.03)
- Current context: Main flow
Brief description
Post-BCEL checkout success confirmation โ shown after callback is verified and Subscription is activated. Displays a success banner + read-only purchase summary (item, amount, reference code, payment date, access type, access from, access until) + prominent "Start" CTA. On "Start", system checks Course.is_cohort (cross-subsystem LMS Core): standard course (is_cohort=false) โ Lesson Player (SCR-PLY.01); cohort course (is_cohort=true) โ Enrollment Confirmation (SCR-LMS.05). Page is reload-safe โ loads Transaction state from ref_code; non-success statuses redirect back to the appropriate flow.
Fields
item_name"Item" โ text ยท lookup Transaction.product_id โ Product.name ยท always ยท read-onlyamount"Amount" โ number ยท Transaction.amount ยท always ยท read-onlyref_code"Reference No." โ text ยท Transaction.ref_code ยท always ยท read-onlypaid_at"Paid at" โ datetime ยท Transaction.callback_received_at ยท always ยท read-onlyproduct_type"Access type" โ enum [lifetime, monthly, yearly] ยท Product.type ยท always ยท read-onlyaccess_from"Access from" โ date ยท Subscription.started_at ยท always ยท read-onlyaccess_until"Access until" โ date ยท Subscription.expiry_date ยท visible when product_type != lifetime ยท read-only
Actions
start"Start" โ always enabled ยท triggers SUC-BIL-01-M-12 โ routes into LMS Core: is_cohort=false โ Lesson Player (SCR-PLY.01) (SUC-BIL-01-A-12A-1); is_cohort=true โ Enrollment Confirmation (SCR-LMS.05) (SUC-BIL-01-M-13)
Additional requirements
- Support concurrent users per NFR-01 (100โ200 peak) [refs: NFR-01]
- Works on connection โค1 Mbps โ lightweight confirmation page (static, no polling/heavy assets); summary fields from preloaded Transaction record [refs: NFR-02]
- TLS 1.2+ in transit; user sees only their own Transaction/Subscription (server-side session + ref_code ownership check) [refs: NFR-03, NFR-10]
- Responsive โ single-column layout; "Start" button full-width on mobile [refs: NFR-08]
- WCAG โ success message announced via aria-live="polite"; focus moves to heading on load; "Start" is keyboard-accessible primary CTA [refs: NFR-09]
- "Start" is prominent primary CTA above the fold โ one click to enter the course [refs: NFR-04]
- On "Start": system checks Course.is_cohort (cross-subsystem LMS Core) โ standard course (is_cohort=false) โ Lesson Player (SCR-PLY.01); cohort course (is_cohort=true) โ Enrollment Confirmation (SCR-LMS.05) [refs: โ]
- Reload-safe โ Transaction state loaded from ref_code; non-success statuses redirect back to appropriate flow [refs: SS-BIL.02]