# 遠傳小額付費交易確認系統 ## 概要 (Summary) - 交易過程主要由遠傳方執行,本系統負責轉跳、交易確認、商品發送,以及實現企劃規劃的業務邏輯,包括首購免費 (*註1*) 和儲存玩家最新電話 (*註2*) 供日後行銷使用。 *註1*: 首購免費的邏輯是企劃希望玩家每個月的首購門票都能免費,遠傳方只支援一次免費。若玩家已經購買過,則下次免費門票由我方判斷並直接贈與,無需轉跳至遠傳端。 *註2*: 一個遠傳門號只適用於一個玩家帳號。若A帳號使用f門號購買門票,則B帳號使用f門號購買不應成功。初次購買遠傳方會擋掉,隔月回購由我方判斷則應失敗。 ## 相關程式碼 - 程式碼主要實作於 Official 微服務,資料存放於同服務的 MongoDB,未發送至 History 微服務。 - **Handler**: - `htty-fet-payment-api`: - `FetchMicroPaymentByUsage`: 處理前端請求、記錄至資料庫,轉跳至付款頁面。 - `HandleMicroPaymentByUsageCallback`: 處理遠傳方交易回傳,檢驗交易成功/失敗及相對應發放邏輯。 - `CheckFetPaymentStatus`: 處理前端交易狀態輪詢。 - `CheckPlayerPurchaseEligibility`: 確認玩家購買許可,包括首購及特殊禮包購買。 - `CheckPlayerPhoneNumber`: 確認玩家電話門號適用性。 - `htty-fet-payment-refund`: - `FetMircoPayRefund`: 遠傳退款 API,僅退款票券和動作標記,小額付費由 QA 處理。 - `htty-fet-payment-record`: - `FetPurchaseRecords`: 遠傳購買紀錄 API,提供後台購買紀錄查詢。 - **Repositories**: - `fetPaymentsApi`, `fetPaymentsDiscount`, `fetPaymentsRecord`: 相關邏輯實作於此。 - **Model**: - `htty-fet-payment-api`, `htty-fet-payment-discount`, `htty-fet-payment-record`, `htty-fet-payment-refund`: 遠傳資料相關結構體。 ## 雜談 + TODO - 測試遠傳 API 須於辦公室內或透過 VPN 連線,因遠傳限制測試環境。 - Handler 應改用單一實例設計模式,減少創建 Service/Repo 開銷。 - 程式碼可讀性與可維護性後續可透過工廠模式優化。 - 過去的一次性購買禮包邏輯可在重構時移除。 - 遠傳流程及 API 設計不便,對接人員溝通不佳。 - 注意玩家可能利用遠傳漏洞購買禮包的行為。