商品與定價
商品建檔、課程/排期綁定、審核上下架、上架時效、早鳥和企業批量價。
業務系統 · M4
負責已發佈課程的商品化、定價、下單支付、企業席位、退款及對帳;學習資格由 LMS 建立。
已確認 系統邊界與業務規則 技術建議 接口與部署設計 待確認 外部契約及運行指標
商城擁有商品、SKU、售賣規則、訂單及支付資料;LMS 擁有課程版本、排期容量與 enrollment。
圖中箭頭表示由界面經 API 及業務模組進入處理與資料層;外部交互須經受控適配器。
商品建檔、課程/排期綁定、審核上下架、上架時效、早鳥和企業批量價。
個人與企業下單、名額暫留、成交價快照、FPS/PayMe 回調驗簽及冪等。
個人付款後自動分配;企業購買後由管理員分配,學員啟用時才建立 LMS enrollment。
退款審核、排期取消改期處理、權限撤銷請求、支付平台定時對帳。
| 來源 → 目標 | 接口/方式 | 傳遞內容與規則 |
|---|---|---|
| LMS → 商城 | 課程/排期事件 | 版本發佈、退役、變更、取消與容量 |
| 商城 → LMS | 容量同步 API | 下單前即時校驗並暫留名額 |
| 商城 → LMS | 付款/席位啟用事件 | 建立 enrollment;失敗顯示開通異常 |
| 商城 → LMS | 退款事件 | 停止未來學習訪問,保留歷史證據 |
| 支付渠道 → 商城 | 驗簽回調+對帳檔 | 支付、退款和差異確認 |
| 商城 → 審計中心 | Outbox 事件 | 改價、支付、席位分配及退款憑證 |
sequenceDiagram
participant 買家
participant 商城 as M4 商城
participant LMS as M3 LMS
participant 支付 as 支付渠道
買家->>商城: 提交商品與排期
商城->>LMS: ReserveSeat(schedule_id, order_id, idempotency_key, expires_at)
LMS-->>商城: hold_id 或拒絕原因
商城->>商城: 保存待支付訂單、成交價與權益快照
買家->>支付: 付款
支付-->>商城: 已驗簽回調(provider_txn_id)
alt 付款有效且名額可確認
商城->>LMS: ConfirmSeat(hold_id, order_id)
商城->>商城: 確認訂單及 allocation_id
alt 個人購買
商城-->>LMS: SeatAssigned(allocation_id, learner_user_id)
else 企業購買
商城-->>買家: 席位待分配及學員啟用
商城-->>LMS: 啟用後 SeatAssigned(allocation_id, learner_user_id)
end
LMS-->>商城: EnrollmentCreated 或 EnrollmentRejected
else 付款超時、名額失效或排期取消
商城->>LMS: ReleaseSeat(hold_id)
商城->>商城: 取消未付款單或標記已付款開通異常
商城-->>買家: 安排改期或退款
end實線為同步請求;虛線為回執或異步事件。外部接口以實際聯調契約為準。
| 接口/事件 | 資料權威與關鍵 ID | 冪等、時限及失敗處理 |
|---|---|---|
| ReserveSeat / ConfirmSeat / ReleaseSeat | LMS:schedule_id、容量、hold_id;M4:order_id、幂等鍵 | 預留到期依訂單支付超時配置;重複調用返回同一結果。到期釋放,已付款但名額失效轉異常單。 |
| PaymentCompleted | M4:order_id、provider_txn_id、allocation_id | 渠道交易號唯一;重複回調不再次確認名額。LMS 開通失敗保留已付款、開通異常狀態。 |
| SeatAssigned → EnrollmentCreated/Rejected | M4:allocation_id;LMS:enrollment_id、source_allocation_id | 企業席位未分配時可沒有 learner_user_id;學員啟用後才建 enrollment,重複事件不得重建。 |
| RefundCompleted | M4:退款及席位;LMS:未來學習訪問 | 按席位撤銷未來訪問,保留歷史學習、證書及審計證據;定期對帳。 |