Purchase Course › Subscription Success
๐ŸŽฌ 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
๐Ÿ“ 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-only
  • amount "Amount" โ€” number ยท Transaction.amount ยท always ยท read-only
  • ref_code "Reference No." โ€” text ยท Transaction.ref_code ยท always ยท read-only
  • paid_at "Paid at" โ€” datetime ยท Transaction.callback_received_at ยท always ยท read-only
  • product_type "Access type" โ€” enum [lifetime, monthly, yearly] ยท Product.type ยท always ยท read-only
  • access_from "Access from" โ€” date ยท Subscription.started_at ยท always ยท read-only
  • access_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
  1. Support concurrent users per NFR-01 (100โ€“200 peak) [refs: NFR-01]
  2. Works on connection โ‰ค1 Mbps โ€” lightweight confirmation page (static, no polling/heavy assets); summary fields from preloaded Transaction record [refs: NFR-02]
  3. TLS 1.2+ in transit; user sees only their own Transaction/Subscription (server-side session + ref_code ownership check) [refs: NFR-03, NFR-10]
  4. Responsive โ€” single-column layout; "Start" button full-width on mobile [refs: NFR-08]
  5. WCAG โ€” success message announced via aria-live="polite"; focus moves to heading on load; "Start" is keyboard-accessible primary CTA [refs: NFR-09]
  6. "Start" is prominent primary CTA above the fold โ€” one click to enter the course [refs: NFR-04]
  7. 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: โ€”]
  8. Reload-safe โ€” Transaction state loaded from ref_code; non-success statuses redirect back to appropriate flow [refs: SS-BIL.02]