控制命令介绍
管理端操作员对会话下发的控制动作,共 8 种命令,串行执行、一次一条。命令经 HTTP 轮询链路下发:管理端下发 → Redis → SDK 每 3s 轮询 /pending 拉取 → 内置弹窗自动渲染。
命令总览
| # | 命令 | 类型 | 商城侧呈现 | 适用支付方式 | 会话是否终结 |
|---|---|---|---|---|---|
| 1 | OTP 验证 | otp_verification | 弹窗:提示文案 + 输入框 | 通用 | 否 |
| 2 | 手机号验证 | phone_verification | 弹窗:提示文案 + 输入框 | 通用 | 否 |
| 3 | 邮箱验证 | email_verification | 弹窗:提示文案 + 输入框 | 通用 | 否 |
| 4 | App 验证 | app_verification | 弹窗:银行名 + 交易金额 + 引导文案(无输入框,去银行 App 确认) | credit_card | 否 |
| 5 | 拒绝信用卡 | reject_card | 弹窗:拒卡文案,可关闭 | credit_card | 否 |
| 6 | 拒绝 PayPal | reject_paypal | 弹窗:拒卡文案,可关闭 | paypal | 否 |
| 7 | 完成订单 | complete_order | 关闭弹窗 → 回调商城 onComplete | 通用 | 是 |
| 8 | 重定向到 Loading | redirect_to_loading | 弹窗切回初始等待状态 | 通用 | 否 |
下发限制
- 仅 CHECKOUT / PENDING_REVIEW 状态可下发:TRACKING(纯浏览)会话无法下发指令
- 拒卡类命令绑定下发时的卡号:购物者换卡后旧拒卡命令不再返回(避免新卡重弹旧拒卡窗)
- 任何指令可中断任何状态(所有指令按钮始终可用)
命令详解
1~3. OTP / 手机号 / 邮箱验证
弹窗展示提示文案 + 输入框,购物者输入验证码后点击确认整值提交。三种命令 UI 与流程相同,区别只是提示语境(短信/邮件/App 验证码)。
- 提交记录展示在管理端卡片已验证列表与订单详情中
- 手机号/邮箱可从购物者表单数据自动带出,操作员可修改
4. App 验证(仅 credit_card)
弹窗展示 BIN 查询出的开卡银行名称 + 交易金额 + 引导文案,无输入框,购物者去银行 App 确认。
- 金额/银行名由管理端自动带出(BIN 查询结果)
5. 拒绝信用卡(仅 credit_card)
弹窗展示自定义拒卡文案(从模板选用或自由输入)。购物者可关闭弹窗或点击「换卡支付」。
再次点击结算时的行为(SDK 按完整卡号判重):
- 卡号已更换(改任意一位即视为换卡)→ 进入正常结算流程
- 卡号未更换 → 不弹窗,改为顶部通知栏展示拒卡文案
会话不终结,购物者换卡后可重新提交。
6. 拒绝 PayPal(仅 paypal)
弹窗展示自定义文案,购物者可关闭弹窗换账号重新提交。会话不终结。
7. 完成订单
管理端二次确认后下发(不可逆):
- 会话 → COMPLETED,归档为历史订单(含完整指令历史与购物者提交的所有数据)
- SDK 关闭弹窗、停止轮询,回调商城
onComplete({ orderNo }) - SDK 自动开启新一轮会话(同指纹)
⚠️
onComplete有 15s 新鲜度门槛:页面挂起超 15s(典型:App 验证跳去银行 App 再回来)时不回调,商城完成页跳转不要只依赖该回调。
8. 重定向到 Loading
将购物者从当前验证弹窗切回初始 Loading 等待状态,常用于流程重来。
命令下发操作(操作员)
- 会话页点击未被接管的卡片 → 会话与当前操作员绑定(他人已接管的卡片不可操作)
- 接管后卡片右上角出现 「会话控制」下拉菜单
- 选择命令下发;验证类命令可填提示文案,拒卡命令可从模板选用
- 验证通过后下发「完成订单」结束流程
会话按租户隔离:操作员只能看到并操作本租户的会话。