从充值到开卡的业务流
用户先向总站钱包充值。开卡时,系统在同一业务事务中记录服务费、首充金额和卡片申请单,再调用卡服务商。后续卡片充值同样由总站钱包扣款后调用上游。每一步都必须保留业务单号和上游单号,支持查询、重试和人工复核。
钱包余额与不可变账本
余额是账本交易的汇总结果,不应只修改一个数值而缺少流水。每笔流水包含类型、金额、方向、前后余额、币种、关联订单、状态和时间。扣款采用数据库事务和行锁,防止并发请求导致负余额或重复扣款。
实时汇率与结算价
美元兑人民币汇率会波动,不能长期写死。汇率服务应定时从可靠数据源刷新,保存市场价、结算加点、最终结算价、来源、抓取时间和有效期。主数据源不可用时可使用备用源;全部失败时使用最后成功值并明确标记为过期。
结算价 = 市场汇率 × (1 + 加点基点 / 10000)
资金订单必须保存创建时的汇率快照。订单创建后汇率变化,不应改变已确认订单的应付金额。
Webhook、幂等与每日对账
充值到账、开卡完成和卡交易状态通常由回调更新。接收方验证签名、时间戳和事件 ID,并以事件 ID 或上游交易号做唯一约束。即使有 Webhook,也要定时拉取上游账单进行日终对账,发现漏单、重复入账和金额差异。
安全与合规控制
卡号、CVV、私钥和 AES Key 属于高敏感信息,不进入普通日志。管理后台使用强鉴权和分权;开卡、充值、退款和费率修改写入审计日志。系统还应限制异常频率、识别重复设备和异常交易模式,并明确服务的合法使用范围。
常见问题
- 为什么不能直接用第三方余额作为本站钱包?
- 总站账本用于统一多个服务、用户余额和审计。上游余额只代表平台在服务商处的资金,不等于每个用户的可用余额。
- 汇率多久更新一次?
- 取决于数据源和业务风险。高频结算可按分钟更新,同时必须保留缓存和最后成功值。