| Domain |
Method |
Path |
Purpose |
Used By |
Freq |
🔗 API 组合流程
多个 API 组合才能完成的操作流程
GETBookSeatDetail.asp
FetchSeatDetail
↓
POSTBookInfo.asp Flag=Blocking
LockSeatRaw
↓ 失败
GETBookSeatDetail.asp
刷新 session 视图
↓
POSTBookInfo.asp Flag=Blocking
再试
↻ 循环直到成功
⚠️ 每次 LockSeatRaw 失败后必须穿插一次 FetchSeatDetail。不穿插 → 连续 3 次 "taken" 触发 slider captcha;穿插 → 200+ 次才触发。
Phase 6 Checkout(前置)
POSTBookPrice.asp
→
POSTBookDelivery.asp
→
GETBookEncrypt.asp
↓
POSTBookPayment.asp
→
POSTBookConfirm.asp
→ 拿到 CartID/CartIDSeq
CancelPayment 三步
GETBookEximbayResult.asp?Cartid=X&CartIDSeq=Y
通知支付失败
↓
↓
POSTWaitingServiceSession.asp
重置 booking session
⚠️ Flag=UnBlocking 和 Flag=Release 都不能释放座位。
POSTBookConfirm.asp
→
POSTapi.eximbay.com/v1/payments
→
POSTBasicProcessor.krp
→
POSTNewGlobalStep1.jsp → checkApprv → checkPaymethod
→
POSTbcUpopRequest.jsp
→
POSTcert.bccard.com AcpMerTransaction.do
→
POSTgateway.95516.com frontTransReq.do
→
POSTcashierbj.95516.com 收银台 (7步)
→
POSTAcpNotiTxnSPPurchaseFActn.do
→
POSTNewGlobalStep3.jsp
→
GETBookEximbayResult.asp
→
GETBookEnd.asp → 票号
银联收银台 7 步明细
index.action
→
cardValidate
→
foreignCard
→
foreignCardPay (SM2加密)
→
payProcess (轮询x15)
→
payResult
→
callBack
耗时 ~8 秒
SM2 国密加密
C1C2C3 格式
emmansun/gmsm 库
Holder (tool) 端
POSTPhase 6 Checkout 全流程
~1s
↓
GETCancelPayment 三步(见 #2)
~500ms
↓ 座位回到公共池(暴露窗口 ~350ms)
Catcher (buyer) 端
POSTLoadBookSeat()
刷新 booking 状态
↓
GETFetchSeatDetail(block, grade)
让 session "看到" 目标 block
↓
POSTLockSeatRaw(seat)
锁同一个座位(第1次就成功)
⚠️ catcher 必须先 LoadBookSeat 刷新 session,否则 LockSeatRaw 永远返回 "taken"。
NOL Login
POST/auth-web/api/users/auth/login/web
Firebase 登录
Cancel
POST/api/biz/enter/cancel/all
body: {bookingDate, bookingSeq, ticketNo}
↓
返回 refundAmt(退款金额,含手续费扣除)
⚠️ cancel 只有票主能调(ownership 校验),非票主调返回 C00004。
Phase 1 - 登录
POSTFirebase signInWithPassword
↓
POST/auth-web/.../login/web
↓
GET/api/users/enter
验证 eKYC
Phase 2 - 入口
GET/api/users/enter/token
Partner token
↓
GET/v1/goods/{code}/summary
演出信息
↓
GET/api/ticket/v2/.../member-info
会员信息
Phase 3 - 排队
POST/waiting/api/secure-url
排队入口
↓
POST/waiting/api/line-up
加入队列
↓
GET/waiting/api/rank
轮询 ~21.5s
↓
GETWaitingServiceSession.asp
建立 session
Phase 4 - 建立购票 session
↓
↓
↓
GETBookSeatDetail.asp
座位布局
↓
GET/api/biz/enter/reservations?searchStartDate=X&searchEndDate=Y
↓ 过滤 sttlStatus < 37010(排除已取消)
GET/api/biz/enter/reservations/details?languageType=EN&bookingDate=X&...
↓ 过滤 cancelOrNot != "Y"
提取 seat/floor/rowNo/amount/payMethod
↓
xfer_data = Base64(GoodsCode|PlayDate|TicketNo|...)
POST/api/users/enter/ekyc/init
启动 Persona session
↓
GET/api/users/enter/ekyc/token
拿 token
↓
POST/api/users/enter/ekyc/qr
桌面端生成二维码
↓
withpersona.com/verify?code=otlCode
Persona 验证(上传新护照)
↓
approved → needs_reverify → approved(新名字)
⚠️ 状态:待验证。POST init 之前返回 500,原因待查。如果能改 eKYC 名字,整个 pingpong 架构可废弃。
刷新中...
状态-
探针-
Blocks0
座位0
Restocks0
扫描中0
排队中0
已锁座0
已使用0
池剩余0
🔔 实时事件流 (restock_events)
1/?
Restock Timeline
| Poster |
Show |
Time |
Block |
Grade |
Previous |
Now |
Delta |
Replay Flow
restock_events · cross-instance timeline
IDLE
1/?
| Time |
Type |
Goods |
Account |
Payload |
| Select filters and click Refresh |
每页 100 条事件,按时间倒序(最新在顶部)。