Thanh toán - Checkout Flows (Payment)
DomainsDOL EnglishUX2.464 words12 min read
Purpose
Phần tiêu đề “Purpose”- Mô tả luồng mua hàng cho DOL English Web V2 từ trigger đến hoàn tất thanh toán, giữ flow đơn giản: chọn cơ chế gói, chọn gói
Pro/Pro Max, thanh toán, quay về đúng ngữ cảnh đang học.
DOL English Web V2 Active Rules (override)
Phần tiêu đề “DOL English Web V2 Active Rules (override)”- Active scope của DOL English V2:
monthly auto-renew+annual 12 tháng auto-renew theo năm+one-time 3/6 tháng non-renew.- không dùng household/parent-child billing trong active scope này (thuộc Product KID).
- Payment methods:
- monthly/annual: Card + Momo.
- one-time (3/6): Card + Momo + Bank QR/Chuyển khoản.
- Bank QR/Chuyển khoản chỉ dùng cho one-time.
- Overlap rule:
- nếu user còn one-time active rồi mua gói auto-renew cùng scope,
- auto-renew (monthly/annual) được queue và bắt đầu sau khi one-time hết hạn.
- Cancel rule:
- huỷ monthly có hiệu lực cuối chu kỳ.
- Plan switching rule:
- upgrade tier cao hơn: hiệu lực ngay + prorated charge cho phần chu kỳ còn lại,
- downgrade tier thấp hơn: hiệu lực kỳ kế tiếp, không hoàn tiền giữa kỳ,
- one-time pass: không hỗ trợ mid-cycle downgrade/cancel refund.
- Checkout protection:
- guest phải đăng nhập trước khi bước checkout bắt đầu.
- Checkout required-data:
- không bắt buộc goal/learning profile,
- bắt buộc email đã verify,
- với luồng mua Pro/Pro Max hoặc đăng ký khóa học: bắt buộc có số điện thoại liên hệ cho CS.
- phone contact không cần verify và không được coi là auth factor.
- Course boundary:
- mua khóa học không bắt buộc Pro/Pro Max,
- trang checkout khóa học chỉ gợi ý add-on subscription (optional, non-blocking).
Trigger Points
Phần tiêu đề “Trigger Points”- Practice premium action: xem giải thích nâng cao, generate luyện tập mới, mở khóa đề giới hạn.
- Modal hiển thị 2 cột:
Mua theo nhu cầuvsGói all-in-one. - Số lượng mặc định 1 bài (có stepper ±) với giá cập nhật realtime.
- Modal hiển thị 2 cột:
- Video course detail: CTA
Mua khóa học+ upsell gói all-in-one của cùng chương trình. - Pricing page: danh sách sản phẩm theo chương trình; user chọn multiple all-in-one để thấy combo discount.
- Empty credit state: hiển thị dialog
Bạn còn 0 credit→ gợi ý nâng credit/tháng (prorate) trước khi bán pack. - Premium theo chương trình: popup chọn gói phù hợp entitlement của feature (
ProhoặcPro Max) và đi thẳng sang checkout.
Offer Structure Contract (Mechanism-first)
Phần tiêu đề “Offer Structure Contract (Mechanism-first)”- Checkout/popup dùng 2 cơ chế gói trước:
Auto-renewOne-time
- Nếu chọn
Auto-renew:- chỉ hiển thị cycle con:
MonthlyhoặcAnnual (12 tháng, tự gia hạn theo năm). - hiển thị note phương thức khả dụng:
Card + Momo.
- chỉ hiển thị cycle con:
- Nếu chọn
One-time:- chỉ hiển thị duration con:
3 thánghoặc6 tháng(non-renew). - hiển thị note phương thức khả dụng:
Card + Momo + Bank QR/Chuyển khoản.
- chỉ hiển thị duration con:
- UI không hiển thị đồng thời toàn bộ cycle/method của cả hai cơ chế.
- Khi đổi cơ chế:
- reset các lựa chọn không tương thích (cycle/duration/method cũ),
- giữ nguyên context feature + tier đã chọn nếu vẫn hợp lệ.
Modal Layout (Trigger Modal)
Phần tiêu đề “Modal Layout (Trigger Modal)”- Header theo ngữ cảnh (ví dụ: “Mở khóa giải thích chuyên sâu”).
- Left panel (
Mua lẻ): liệt kê sản phẩm đề xuất (AI credit, Practice pack), hiển thị giá + selector số lượng. - Right panel (
All-in-one):- level 1: selector cơ chế
Auto-renew | One-time; - level 2:
Auto-renew->Monthly | Annual (12 tháng, tự gia hạn theo năm),One-time->3 tháng | 6 tháng (không tự gia hạn);
- chọn
ProhoặcPro Maxtheo eligibility; - hiển thị note phương thức khả dụng theo cơ chế đang chọn (không show toàn bộ method cùng lúc).
- Pricing cue: gói one-time 6 tháng có badge tiết kiệm so với 3 tháng.
- level 1: selector cơ chế
- Credit slider: điều chỉnh credit/tháng; hiển thị giá cập nhật realtime và quy đổi sử dụng; với gói tháng, nêu rõ không carry-over.
- CTA primary:
Tiếp tục thanh toán; secondary:Xem thêm gói khác(đi pricing page) hoặcĐể sau. - Starters/Movers/Flyers: nhắc rõ “Full luyện tập mở khi bạn là học viên”; checkout chỉ bán khoá, không bán practice lẻ; cho phép preview/free sample trước.
Locked Feature Upgrade Entry (DOL English Web V2 Confirmed)
Phần tiêu đề “Locked Feature Upgrade Entry (DOL English Web V2 Confirmed)”- Entry luôn bắt đầu bằng quick popup khi user bấm vào AI feature đang bị khoá.
- Offer-set theo yêu cầu feature:
- Nếu feature mở được bằng
Pro: popup hiển thị cảProvàPro Max. - Nếu feature yêu cầu
Pro Max: popup chỉ hiển thịPro Max.
- Nếu feature mở được bằng
- Default preselect:
- Nếu có cả
ProvàPro Max, preselect mặc định gói tối thiểu đủ mở feature. - User vẫn có quyền đổi gói trước khi xác nhận.
- Nếu có cả
- Khi popup có cả 2 gói:
- bắt buộc user chọn rõ một gói trước khi chuyển bước.
- Popup luôn có link
Xem chi tiết gói. - Sau khi chọn gói hợp lệ, chuyển nhanh sang bước checkout kế tiếp.
Required Data Policy (No Learning Hard Gate)
Phần tiêu đề “Required Data Policy (No Learning Hard Gate)”- Checkout không được ép user nhập mục tiêu học tập.
- Checkout không được ép user hoàn thành learning profile/academic profile.
- Dữ liệu bắt buộc trong checkout chỉ là dữ liệu liên quan thanh toán và xử lý giao dịch.
- Nếu goal/profile chưa có, checkout vẫn chạy bình thường; phần cá nhân hóa tiếp tục bằng nudge non-blocking sau đó.
Checkout Steps
Phần tiêu đề “Checkout Steps”- Mechanism, Cycle/Duration, Tier & Credit
- Chọn cơ chế:
Auto-renewhoặcOne-time. - Nếu
Auto-renew: chọn cycleMonthlyhoặcAnnual (12 tháng, tự gia hạn theo năm). - Nếu
One-time: chọn duration3 thánghoặc6 tháng (không tự gia hạn). - Chọn tier:
ProhoặcPro Max. - Hiển thị note phương thức khả dụng theo cơ chế đã chọn:
Auto-renew->Card + MomoOne-time->Card + Momo + Bank QR/Chuyển khoản
- Chọn credit/tháng (nếu áp dụng): slider/stepper; hiển thị giá và quy đổi sử dụng; nêu rõ không carry-over với gói tháng.
- Chọn cơ chế:
- Summary
- Danh sách chương trình đã chọn + promotion (combo, sequential giảm 10% khi mua tiếp).
- Cảnh báo: huỷ 1 chương trình sẽ mất combo từ kỳ sau; one-time không mua thêm gói cùng chương trình.
- Mã khuyến mại (nếu chiến dịch) + tuỳ chọn invoice.
- Credit policy: gói tháng mất credit dư khi hết kỳ; One-time hết hạn mất credit.
- Profile & Contact
- Kiểm tra email đã verify trước khi tiếp tục.
- Kiểm tra số điện thoại liên hệ (cho luồng Pro/course); nếu thiếu thì chặn và yêu cầu bổ sung.
- Blocker UI cho phép nhập/cập nhật phone trực tiếp ngay tại cùng màn, không cần thoát flow.
- Phone contact không cần OTP verify; chỉ cần dữ liệu hợp lệ để CS liên hệ.
- Blocker phải giữ nguyên lựa chọn plan/cycle/context và resume đúng bước checkout sau khi đủ dữ liệu.
- Không yêu cầu user nhập mục tiêu học tập ở bước này.
- Payment Method
- Danh sách method chỉ hiển thị theo cơ chế đã chọn từ bước 1.
- Auto-renew (Monthly/Annual) → Momo + Thẻ quốc tế; tick
Lưu phương thức. - One-time (3/6 tháng) → QR/Chuyển khoản, Momo, Thẻ; không auto-renew.
- Không hiển thị method không tương thích với cơ chế hiện tại.
- Hiển thị promotion summary + giá cuối cùng.
- Review & Pay
- Loading state chờ gateway.
- Success → receipt + CTA
Bắt đầu học/Quản lý gói. - Nếu checkout được gọi từ attempt/result context:
- reload lại trang attempt/result hiện tại,
- mở ngay phần vừa unlock theo entitlement mới.
- Nếu checkout được gọi từ landing/exploration context:
- return về đúng trang trước đó,
- hiển thị popup chào mừng nâng cấp thành công.
- Nếu checkout trong modal → giữ overlay, progress indicator; option
Mở trong tab mới.
Promotion & Proration Logic
Phần tiêu đề “Promotion & Proration Logic”Combo discountáp dụng trước thuế, gắn id promotion; gói cao nhất làm gói chính, gói khác giảm 10% tại thời điểm mua.Sequential discount: gói thứ 2 trong 7 ngày sau gói thứ 1 giảm 10%; gói thứ 3 trong 7 ngày sau gói thứ 2 giảm 10%.Mid-cycle add-on: tínhamount = pricePerDay * daysLeft, hiển thị rõ cho user.- Cancel 1 chương trình trong combo → confirm: “Giá còn lại trở về {basePrice} từ kỳ sau”; chọn gói cao tiếp theo làm gói chính.
- Đổi tier:
- nâng cấp (
Pro -> Pro Max) trong chu kỳ đang chạy -> áp dụng ngay, thu phần chênh lệch theo prorate. - hạ cấp (
Pro Max -> Pro) trong chu kỳ đang chạy -> ghi nhận lịch đổi ở kỳ kế tiếp, không hoàn tiền phần còn lại của kỳ hiện tại.
- nâng cấp (
- One-time pass:
- không có cơ chế downgrade/cancel hoàn tiền giữa kỳ,
- nếu mua thêm gói khác thì áp dụng rule overlap/queue hiện hành.
- Nếu hạ
Pro Max -> Prokhi còn AI credit:- giữ nguyên số dư credit,
- lock usage cho các feature vượt entitlement hiện tại.
- Thay đổi credit/tháng: tăng hiệu lực ngay (prorate), giảm hiệu lực kỳ sau.
- Promotion removal when cancel: update summary + email confirm.
Payment Method Handling
Phần tiêu đề “Payment Method Handling”- UI visibility policy:
- mechanism-first, chỉ show method khả dụng của cơ chế đang chọn.
- không render đồng thời toàn bộ method list cho cả auto-renew và one-time.
- Subscription:
- Momo auto-renew token; Thẻ quốc tế (saved token).
- Không hỗ trợ QR/Chuyển khoản cho subscription.
- One-time (3/6):
- Cho phép Momo, Thẻ, QR/Chuyển khoản (có hướng dẫn nếu cần).
- Queue overlap:
- gói auto-renew mua trong lúc one-time còn hạn sẽ chờ tới thời điểm one-time kết thúc mới kích hoạt.
- Cancellation effect:
- monthly/annual cancel không cắt quyền ngay; hết quyền vào cuối chu kỳ đã thanh toán.
- Payment failure: inline error + CTA
Thử lại,Chọn phương thức khác.
Billing Failure & Grace
Phần tiêu đề “Billing Failure & Grace”- Lịch thu tự động: ngày mua gói tháng.
- Retry D0/D1/D3/D5/D7; grace 7 ngày.
- Trong grace: học bình thường, không cấp credit tháng mới; hiển thị nhắc thanh toán.
- Hết grace chưa thanh toán: gói huỷ; muốn dùng lại phải đăng ký mới.
Refund Baseline
Phần tiêu đề “Refund Baseline”- Không hỗ trợ self-serve refund trong active scope hiện tại.
- Refund theo support/manual policy.
- Auto-refund do lỗi chấm AI hệ thống vẫn áp dụng theo contract fairness.
Confirmation & Receipt
Phần tiêu đề “Confirmation & Receipt”- Success page/modal:
- Card summary: sản phẩm, profile, giá, promotion, chu kỳ.
- Buttons:
Bắt đầu học,Quản lý gói,Xem hoá đơn. - Credit pack: hiển thị credit balance mới + link
Xem lịch sử credit. - Subscription: hiển thị bảng
Profile → Billable → Phí kỳ này; linkLịch sử creditpre-filter theo profile.
- Email/SMS: gửi hóa đơn PDF + chi tiết promotion + hướng dẫn cancel/upgrade.
- Invoice info: nếu chọn doanh nghiệp → gắn vào email + admin export.
State Management
Phần tiêu đề “State Management”- Preserve selections khi user quay lại modal/pricing.
- Checkout context stored per user (session) → auto-clean khi hoàn tất hoặc sau 30 phút.
- Promotions locked khi user ở bước thanh toán (timeout 10 phút).
- Partial failure (payment success nhưng áp quyền lỗi) → show fallback
Đang cấp quyền, poll status, escalate admin.
Error & Edge Cases
Phần tiêu đề “Error & Edge Cases”- Gateway timeout → retry option + support contact.
- Webhook delay → show pending state (spinner) + allow user tiếp tục học free sample trong lúc chờ.
- Promotion conflict → hiển thị rule (ví dụ “Không thể áp dụng cùng lúc 2 mã”).
- Email chưa verify hoặc thiếu số điện thoại liên hệ (trong flow Pro/course) -> chặn checkout và yêu cầu bổ sung ngay tại blocker; phone không cần verify OTP.
Analytics & Telemetry
Phần tiêu đề “Analytics & Telemetry”checkout_trigger_view,checkout_trigger_choose_pro,checkout_trigger_choose_promax.checkout_profile_selected,checkout_promo_applied,checkout_payment_success,checkout_payment_fail.bundle_discount_applied,bundle_discount_removed,credit_pack_purchased.contact_blocker_shown,invoice_requested.checkout_profile_billable_toggle,checkout_per_profile_summary_viewed.
References
Phần tiêu đề “References”./PAY_Product_Catalog.md./PAY_Lifecycle_Rules.md../Account/ACC_Screens_Flow.md../Register/REG_Screen_Flow_Documentation.md../../../../Shared/Shared Capabilities/Engagement Platform/ENG_06_Event_Contracts.md
Change log
Phần tiêu đề “Change log”- 2026-03-16: Khóa checkout active theo canon mới: guest phải login trước checkout; hard gate là
email verified + phone contact; blocker chỉ xử lý inline phone completion, không có UI đổi kênh xác thực. - 2026-03-02: Cập nhật contact gate theo baseline auth mới: checkout yêu cầu email đã verify; phone là thông tin liên hệ CS bắt buộc cho luồng mua Pro/đăng ký khóa học, không còn gate xác thực theo số điện thoại.
- 2026-02-27: Chuẩn hoá offer structure theo
mechanism-first: chọnAuto-renew | One-timetrước, chỉ hiển thị cycle/method tương ứng theo lựa chọn, không show toàn bộ method cùng lúc. - 2026-02-27: Cập nhật cycle active: thêm
Annual 12 tháng auto-renew, loại bỏOne-time 12 tháng; one-time chỉ còn3/6. - 2026-02-21: Thêm default preselect minimum-eligible tier cho lock popup, thêm contract resume checkout ở đúng bước sau contact completion, và khóa no-self-serve-refund baseline.
- 2026-02-20: Chuẩn hóa switching baseline đơn giản: upgrade hiệu lực ngay + prorate charge; downgrade hiệu lực kỳ kế tiếp và không hoàn tiền giữa kỳ; one-time không hỗ trợ downgrade/cancel refund giữa kỳ.
- 2026-02-20: Refine active scope theo Product Discovery: tách hoàn toàn flow household/parent-child sang Product KID; mở cycle active thành
Monthly + One-time 3/6/12 (yearly); thêm yearly dual-label và rule downgradePro Max -> Progiữ credit nhưng lock usage ngoài entitlement (checkout contact detail tiếp tục được refine ở 2026-03-02 và 2026-03-16). - 2026-02-19: Chốt contact gate checkout giai đoạn đầu (legacy baseline, đã được thay bởi cập nhật 2026-03-02 và 2026-03-16).
- 2026-02-18: Bổ sung required-data boundary cho checkout: không ép goal/learning profile, chỉ bắt buộc dữ liệu liên quan thanh toán.
- 2026-02-17: Thêm locked-feature upgrade entry contract theo feature (
Proeligible vsPro Maxonly), explicit package choice khi có 2 gói, fast-path checkout, và post-payment return theo ngữ cảnh.