Appearance
個人資料與提款
最後更新:2026-04-09
功能說明
提供使用者管理個人資料的完整入口,包含:查看/修改基本資料、綁定銀行卡、綁定虛擬貨幣地址(USDT/EB/TB/TBU)、修改密碼、綁定手機/郵箱、法幣提款(銀行卡/普通/專屬提款)、以及虛擬幣提款(USDT/EB/TB/TBU)等功能。
使用者流程
個人資料主頁
- 進入「我的」→ 點擊個人頭像或「個人資料」→
BBPersonalInfoMainController - 頁面頂部顯示背景圖,下方 TableView 列出各功能入口
- 常見入口:
- 個人資訊(暱稱、頭像)→
BBPersonalInfoController - 銀行卡管理 →
BBPersonalInfoBankCardListController - 地址管理(加密貨幣)→
BBPersonalInfoAddressListController - 修改密碼 →
BBPersonalInfoChangePwdController - 綁定手機/郵箱 →
BBPersonalInfoBindCelEmailController
- 個人資訊(暱稱、頭像)→
銀行卡綁定
- 進入銀行卡列表 → 點擊「新增銀行卡」→
BBPersonalInfoAddBankCardController - 支援 OCR 掃卡識別(
BBBankCardIdentify) - 選擇開戶銀行(從 API 取得支援銀行列表)
- 輸入卡號、持卡人姓名
- 提交後狀態為「審核中」(
status: 2)
加密貨幣地址管理
- 進入地址列表 → 選擇虛擬幣類型(USDT / EB / TB / TBU)
- 新增地址 →
BBAddVirtualAddressViewController - 輸入地址 + 選擇協議(TRC20 / ERC20 等,EB 無協議選擇)
- 需先取得驗證碼(極驗驗證 → 發送簡訊碼),再連同驗證碼一起提交
- 每種幣最多 5 個地址(
addressMaxCount = 5) BBVirtualWithdrawViewController— 虛擬貨幣地址管理頁面
修改密碼
- 個人資料主頁 →
BBPersonalInfoChangePwdController - 輸入舊密碼、新密碼、確認密碼
- 密碼規則:8~20 字元,至少包含「數字/字母」的 2 種組合(
IFCheckUtil.checkPassCode) - 前端驗證通過後呼叫
ChangePasswordRequest,成功後自動 pop 回根頁面
忘記密碼(找回密碼)
- 登入頁 → 忘記密碼 →
SendMessageViewController→ChangePaawordViewController(注意原始碼拼寫為Paaword) - 透過手機/郵箱取得驗證碼 → 輸入新密碼 + 確認密碼
- 呼叫
IFLoginService.forgetPaaword提交,成功後清除本地密碼並返回首頁
綁定手機/郵箱
- 個人資料主頁 →
BBPersonalInfoBindCelEmailController - 綁定手機:輸入手機號 + 區碼 → 極驗驗證 → 發送驗證碼(
BindMobileVerifyCodeRequest)→ 輸入驗證碼 → 提交(BindMobileRequest) - 綁定郵箱:輸入郵箱 → 發送驗證碼(
BindEmailVerifyCodeRequest)→ 輸入驗證碼 → 提交(BindEmailRequest)
法幣提款流程
- 「我的」→ 提款 →
WithdrawViewController(由WithdrawViewModel驅動) - 提款方式(
WithdrawType):.bank(銀行卡提款,含普通+專屬,orgSubmitType=1).normal(普通提款,orgSubmitType=2).c2c(專屬提款,orgSubmitType=3).digital(type)(虛擬幣提款,見下方)
- 選擇銀行卡 → 輸入金額 → 前端驗證:
- 餘額是否足夠
- 金額 ≥
minLimit且 ≤maxLimit - 剩餘提款次數 > 0(
leftWithdrawCount,C2C 不檢查)
- 手續費計算(
GeneralConfig.getWithDrawFeeAmount):- 免費次數 > 0 → 手續費 = 0
feeType = .percent→金額 × fee / 100feeType = .fix→ 固定 fee- 手續費不超過
feeLimit(大額除外)
- 若需驗證碼(
needSms = true)→BBSendMsgCodeView→ 取得驗證碼 - 先轉帳至中心錢包 → 再呼叫
HttpService.withdrawSubmit(endpoint:api/forehead/fund/withdraw/submit) - 提交成功 → 查詢最新狀態(
WithdrawLastStatusRequest)→ 跳轉WithdrawDetailViewController
虛擬幣提款流程
- 提款頁切換到虛擬幣 tab → 選擇幣種(
WithdrawDigitalType) - 虛擬幣類型:
.usdt(orgSubmitType=4,支援多協議 TRC20/ERC20).ebPay(orgSubmitType=6,無協議選擇).tbPay(orgSubmitType=21,支援多協議).tbu(orgSubmitType=22,支援多協議)
- 選擇提幣地址 → 驗證地址協議是否匹配 → 輸入金額
- 匯率換算:金額 × 匯率 = 預計到帳虛擬幣數量(
WithdrawRateRequest查詢匯率) - 限額驗證:
- USDT / TBU:使用
usdtMinLimit/usdtMaxLimit(依協議不同限額不同,來自usdtLimits) - EB / TB:使用
minLimit/maxLimit(與銀行卡相同限額)
- USDT / TBU:使用
- 確認手續費彈窗 → 提交(與法幣共用
HttpService.withdrawSubmit,帶digitalType.withdrawSubmitIdKey參數)
提款狀態流轉
WithdrawLastStatusModel.currentStep:1.申請 → 2.等待付款 → 3.待確認到帳 → 4.提款完成- 確認到帳操作:
WithdrawSubmitConfirmReceiveRequest(orderId) - 支援 C2C 拆單(
isC2CSplitWithdrawOpen)、預約提款(ReserveInfoRequest)
頁面跳轉
- 「我的」→ 個人頭像/個人資料 →
BBPersonalInfoMainController - 個人資料主頁 →
BBPersonalInfoController(修改暱稱/頭像) - 個人資料主頁 →
BBPersonalInfoBankCardListController→BBPersonalInfoAddBankCardController - 個人資料主頁 →
BBPersonalInfoAddressListController→BBAddVirtualAddressViewController - 個人資料主頁 →
BBPersonalInfoChangePwdController(修改密碼) - 個人資料主頁 →
BBPersonalInfoBindCelEmailController(綁定手機/郵箱) - 個人資料主頁 →
BBVirtualWithdrawViewController(虛擬貨幣地址管理) - 「我的」→ 提款 →
WithdrawViewController(法幣/虛擬幣提款) - 提款成功 →
WithdrawDetailViewController(提款詳情/狀態追蹤) - 登入頁 → 忘記密碼 →
SendMessageViewController→ChangePaawordViewController
技術視角(開發看這裡)
相關檔案
| 類型 | 檔案路徑 |
|---|---|
| ViewController(主頁) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoMainController.swift |
| ViewController(資料) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoController.swift |
| ViewController(銀行卡列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoBankCardListController.swift |
| ViewController(新增銀行卡) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoAddBankCardController.swift |
| ViewController(地址列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoAddressListController.swift |
| ViewController(新增地址) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBAddVirtualAddressViewController.swift |
| ViewController(虛擬提款) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBVirtualWithdrawViewController.swift |
| ViewController(修改密碼) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoChangePwdController.swift |
| ViewController(綁定手機/郵箱) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoBindCelEmailController.swift |
| ViewController(收款地址) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoEntryAddressController.swift |
| ViewController(掃碼) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBScanViewController.swift |
| ViewModel | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/ViewModel/BBOnelineInputControllerViewModel.swift |
| Helper(銀行卡識別) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/BBBankCardIdentify.swift |
| Helper(銀行 Icon) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/BBBankIconHelper.swift |
| Helper(錢包服務) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/BBWalletService.swift |
| Helper(UI 管理) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/PersonalInfoUIManager.swift |
| ViewController(法幣提款) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/C/WithdrawViewController.swift |
| ViewController(提款詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/C/WithdrawDetailViewController.swift |
| ViewController(忘記密碼-改密) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Login_Register/登录注册/FindPassword/C/ChangePaawordViewController.swift |
| ViewModel(提款) | WithdrawViewModel(WithdrawViewController 初始化注入) |
| Model(提款資訊) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawInfoModel.swift |
| Model(提款類型) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawType.swift |
| Model(虛擬幣類型) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawDigitalType.swift |
| Model(最新提款狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawLastStatusModel.swift |
| Model(加密地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Model/CryptoAddressInfo.swift |
| Model(加密協議) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Model/CryptoProtocol.swift |
| Helper(提款網路請求) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/HttpService.swift |
| ViewController(單行輸入) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBOnelineInputController.swift |
| ViewController(基底) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/C/BBPersonalInfoBaseController.swift |
| View(新增銀行卡照片) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBAddBankCardPhotoView.swift |
| Cell(地址列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBAddressListCell.swift |
| View(地址選擇器) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBAddressPicker.swift |
| Cell(銀行卡列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBBankCardListCell.swift |
| View(選項切換) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBChoiceSegmentView.swift |
| View(自動輸入欄位) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBInputAutoField.swift |
| View(個人編輯) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBPersonEditView.swift |
| Cell(個人資料主頁) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBPersonalInfoMainCell.swift |
| View(選擇開戶銀行) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBSelectAffiliatedBankView.swift |
| View(發送驗證碼) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBSendMsgCodeView.swift |
| Cell(虛擬地址) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBVirtualAddressCell.swift |
| View(虛擬地址空狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBVirtualAddressEmptyView.swift |
| View(虛擬地址 Footer) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBVirtualAddressTableFooterView.swift |
| View(虛擬幣輸入) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBVirtualInputView.swift |
| View(虛擬幣協議) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/UserInfo/V/BBVirtualProtocolView.swift |
| ViewModel(提款) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/C/WithdrawViewModel.swift |
| Model(預約提款) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/AppointmentInfoModel.swift |
| Model(C2C 金額類型) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawC2CAmountType.swift |
| Model(虛擬幣地址) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawDigitalAddressModel.swift |
| Model(提款主模型) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawModel.swift |
| Model(提款狀態輸入) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/M/WithdrawStatusInput.swift |
| View(提款帳戶) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/BBWithdrawAccount.swift |
| View(銀行提款 Body) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/BankBody/WithdrawBankBodyView.swift |
| View(選擇地址列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/ChooseAdress/WithdrawAddressListView.swift |
| Cell(選擇銀行卡) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/ChooseBank/WithdrawBankCell.swift |
| View(選擇銀行卡) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/ChooseBank/WithdrawSelectBankCardView.swift |
| View(選擇銀行) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/ChooseBank/WithdrawSelectBankView.swift |
| View(提款 Body 容器) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/ContentView/WithdrawBodyView.swift |
| View(虛擬幣提款 Body) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/DigitalBody/WithdrawDigitalBodyView.swift |
| View(虛擬幣切換類型) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/DigitalBody/WithdrawDigitalChangeTypeView.swift |
| View(虛擬幣類型按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/DigitalBody/WithdrawDigitalTypeButton.swift |
| View(預約提款) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/SubView/AppointmentView.swift |
| View(銀行維護) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/SubView/BankMaintenanceView.swift |
| View(金額輸入) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/SubView/InputAmountView.swift |
| View(提款提示) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/SubView/WithdrawTipView.swift |
| View(提款標題) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BodyView/SubView/WithdrawTitleView.swift |
| View(底部按鈕) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BottomView/WithdrawBottomButtonsView.swift |
| View(底部區域) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BottomView/WithdrawBottomView.swift |
| View(C2C 金額) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BottomView/WithdrawC2CAmountView.swift |
| View(提款金額列表) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BottomView/WithdrawMoneysView.swift |
| View(提款進度) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BottomView/WithdrawProgressView.swift |
| View(提款通道) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/BottomView/WithdrawTypeChannelView.swift |
| Cell(C2C 拆單) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/Detail/WithdrawDetailC2CSplitOrderCell/WithdrawDetailC2CSplitOrderCell.swift |
| View(C2C 拆單狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/Detail/WithdrawDetailC2CSplitOrderCell/WithdrawDetailC2CSplitOrderCellStatusView.swift |
| Cell(拆單詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/Detail/WithdrawDetailOrderSplitCell.swift |
| View(詳情 Header) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/Detail/WithdrawDetailTBHeaderView.swift |
| View(詳情左右 Label) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/Detail/WithdrawDetialLeftRightLabelView.swift |
| View(提款金額詳情) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/Detail/WithdrawMoneyDetailView.swift |
| Enum(提款狀態) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/Detail/WithdrawStatusEnums.swift |
| View(提款姓名) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/NameView/WithdrawNameView.swift |
| View(虛擬幣引導) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/WithdrawDigitalGuideView.swift |
| View(提款彈窗) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Withdraw/V/hud/WithdrawAlertView.swift |
| Helper(登入彈窗協議) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/BBOpenLoginAlertViewProtocol.swift |
| Helper(登入 UI 管理) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/STLoginUIManager.swift |
| Helper(OCR 分類 - AipDisplayLink) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/Category/AipDisplayLink.m |
| Helper(OCR 分類 - ScaleButton) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/Category/IOSpeScaleLayoutButton.m |
| Helper(OCR 分類 - ScaleConstraint) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/Category/IOSpeScaleLayoutConstraint.m |
| Helper(OCR 分類 - ScaleLabel) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/Category/IOSpeScaleLayoutLabel.m |
| Helper(OCR 分類 - UIImage) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/Category/UIImage+AipCameraAddition.m |
| Helper(OCR View - PreviewView) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/View/AipCameraPreviewView.m |
| Helper(OCR View - CutImageView) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/View/AipCutImageView.m |
| Helper(OCR View - ImageView) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/View/AipImageView.m |
| Helper(OCR VC - CameraController) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/ViewController/AipCameraController.m |
| Helper(OCR VC - CaptureCardVC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/ViewController/AipCaptureCardVC.m |
| Helper(OCR VC - GeneralVC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/ViewController/AipGeneralVC.m |
| Helper(OCR VC - LoaderBaseVC) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/ViewController/AipLoaderBaseVC.m |
| Helper(OCR VC - NavigationController) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/AipOcrSdk/ViewController/AipNavigationController.m |
| Model(遊戲錢包) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/Transfer/GameWalletModel.m |
| Model(轉帳) | /Users/user/Work/bbsport-new/BBSport/Tab/我的/Mine/Helpers/Transfer/TransferModeloc.m |
| API(綁定郵箱) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+BindEmailRequest.swift |
| API(綁定手機) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+BindMobileRequest.swift |
| API(修改密碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+ChangePasswordRequest.swift |
| API(暱稱詳情) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+NickNameDetailRequest.swift |
| API(更新用戶資訊) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+UpdateUserInfoRequest.swift |
| API(用戶頭像) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+UserCenterAvatarRequest.swift |
| API(安全資訊查詢) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+UserSecurityInfoRequest.swift |
| API(更新安全資訊) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+UpdateSecurityInfoRequest.swift |
| API(驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+UserValidCodeRequest.swift |
| API(重置驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+ResetUserValidCodeRequest.swift |
| API(邀請碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/STAPI+InviteCodeRequest.swift |
| API(收貨地址列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Receive/STAPI+UserReceiveAddressRequest.swift |
| API(新增收貨地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Receive/STAPI+AddReceiveAddressRequest.swift |
| API(刪除收貨地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Receive/STAPI+DeleteReceiveAddressRequest.swift |
| API(省份列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Receive/STAPI+ProvinceRequest.swift |
| API(設定預設收貨地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Receive/STAPI+UpdateDefaultReceiveAddressRequest.swift |
| API(更新收貨地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/Receive/STAPI+UpdateReceiveAddressRequest.swift |
| API(個人主頁資訊) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/STAPI+ProfileInfoRequest.swift |
| API(個人投注紀錄) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/STAPI+ProfileBetRequest.swift |
| API(關注專家) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/STAPI+ProfileFollowExpertRequest.swift |
| API(關注他人) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/STAPI+ProfileFollowOthersRequest.swift |
| API(按讚投注) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/STAPI+ProfileLikeBetRequest.swift |
| API(查看權限) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/STAPI+ProfileViewingPermissionRequest.swift |
| API(停止通知) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/STAPI+StopNotifyingRequest.swift |
| API(粉絲頁關注) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/FansPage/STAPI+FansPageFollowRequest.swift |
| API(粉絲頁訂閱) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Profile/FansPage/STAPI+FansPageSubscriptionRequest.swift |
| API(全部稱號) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Title/STAPI+AllMemberTitleRequest.swift |
| API(設定用戶稱號) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Title/STAPI+SetUserTitleInfoRequest.swift |
| API(用戶稱號列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Title/STAPI+UserTitleListInfoRequest.swift |
| API(稱號取得資訊) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Title/STAPI+UserTitleObtainInfoRequest.swift |
| API(稱號牆資訊) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Title/STAPI+UserTitleWallInfoRequest.swift |
| API(銀行卡綁定驗證碼-申請) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/BankCard/STAPI+ApplyBankCardVerifyCodeRequest.swift |
| API(銀行卡綁定驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/BankCard/STAPI+BindBankCardVerifyCodeRequest.swift |
| API(銀行卡刪除驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/BankCard/STAPI+DeleteBankCardVerifyCodeRequest.swift |
| API(EB 新增地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/EB/STAPI+AddWithdrawalEBAddressVerifyCodeRequest.swift |
| API(EB 刪除地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/EB/STAPI+DeleteWithdrawalEBAddressVerifyCodeRequest.swift |
| API(綁定郵箱驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/STAPI+BindEmailVerifyCodeRequest.swift |
| API(綁定手機驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/STAPI+BindMobileVerifyCodeRequest.swift |
| API(提款安全驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/STAPI+WithdrawalSecurityVerifyCodeRequest.swift |
| API(提款驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/STAPI+WithdrawalVerifyCodeRequest.swift |
| API(TB 新增地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/TB/STAPI+AddWithdrawalTBAddressVerifyCodeRequest.swift |
| API(TB 刪除地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/TB/STAPI+DeleteWithdrawalTBAddressVerifyCodeRequest.swift |
| API(TBU 新增地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/TBU/STAPI+AddWithdrawalTBUAddressVerifyCodeRequest.swift |
| API(TBU 刪除地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/TBU/STAPI+DeleteWithdrawalTBUAddressVerifyCodeRequest.swift |
| API(USDT 新增地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/USDT/STAPI+AddWithdrawalUSDTAddressVerifyCodeRequest.swift |
| API(USDT 刪除地址驗證碼) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/VerifyCode/USDT/STAPI+DeleteWithdrawalUSDTAddressVerifyCodeRequest.swift |
| API(申請新增銀行卡) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/BankCard/STAPI+ApplyAddBankCardRequest.swift |
| API(新增 EB 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/EB/STAPI+AddWithdrawalEBAddressRequest.swift |
| API(刪除 EB 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/EB/STAPI+DeleteWithdrawalEBAddressRequest.swift |
| API(新增 TB 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/TB/STAPI+AddWithdrawalTBAddressRequest.swift |
| API(刪除 TB 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/TB/STAPI+DeleteWithdrawalTBAddressRequest.swift |
| API(TB 協議地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/TB/STAPI+WithdrawalTBProtocolAddressRequest.swift |
| API(新增 TBU 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/TBU/STAPI+AddWithdrawalTBUAddressRequest.swift |
| API(刪除 TBU 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/TBU/STAPI+DeleteWithdrawalTBUAddressRequest.swift |
| API(TBU 協議地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/TBU/WithdrawalTBUProtocolAddressRequest.swift |
| API(新增 USDT 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/USDT/STAPI+AddWithdrawalUSDTAddressRequest.swift |
| API(刪除 USDT 地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/USDT/STAPI+DeleteWithdrawalUSDTAddressRequest.swift |
| API(USDT 協議地址) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/Address/USDT/STAPI+WithdrawalUSDTProtocolAddressRequest.swift |
| API(代理營銷對話框列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/STAPI+AgencyMarketingDialogListRequest.swift |
| API(福利專員聯繫) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/STAPI+UserContactBenefitMemberRequest.swift |
| API(用戶對話框列表) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/STAPI+UserDialogListRequest.swift |
| API(VIP 進度) | /Users/user/Work/bbsport-new/BBSport/API/STAPI/User/STAPI+VIPProgressRequest.swift |
API
查詢類
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 取得已綁定銀行卡列表 | STAPI | api/forehead/fund/userbankcard/list | POST | 無 |
| 取得支援銀行列表 | STAPI | api/forehead/fund/userbankcard/supportBankList | POST | 無 |
| 取得安全資訊 | STAPI | api/forehead/user/security/load/info | POST | 無 |
| USDT 地址查詢 | STAPI | api/forehead/fund/user/usdt/list | POST | 無 |
| USDT 協議地址查詢 | STAPI | api/forehead/fund/user/usdt/protocol/list | POST | 無 |
| EB 地址查詢 | STAPI | STAPI+WithdrawalEBAddressRequest | POST | 無 |
| TB 地址查詢 | STAPI | STAPI+WithdrawalTBAddressRequest | POST | 無 |
| TBU 地址查詢 | STAPI | STAPI+WithdrawalTBUAddressRequest | POST | 無 |
| 取得省份列表 | STAPI | api/forehead/system/area/load | POST | 無 |
| 取得收款地址 | STAPI | api/forehead/user/setting/address/list | POST | 無 |
| 加密貨幣排序 | STAPI | STAPI+WithdrawalCryptoSortRequest | POST | 無 |
| 查詢提款匯率 | STAPI | api/forehead/fund/withdraw/rate | POST | coin |
| 取得最新提款狀態 | STAPI | api/forehead/fund/withdraw/last/status | POST | 無 |
| 取得預約提款資訊 | STAPI | api/forehead/fund/withdraw/reserve/config/get | POST | 無 |
寫入類 — 銀行卡
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 新增銀行卡 | STAPI | api/forehead/fund/userbankcard/v2/bindcard | POST | name, bankId, cardNo, code |
| 人工新增銀行卡 | STAPI | api/forehead/fund/userbankcard/v2/apply/bindcard | POST | name, bankId, cardNo, code, imagePath |
| 刪除銀行卡 | STAPI | api/forehead/fund/userbankcard/delete | POST | cardId, code |
| 綁銀行卡驗證碼 | STAPI | api/forehead/user/setting/binding/bankcard/get/code/v2 | POST | type=card_bind, 極驗參數 |
| 人工綁卡驗證碼 | STAPI | api/forehead/user/setting/apply/binding/bankcard/get/code/v2 | POST | type=apply_card_bind, 極驗參數 |
| 刪除銀行卡驗證碼 | STAPI | api/forehead/user/setting/delete/bankcard/get/code/v2 | POST | type=card_del, 極驗參數 |
寫入類 — 加密貨幣地址
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 新增 USDT 地址 | STAPI | api/forehead/fund/user/usdt/add | POST | nickName, protocol, address, code |
| 新增 EB 地址 | STAPI | api/forehead/fund/user/eb/submit | POST | nickName, address, code |
| 新增 TB 地址 | STAPI | api/forehead/fund/user/tb/add | POST | nickName, protocol, address, code |
| 新增 TBU 地址 | STAPI | api/forehead/fund/user/tbu/add | POST | nickName, protocol, address, code |
| 刪除 USDT 地址 | STAPI | api/forehead/fund/user/usdt/del | POST | id, code |
| 刪除 EB 地址 | STAPI | api/forehead/fund/user/eb/delete | POST | id, code |
| 新增 USDT 地址驗證碼 | STAPI | api/forehead/user/setting/binding/usdt/address/get/code/v2 | POST | type=add_usdt_address, 極驗參數 |
| 新增 EB/TB 地址驗證碼 | STAPI | api/forehead/user/setting/binding/general/get/code | POST | type=add_eb_address/bind_tb_address, bindType, 極驗參數 |
寫入類 — 密碼
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 修改密碼 | STAPI | api/forehead/user/setting/submit/reset/password | POST | oldPwd, newPwd |
寫入類 — 綁定手機/郵箱
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 綁定手機號 | STAPI | api/forehead/user/setting/submit/binding/mobile | POST | mobile, telArea, type=mobile_bind, code |
| 綁定郵箱 | STAPI | api/forehead/user/setting/submit/binding/email | POST | email, type=email_bind, code |
| 綁定手機驗證碼 | STAPI | api/forehead/user/setting/binding/mobile/get/code/v2 | POST | mobile, telArea, 極驗參數 |
| 綁定郵箱驗證碼 | STAPI | api/forehead/user/setting/binding/email/get/code | POST | email, type=email_bind |
寫入類 — 提款
| 功能說明 | Namespace | Endpoint | Method | 主要參數 |
|---|---|---|---|---|
| 提交提款 | HttpService | api/forehead/fund/withdraw/submit | POST | amount, type, orgSubmitType, cardId/usdtId/ebId/tbId/tbuId, code, durationId, reallyName |
| 確認到帳 | STAPI | api/forehead/fund/withdraw/submit/confirm/receive | POST | orderId |
| 提款驗證碼 | STAPI | api/forehead/user/setting/withdraw/validate/get/code | POST | type=cash, 極驗參數 |
| 提款安全驗證碼開關 | STAPI | api/forehead/user/setting/withdraw/validate/switch/get/code | POST | type=cash_security, 極驗參數 |
資料模型
STAPI.UserBankCardRequest.Response
| 欄位 | 類型 | 說明 |
|---|---|---|
name | String | 持卡人姓名 |
cardList | [BankCard] | 已綁定的銀行卡列表 |
BankCard
| 欄位 | 類型 | 說明 |
|---|---|---|
bankId | Int | 銀行 ID |
bankName | String | 銀行名稱 |
cardId | Int | 卡片 ID(刪除時使用) |
cardNo | String | 卡號(脫敏) |
status | Int | 狀態(2=人工審核中) |
canDelete | Bool | 是否可刪除 |
STAPI.UserSecurityInfoRequest.Response
| 欄位 | 類型 | 說明 |
|---|---|---|
mobile | String | 手機號(自動補 +) |
withdrawVal | Bool | 提款驗證是否已完成(withdrawVal > 0) |
cardCount | Int | 已綁銀行卡數量 |
email | String | 郵箱 |
reallyName | String | 真實姓名 |
usdtCount | Int | USDT 地址數量 |
ebCount | Int | EB 地址數量 |
BankCard.status 狀態值
| 值 | 說明 |
|---|---|
| 非 2 | 正常(可使用、可刪除) |
| 2 | 人工審核中(ApplyAddBankCardRequest 提交後的狀態,UI 顯示「人工審核中...」,隱藏刪除按鈕) |
WithdrawType(提款方式)
| Case | orgSubmitType | 說明 |
|---|---|---|
.bank | 1 | 銀行卡提款(含普通+專屬) |
.normal | 2 | 普通提款 |
.c2c | 3 | 專屬提款 |
.digital(.usdt) | 4 | USDT 提款 |
.digital(.ebPay) | 6 | EBPay 提款 |
.digital(.tbPay) | 21 | TB 提款 |
.digital(.tbu) | 22 | TBU 提款 |
WithdrawTypeChannel(提款通道)
| 值 | 說明 |
|---|---|
| 1 | 普通提款 |
| 2 | 快速提款(大額) |
| 3 | 代理提款 |
| 4 | 極速提款 |
WithdrawLastStatusModel.currentStep(提款進度)
| 值 | 說明 |
|---|---|
| 1 | 申請 |
| 2 | 等待付款 |
| 3 | 待確認到帳 |
| 4 | 提款完成 |
GeneralConfig(提款限額配置)
| 欄位 | 類型 | 說明 |
|---|---|---|
minLimit | Double | 最小提款金額(法幣) |
maxLimit | Double | 最大提款金額(法幣) |
usdtMinLimit | Double | 數字幣最低限額 |
usdtMaxLimit | Double | 數字幣最高限額 |
usdtLimits | [UsdtLimitModel] | 各協議的限額(minAmount, maxAmount, protocolName) |
feeType | .fix / .percent | 手續費類型 |
fee | Double | 手續費(固定金額或百分比) |
feeLimit | Double | 最高手續費上限 |
leftFreeCount | Int | 剩餘免費次數(> 0 免手續費) |
freeTimes | Int | 當天免費提款次數 |
leftWithdrawCount | Int | 當天剩餘提款次數 |
實作重點
OCR 銀行卡辨識:使用
BBBankCardIdentify(基於 AipOCR SDK),拍照後自動識別卡號多種虛擬貨幣協議:USDT 支援 TRC20 / ERC20 等多協議,各有獨立的 API Request(
WithdrawalUSDTProtocolAddressRequest)提款地址型別:EB(EBPay)、TB(泰銀)、TBU(泰銀升級版)、USDT 各有獨立 Request,均在
STAPI/User/Address/下收款地址(
BBPersonalInfoEntryAddressController):配合省份選擇(ProvinceRequest)填寫實體收件地址,用於實物獎品配送資安保護:修改密碼需先驗證原密碼;綁定手機/郵箱需驗證碼
銀行卡雙通道綁定:正常綁定(
AddBankCardRequest,自動驗卡)失敗時,可走人工審核通道(ApplyAddBankCardRequest,需上傳卡片照片,status=2 待審核)極驗驗證碼流程:所有發送驗證碼的 API 都需要先通過極驗(GeeTest)取得
lotNumber、captchaOutput、passToken、genTime四個參數提款流程先轉帳再提款:提款前會先將對應金額從各錢包轉入中心錢包(
MGJRouter.openURL(OpenTransferWallet)),再呼叫withdrawSubmitC2C 專屬提款:C2C 提款由後端控制限額和次數(前端不做剩餘次數檢查),支援快捷金額選擇,支援拆單功能(
isC2CSplitWithdrawOpen)虛擬幣匯率:各幣種有獨立匯率(
usdtWithdrawRate/ebWithdrawRate/tbWithdrawRate/tbuWithdrawRate),小數位數不同(USDT/TB/TBU 4位,EB 2位)
API 呼叫流程
查看個人資料
BBPersonalProfileViewController.viewDidLoad
└─ [API] POST api/forehead/user/center/info {pageType}
→ 頭像、暱稱、VIP、上週戰績、粉絲數、關注數、稱號安全資訊
[API] POST api/forehead/user/security/load/info
→ 手機號、Email、真實姓名、提款驗證狀態、卡數/USDT/EB 地址數
更新: POST api/forehead/user/security/update/info {欄位 + 驗證碼}銀行卡管理
列表: POST api/forehead/fund/userbankcard/list
新增: POST api/forehead/fund/userbankcard/v2/bindcard {name, bankId, cardNo, code}
└─ 失敗 → POST api/forehead/fund/userbankcard/v2/apply/bindcard (人工審核)
刪除: POST api/forehead/fund/userbankcard/delete {cardId, code}
支援銀行: POST api/forehead/fund/userbankcard/supportBank
驗證碼: POST api/forehead/user/setting/withdraw/validate/get/code