功能需求:
1.角色:用户,商家,第三方支付机构
2.用例:支付,扣款,付款,通知,对账
3.生命周期:账单流转状态,包括异常情况
非功能性:
1.资金安全
2.一致性/高可用
3.可拓展性
详细设计
整体架构图
前端 -----支付系统---第三方服务
db
实体:用户表,商家表,订单表,支付表,审计表
生命周期:create-start-process -succcess
fail
前端页面展示 SDK, 可信赖脚本,iframe token用户侧去加解密卡号,后端用token
第三方对账表发 过来进行对账
还可以引入风控系统,进行交易反欺诈识别
异常流程:超时处理(1.超时时间 2.间隔时间(随机+倍增),死信队列),callBack接口,主动查询
幂等处理:幂等键,全球最终一致性幂等方案。
状态机跳变:fail后,callback成功 1.fail前查,如果还在process不变更状态 2.引入监控打点,人工处理。
流数据库(回放对账),时序金融数据选型。
对接多渠道方,策略模式是必备的。不过PSP服务更加重要的是业务模式梳理,抽离自己的领域模型,形成自己的领域服务。将支付结果是同步还是异步,是否支持支付中撤销,是否支持退款,退款失败处理策略等可能因渠道不同有差异的能力做成配置,后续接入新的渠道只需要配置一下就行了。