支付网关思考
- 目的
支付网关是为了屏蔽各种 支付工具之间的差异,对订单系统行程一个统一的,标准的接口。如下图所示
- 思路
- 订单系统的生成订单号,订单状态为待支付
- 用户发起支付请求,支付网关负责交易支付请求, 生成 支付流水号。
- 支付网关在完成支付请求后 ,负责更新订单状态。
- 支付失败,订单状态不更新
- 支付网关在像第三方支付时出现错误时重试三次
- 事物补偿机制
- 支付状态 定时更新机制(每10分钟一次)
- 对账
- 每晚 从第三方支付公司取出的对账文件,从订单统获取使用该公司的支付文件.
- 分别比对总金额, 发现平与不平,多交款,少缴款。
- 相关异常订单存入异常订单表中,第二天人工处理
- 接口设计
1. 订单状态同步
bool UpdateOrderPaySatus(string orderId, int paySatas)
2. 预支付请求签名设计(订单号,金额,Key ,Signature)
- 把请求中的参数 除了Signature 外 按照参数名称进行正向排序
- 把所有参数名和参数值串在一起(不能有空格)
- 把后台设置的key值串接到“第二步”得到的字符串尾部(不能有空格)
- 采用MD5算法对“第三步”得到的字符串进行加密,生成Signature的值