支付系统简单设计

功能需求:

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服务更加重要的是业务模式梳理,抽离自己的领域模型,形成自己的领域服务。将支付结果是同步还是异步,是否支持支付中撤销,是否支持退款,退款失败处理策略等可能因渠道不同有差异的能力做成配置,后续接入新的渠道只需要配置一下就行了。

你可能感兴趣的:(支付系统简单设计)