一卡通 token、签名、身份、部门、人员、卡、余额同步,含 CLI 与定时任务。
滨州企业编码和小程序企业上下文已在 ai_api、ai_app 有基础支持。
消费订单扣款、退款冲正、交易表、补偿任务、ai_api 到 store 内部支付调用。
1. 当前分支盘点结论
| 仓库 | 当前分支 / HEAD | 一卡通完成情况 |
|---|---|---|
store |
develop_binzhou / a86869b52 |
已合入一卡通同步能力:认证、签名、身份、部门、人员、主卡、余额同步,以及 OneCardSync all 定时同步。 |
ai_api |
develop_binzhou / 075de754 |
已配置滨州企业编码和小程序 appid 到企业编号映射;未发现一卡通扣款/退款接口调用。 |
ai_app |
develop_binzhou / f6de05e7 |
已有 enterprise-no 透传、路由企业编号保存等基础上下文;未发现一卡通支付前端专属链路。 |
ai_store、ai_web、qc、sxtyj、win_deploy_guoxin |
各自当前分支 | 未发现有效一卡通接口对接代码;仅有通用 token、城市名、问卷选项等无关匹配。 |
2. 已完成的接口范围
| 模块 | 一卡通接口 | 当前落地 |
|---|---|---|
| 认证 | GET /api/token | 已实现 token 获取、缓存、提前刷新和签名请求。 |
| 身份类别 | POST /api/common/queryaccclass | 同步到本地身份类别和一卡通身份映射。 |
| 部门 | POST /api/common/systemdocking/getaccdepfixidPOST /api/common/systemdocking/getaccdepinfobyfixid | 按版本号同步部门,并维护本地部门映射。 |
| 人员/账户/主卡 | POST /api/common/systemdocking/getaccfixidPOST /api/common/systemdocking/getaccinfobyfixid | 同步人员、用户、部门关系、账户映射和当前主卡。 |
| 账户详情兜底 | POST /api/common/infoqueryservice/getaccount | 当前主卡字段缺失时按账户号补查。 |
| 余额 | POST /api/common/infoqueryservice/getewallet | 按本地有效卡批量同步钱包余额,更新本地用户余额快照。 |
3. 尚未完成的核心对接
- 未看到
payservice/preorder、payservice/orderhandle、payservice/orderquery、payservice/correct的业务实现。 - 未看到
thirdappservice/qrcodetransaction、thirdappservice/correctorder、thirdappservice/orderquery的业务实现。 - 未看到一卡通交易表,例如
ydy_one_card_trade_order,也未看到订单幂等、查单、补偿状态表。 - 未看到退款/冲正先走一卡通、成功后再走本地退款成功逻辑的接入点。
- 卡状态和账户状态已经同步到本地,但消费下单链路尚未确认已新增一卡通状态专属拦截。
4. 后续接入方案
推荐原则:一卡通作为标准余额支付链路的远端前置扣款能力接入。本地订单
pay_method 继续保持 balance,不新增 one_card 支付方式;是否是一卡通订单,通过交易表关联识别。
4.1 store 负责真实一卡通能力
- 继续集中管理
one_card配置、token、签名和接口调用。 - 新增一卡通交易表,记录扣款、冲正、查单、补偿状态。
- 实现
preorder -> orderhandle -> orderquery -> correct主链路。 - 实现
OneCardTradeRepair补偿命令,处理远端成功但本地失败、未知状态和查单恢复。
4.2 ai_api 只调用 store 内部能力
ai_api不保存一卡通 appid/appsecret,不直接访问一卡通。- 小程序/H5 订餐、直接消费、普通商城支付时,通过内部接口调用
store的一卡通扣款能力。 - 若一卡通远端成功、本地订单失败,由
ai_api自己负责本地业务补偿重放。
4.3 订单来源覆盖建议
| 来源 | 场景 | 建议 |
|---|---|---|
source=1 | 绑盘机结算 | 最终金额确定后先扣一卡通,再走本地支付成功。 |
source=2 | 消费机即时消费 | 扣款成功后才创建/确认成功订单。 |
source=4 | 小程序/H5 订餐和直接消费 | 由 ai_api 调 store 内部一卡通支付能力。 |
source=5 | 外部消费接口 | 复用外部订单号做幂等。 |
source=6 | 闸机消费 | 扣款成功后才放行。 |
source=7 | 点餐机消费 | confirm 不扣款,pay 统一进入一卡通。 |
source=10 | 萤火普通商城 | 待支付订单保留,支付时进入一卡通。 |
5. 推荐实施顺序
- 新增支付配置:
payment_enable、payment_mode、payment_business_num、payment_device_num、payment_retry_times。 - 新增
ydy_one_card_trade_order,先把幂等、查单、补偿状态设计稳定。 - 在
store实现查余额、预下单、扣款、查单、冲正服务和测试。 - 接入
store侧消费来源:绑盘机、消费机、外部消费、闸机、点餐机。 - 开放
store内部支付接口给ai_api,再接小程序/H5 与普通商城。 - 联调前保持
payment_enable=false,验证通过后按商户灰度开启。
6. 验收口径
- 一卡通为余额主数据源,本地余额只作为同步快照。
- 消费以本地订单号、设备流水号或外部订单号做幂等,不允许重复扣款。
- 退款/冲正以退款单号或冲正流水做幂等,不允许重复退款。
- 一卡通失败时,本地订单不得进入支付成功。
- 一卡通成功但本地失败时,必须可查、可补偿、可人工处理。
- 离职、挂失、冻结等状态必须阻断真实消费。
边界说明:本页面是当前分支代码盘点和后续实施方案,不包含明文接口密钥、token、数据库密码或生产请求原文。云效需求当前仍需按团队流程流转状态。