最佳实践
签名、幂等、重试、对账与安全建议
最佳实践
1. 环境与密钥
- 联调只用沙箱 Base URL;生产密钥与沙箱密钥分开
- 私钥仅存服务端密钥管理系统;禁止进前端与仓库
- 生产强制 IP 白名单 + HTTPS
2. 写接口与幂等
- 所有
POST写接口带稳定业务单号作X-Idempotency-Key - 网络超时重试时复用同一幂等键,避免重复扣款
- 换业务内容必须换新键(否则可能 40901)
3. 错误重试
| 场景 | 建议 |
|---|---|
429 限流 | 指数退避 + 抖动 |
5xxxx 暂时异常 | 写接口同幂等键重试;读接口可直接重试 |
401/403 | 不盲目重试;先修签名/权限/IP |
42201 余额不足 | 充值后再发,勿死循环重试 |
4. Webhook
- 先落库/入队再返回 2xx
- 以
eventId幂等去重 - 对原始 body 验签;未知
eventType也返回 2xx - 生产回调仅 HTTPS;勿用内网地址
5. 对账
- 钱包:
GET /wallet/flows(关注type=swap自动兑换) - 卡交易:
GET /transactions按时间与cardId拉取 - 以平台流水为准做差异排查
6. 敏感信息
- 列表/详情默认只有
cardNoLast4 - 完整卡号仅
GET /cards/{id}/secure,限流更严;用完即弃,勿写日志
7. 并发
- 同一卡的充值/转出避免无序并发;必要时串行或依赖幂等键
- 共享池附属卡批量开卡注意开卡费合计与钱包余额
8. 卡产品与 KYC(按产品分支,勿全局强制)
- 先目录后开卡:
GET /card-products→ 读requireThirdPartyKyc/minTopup/feeNotes requireThirdPartyKyc === true:控制台一键认证 或POST /cards传kycProvider+kycReferenceId(DIDIT / SUMSUB / MyInfo / Jumio / Shufti)requireThirdPartyKyc === false:不要当成必须 KYC;正常传bin+ 金额即可- 只接 Didit 的对接方:固定
kycProvider=DIDIT即可;其他服务商用对应枚举 + 其 Reference ID - 持卡人
holderId与当前bin同产品线,不可混用 - 完整说明:卡产品与身份认证
Updated about 2 months ago
Did this page help you?
