一、背景
市面上的收费方式基本上被微信和支付宝所垄断,无论是扫码付,还是直接拉起原生支付。银行在面对如此大的支付体量时,不得不坐起了“二级承包商”,也即由银行去对接微信和支付宝,业务公司则对接银行。
二、目标
- 对接多家支付渠道,保证支付的稳定性
- 基于商家费率的高低,择优选择合适的渠道及商户
- 同一个渠道需要对接多个商户,支持灵活切换到备用商户
三、功能模块
image.png- 存储设计,依赖redis和mysql
- 引入xxl-job分布式定时任务,对支付和退款过程进行补偿,每天定时和第三方支付进行对账,支持回调通知的重试
- 保证退款的安全,引入验证码机制,张三发起退款,就将验证码发送给张三(这里的消息,可以是企业微信,也可以是短信验证码,还可以是邮箱)
- 商户信息及证书路径,都配置在mysql数据库里,当应用启动的时候,采用饿汉式,先加载到jvm内存中
- 支付路由、渠道类型、商户、业务类型和渠道等信息,第一次查询后,也保存到内存中,我们这里采用的是caffeine
- 回调通知模块,我们需要支持指数级重试和持久化,重试次数。更重要的是发出告警信息,便于和业务方及时沟通处理
四、数据模型
image.png五、后期的文章计划
- 对账模块
- 退款模块
- 通知模块
- 支付路由
网友评论