Skip to content

注單與結算(開發文檔)

最後更新:2026-04-10

📖 功能說明請參考 注單與結算


架構

相關檔案

ViewController — 體育注單(18 個)
檔案說明
.../Base/BetSettleContentController.swiftBase Content VC
.../Base/BetSettleSideViewController.swift側邊欄 VC
.../UnSettle/FBUnSettleViewController.swiftFB 未結算
.../Settled/FBSettledViewController.swiftFB 已結算
.../ABSettle/FBABSettleViewController.swiftFB 提前結算
.../ABSettle/FBABSettledContentViewController.swiftFB 提前結算 Content
.../Settled/FBSettledContentViewController.swiftFB 已結算 Content
.../ContainController/FBSettleContentViewController.swiftFB Contain
.../UnSettle/UPUnSettleViewController.swiftUP 未結算
.../Settled/UPSettledViewController.swiftUP 已結算
.../ABSettle/UPABSettleViewController.swiftUP 提前結算
.../ABSettle/UPABSettledContentViewController.swiftUP 提前結算 Content
.../Settled/UPSettledContentViewController.swiftUP 已結算 Content
.../ContainController/UPSettleContentViewController.swiftUP Contain
.../UnSettle/DBUnSettleViewController.swiftDB 未結算
.../Settled/DBSettledViewController.swiftDB 已結算
.../Settled/DBSettledContentViewController.swiftDB 已結算 Content
.../ContainController/DBSettleContentViewController.swiftDB Contain

基礎路徑:BBSport/Tab/注单/BetHistory/Sport/General/

ViewController — LiveGame / 遊戲注單(6 個)
檔案說明
.../UnSettle/LiveGameUnSettleViewController.swiftLiveGame 未結算
.../Settled/LiveGameSettledViewController.swiftLiveGame 已結算
.../Settled/LiveGameSettledContentViewController.swiftLiveGame Content
.../ContainController/LiveGameSettleContentViewController.swiftLiveGame Contain
.../BBGame/C/BBNoteViewController.swift遊戲注單 VC
.../BBGame/C/BBNoteDetailViewController.swift遊戲注單詳情

基礎路徑:BBSport/Tab/注单/BetHistory/

View(30 個)
檔案說明
.../View/TableViewAdapter/SettleTableViewAdapter.swiftTableView Adapter
.../View/TableViewAdapter/SettleTableViewAdapter+FB.swiftFB 擴展
.../View/TableViewAdapter/SettleTableViewAdapter+DB.swiftDB 擴展
.../View/TableViewAdapter/SettleTableViewAdapter+UP.swiftUP 擴展
.../View/TableViewAdapter/SettleTableViewAdapter+LiveGame.swiftLiveGame 擴展
.../View/EarlySettlementAlert/ST/STCashOutSettlementAlert.swift提前結算彈窗
.../View/EarlySettlementAlert/ST/STCashOutSettlementConfrimAlert.swiftCashOut 確認
.../View/EarlySettlementAlert/ST/STEarlySettlementAlertCtrl.swift提前結算 Alert VC
.../View/EarlySettlementAlert/ST/STEarlySettlementConfirmAlertCtrl.swift確認 Alert VC
.../View/EarlySettlementAlert/ST/STEarlySettlementDetailAlert.swift詳情彈窗
.../View/EarlySettlementAlert/ST/STSeriesCashOutSettlementAlert.swift串關 CashOut
.../View/EarlySettlementAlert/ST/STSliderView.swift滑桿
.../View/EarlySettlementAlert/ST/SettleAmoutTextField.swift結算金額輸入框
.../View/EarlySettlementAlert/ST/STBetSettleKeyboardView.swift結算鍵盤
.../View/EarlySettlementAlert/DB/DBEarlySettlementAlert.swiftDB 提前結算
.../View/BetSettleEarlyActionView.swift提前結算操作
.../View/BetSettleHeaderView.swift注單 Header
.../View/BetSettleReservingActionView.swift預約中操作
.../View/DoubleLayerButton.swift雙層按鈕
.../View/ShareView.swift分享
.../View/SingleBetCell/SettleSingleBetCell.swift單關注單 Cell
.../View/SingleBetCell/SettleHeaderView.swift單關 Header
.../View/SingleBetCell/SettleFooterView.swift單關 Footer
.../View/SeriesBetCell/SettleComboBetCell.swift串關注單 Cell
.../View/SeriesBetCell/SettleSeriesPassHeaderView.swift串關 Header
.../View/ContainerHeader/HomeSettledContentView.swift容器 Header 內容
.../View/ContainerHeader/HomeSettledTitleStyle.swift容器 Header 樣式
.../View/ContainerHeader/HomeSettledTitleView.swift容器 Header 標題
.../View/HeaderView/BetHeaderMenuView.swiftHeader 選單
.../View/HeaderView/BetSettleSportDateView.swift日期篩選

基礎路徑:BBSport/Tab/注单/BetHistory/Sport/General/

Model(14 個)
檔案說明
.../Model/BetSettleStatus.swift注單狀態
.../Model/ST/FBSettleModel.swiftFB 結算 Model
.../Model/ST/FBABSettleStatus.swiftFB 提前結算狀態
.../Model/ST/FBCashOutStatus.swiftFB CashOut 狀態
.../Model/ST/FBCashoutConfig.swiftFB CashOut 設定
.../Model/ST/FBSettleCashOutListModel.swiftFB CashOut 列表
.../Model/ST/SettleTotalModel.swift結算統計
.../Model/DB/DBSettleModel.swiftDB 結算 Model
.../Notice/ViewModel/BetNoticeViewModel.swift注單通知 VM
.../Notice/View/BetSettleNoticeListView.swift通知列表 View
.../BBGame/M/BBBetByChannelModel.swift遊戲渠道投注
.../BBGame/M/BBBetGameListModel.swift遊戲投注列表
.../BBGame/M/BBGameItemInformation.swift遊戲項目資訊

基礎路徑:BBSport/Tab/注单/BetHistory/Sport/General/(除 BBGame)

Service / Cache(2 個)
檔案說明
.../Sport/Service/BetSettleDataCacheManager.swift快取管理
.../Sport/Service/BetSettleLogManager.swift日誌管理

基礎路徑:BBSport/Tab/注单/BetHistory/

API Request(18 個)
檔案說明
BBSport/API/FBSportAPI/Settle/FBSportAPI+SettleListRequest.swiftFB 注單列表
BBSport/API/FBSportAPI/Settle/FBSportAPI+AskAmountDataRequest.swiftFB 提前結算詢價
BBSport/API/FBSportAPI/Settle/FBSportAPI+SubmitCashOutRequest.swiftFB 提交提前結算
BBSport/API/FBSportAPI/Settle/FBSportAPI+EarlySettlementStutasListRequest.swiftFB 提前結算狀態
BBSport/API/FBSportAPI/Settle/FBSportAPI+ReserveCashOutRequest.swiftFB 預約提前結算
BBSport/API/FBSportAPI/Settle/FBSportAPI+CancelReserveCashOutRequest.swiftFB 取消預約結算
BBSport/API/FBSportAPI/Settle/FBSportAPI+ReserveBetListRequest.swiftFB 預約投注列表
BBSport/API/UPSportAPI/Settle/UPSportAPI+SettleListRequest.swiftUP 注單列表
BBSport/API/UPSportAPI/Settle/UPSportAPI+AskAmountDataRequest.swiftUP 提前結算詢價
BBSport/API/UPSportAPI/Settle/UPSportAPI+SubmitCashOutRequest.swiftUP 提交提前結算
BBSport/API/UPSportAPI/Settle/UPSportAPI+EarlySettlementStutasListRequest.swiftUP 提前結算狀態
BBSport/API/UPSportAPI/Settle/UPSportAPI+ReserveCashOutRequest.swiftUP 預約提前結算
BBSport/API/UPSportAPI/Settle/UPSportAPI+CancelReserveCashOutRequest.swiftUP 取消預約結算
BBSport/API/UPSportAPI/Settle/UPSportAPI+ReserveBetListRequest.swiftUP 預約投注列表
BBSport/API/DBSportAPI/Settlement/DBSportAPI+SettlementListRequest.swiftDB 注單列表
BBSport/API/DBSportAPI/Settlement/DBSportAPI+PreSettleRequest.swiftDB 提前結算
BBSport/API/DBSportAPI/Settlement/DBSportAPI+EarlySettlementStutasListRequest.swiftDB 提前結算狀態
BBSport/API/DBSportAPI/Settlement/DBSportAPI+EarlySettleDetailRequest.swiftDB 提前結算詳情
SportDataManager 相關(40+ 個)
檔案說明
.../SportDataManager/SportDataManager.swift體育資料中心
.../SportDataManager/SportDataManager+DB.swiftDB 擴展
.../SportDataManager/BetSettleDateStyle.swift注單日期樣式
.../SportDataManager/FB/FBSettleService.swiftFB 結算 Service
.../SportDataManager/FB/FBSettleService+request.swiftFB 結算請求
.../SportDataManager/DB/DBSettleService.swiftDB 結算 Service
.../SportDataManager/DB/DBSettleService+request.swiftDB 結算請求
.../SportDataManager/UP/UPSettleService.swiftUP 結算 Service
.../SportDataManager/UP/UPSettleService+request.swiftUP 結算請求
.../SportDataManager/LiveGameSettle/LiveGameSettleService.swiftLiveGame 結算
.../SportDataManager/SettleModel/BetSettleModel.swift注單結算 Model
.../SportDataManager/SettleModel/BetSettleSelectionsModel.swift結算選項
.../SportDataManager/SettleModel/BetSettleType.swift結算類型
.../SportDataManager/SettleModel/BetSettledStatus.swift已結算狀態
.../SportDataManager/SettleModel/BetSettlementStatus.swift結算進度
.../SportDataManager/DB/OBEventModel.swiftOB 賽事 Model
.../SportDataManager/DB/OBDataManager.swiftOB 資料管理
.../SportDataManager/FB/STEventModel.swiftST 賽事 Model
.../SportDataManager/FB/STDataManager.swiftST 資料管理

基礎路徑:BBSport/STUIKit/STSportCoreDataCenter/


API

注單列表


FB/UP 注單列表(未結算/已結算)

POST v1/order/new/bet/list — JSON — 來源:FBSportAPI / UPSportAPI

TIP

未結算帶 isSettled: false;已結算帶 isSettled: true 及日期區間。

Request:

參數型別必填說明
isSettledboolfalse=未結算、true=已結算
sizeint未結算 200、已結算 50
languageTypestring固定 "CMN"
currentint頁碼(已結算分頁)
startTimestring開始時間(已結算)
endTimestring結束時間(已結算)

Response:(JSON String → FBSettledContainerModel

欄位型別說明
records[FBSettleModel]注單記錄列表
ods[FBSettleModel]注單記錄(備用)
sts[Sts]統計資料
totalInt總筆數

FB/UP 提前結算詢價

POST v1/order/cashOut/price — JSON — 來源:FBSportAPI / UPSportAPI

參數型別必填說明
orderIds[string]訂單 ID 陣列

Response:success=truedata,型別 FBSettleCashOutPriceModel

欄位型別說明
mxcInt最大 CashOut 次數
pr[FBSettleCashOutListModel]詢價列表

FBSettleCashOutListModel

欄位型別說明
oidString注單號
amtDecimal詢價(賠率)
smisDecimal單關最小結算本金
pmisDecimal串關最小結算本金

FB/UP 提交提前結算

POST v1/order/cashOut/bet — JSON — 來源:FBSportAPI / UPSportAPI

參數型別必填說明
orderIdstring訂單 ID
cashOutTimestring提前結算時間
cashOutStakestring提前結算金額
acceptOddsChangebool是否接受賠率變動,固定 false
unitCashOutPayoutStakestring單位 CashOut 派獎
parlaybool是否串關

Response: JSON String,含提前結算結果。


FB/UP 提前結算狀態查詢

POST v1/order/getCashOutsByIds — JSON — 來源:FBSportAPI / UPSportAPI

參數型別必填說明
ids[string]CashOut ID 陣列

Response: JSON String,含各 CashOut 狀態。


FB/UP 預約提前結算

POST v1/order/cashOutReserve/bet — JSON — 來源:FBSportAPI / UPSportAPI

參數型別必填說明
orderIdstring訂單 ID
cashOutStakestring預約 CashOut 金額
cashOutPayoutStakestringCashOut 派獎金額
parlaybool是否串關

Response: JSON String。


FB/UP 取消預約提前結算

POST v1/order/cashOutReserve/cancel — JSON — 來源:FBSportAPI / UPSportAPI

參數型別必填說明
reserveCashOutIdstring預約 CashOut ID

Response: JSON String。


FB/UP 預約投注列表

POST v1/order/new/reserve/betList — JSON — 來源:FBSportAPI / UPSportAPI

參數型別必填說明
startTimestring開始時間(進行中傳空字串)
endTimestring結束時間(進行中傳空字串)
isFailedboolfalse=進行中、true=失敗
languageTypestring固定 "CMN"

Response: JSON String,含預約投注列表。


DB 注單


DB 注單列表

POST yewu13/v1/betOrder/client/getOrderListV3 — JSON — 來源:DBSportAPI

Request:

參數型別必填說明
orderStatusint注單狀態篩選
pageint頁碼
sizeint每頁數量
timeTypeint時間類型(1=今天、2=昨天、3=本週)

Response:(JSON String → DBSettleModelContainer

欄位型別說明
records[DBSettleModel]注單記錄列表

DBSettleModel 主要欄位:

欄位型別說明
orderNoString訂單號
seriesTypeString串關類型(單投=1)
seriesValueString串關值
seriesSumInt串關注數
detailList[DBDetailList]訂單投注項明細

WARNING

DB 已結算查詢失敗(code "0401038" / "503")→ 最多重試 2 次,間隔 0.5s。


DB 提前結算

POST yewu13/v1/betOrder/orderPreSettle — JSON — 來源:DBSportAPI

參數型別必填說明
orderNostring訂單號
settleAmountstring結算金額
deviceTypeint裝置類型
frontSettleAmountstring前端計算結算金額

Response: JSON String。


DB 提前結算狀態查詢

GET yewu13/v1/betOrder/queryOrderPreSettleConfirm — JSON — 來源:DBSportAPI

無參數,靠 Header token/uid 認證。

Response: JSON String,含待確認的提前結算訂單。


DB 提前結算詳情

GET yewu13/v1/betOrder/client/getPreSettleOrderDetail — JSON — 來源:DBSportAPI

參數型別必填說明
orderNostring訂單號

Response:code="0000000"data,型別 [DBEarlySettleDetailModel]?

欄位型別說明
orderNoString主單號
preOrderNoString提前結算子單號
orderStatusInt注單狀態
createTimeDouble提前結算時間
remainingBetAmountDouble剩餘可結算額度
settleAmountDouble返還金額

WARNING

DB 平台無預約提前結算(無 ReserveCashOut / ReserveBetList)。


LiveGame 注單

LiveGame 注單(直播間互動投注,如骰寶)無獨立的注單查詢 API。LiveGame 未結算/已結算使用 SettleTableViewAdapter+LiveGame 擴展渲染,底層結算 Service 為 LiveGameSettleService,資料來源複用體育注單列表 API(FB/UP v1/order/new/bet/list)。


遊戲注單

遊戲注單(非體育類遊戲投注記錄)使用以下 API:

遊戲投注記錄

POST api/forehead/data/betting/gameBetList — urlForm — 來源:STAPI

Request:

參數型別必填說明
stimeString開始時間
etimeString結束時間
channelIdInt錢包 ID
pageInt頁碼
sizeInt每頁數量
gamePlatformIdInt遊戲平台 ID
statusString狀態篩選(彩票時 key 改為 ticketStatus

Response:code=1data,型別 GameBetListRequest.Response

欄位型別說明
totalInt總筆數
sumSum統計(win=盈利、amount=投注額)
list[BBBetGameModel]遊戲投注記錄列表

資料模型

FBSettleModel 完整欄位(15 個)
欄位型別說明
idString訂單 ID
sertInt投注類型(0=單投、1=串關)
btString投注類型描述
satDecimal投注本金
saDecimal結算金額
copsDecimal提前結算返還金額
mwaDecimal最大可贏額(不含本金)
stInt注單狀態(0=建立、1=確認中、2=已確認、3=已拒絕、4=取消、5=已結算)
rstSTSettleReserveType預約狀態(0=預約中、1=成功、2=失敗、3=取消)
abBool是否預約投注
isCanCashoutBool是否可提前結算
isCanAppointmentCashoutBool是否可預約提前結算
ops[OPS]投注選項集合
crl[Crl]提前結算歷史記錄
rcool[Rcool]預約提前結算歷史

OPS(投注選項)

欄位型別說明
te[TE]球隊資訊
sidInt運動 ID
midInt比賽 ID
mnString比賽名稱
lnString聯賽名稱
odDecimal歐盤賠率
boString下注時賠率
mgnString玩法名稱
onmString投注玩法
ipBool是否滾球

Sts(多幣種統計)

欄位型別說明
cidInt幣種 ID
ctInt訂單數
saDecimal投注金額
paDecimal返還額
cwlDecimal輸贏

各平台功能差異

功能FBUPDBLiveGame
未結算注單
已結算注單
提前結算✓(PreSettle)-
提前結算 Tab--
預約提前結算--
預約投注列表--

WARNING

FB 與 UP 的 API 路徑完全一致,僅 base URL 不同。DB 使用 yewu13 前綴的獨立 API 體系。LiveGame 無獨立結算 API。

實作重點

  • 分頁載入:MJRefresh 下拉刷新 + 上拉載入;currentPage 刷新時重置為 1
  • TableView Adapter 模式SettleTableViewAdapter 基底,各平台透過 Extension 擴展
  • 快取管理:切換平台 Tab 時優先顯示快取,背景更新
  • 提前結算可用性:根據商戶設定動態計算,開關來源為 POST v1/merchant/detail API(FB/UP)回傳的 FBMerchantDetailModel
    • co(CashOut):單關提前結算開關(1=單次、2=多次、3=關閉)
    • boc(BookOrderCashOut):單關預約提前結算開關(1=單次、2=多次、3=關閉)
    • pco(ParlayCashOut):串關提前結算開關(1=開啟、2=關閉)
    • pbc(ParlayBookOrderCashOut):串關預約提前結算開關(1=開啟、2=關閉)
    • 另有 bo(BookOrder):單關預約投注開關(1=開啟、2=關閉)
    • 同時檢查已結算次數 coc 是否達上限

關鍵數字

  • 未結算查詢 size:200
  • 已結算查詢 size:50
  • 提前結算輪詢間隔:5 秒
  • DB 失敗重試:最多 2 次,間隔 0.5 秒