支付系统-出金-【资金安全铁律】

简介: 出金第一铁律---------明确失败才失败 。 出金最怕失败,极易出现重复出款

【资金安全铁律】

🍀出金第一铁律---------明确失败才失败 。 出金最怕失败,极易出现重复出款

反例:if(xx != SUCCESS) setPayStatus(FAIL);

正例:if(xx==FAIL) setPayStatus(FAIL);

🍀改支付状态必须基于明确的付款状态字段,而不是其他code甚至msg

擦亮眼睛,注意payStatus 与 code 的区别,别再傻傻分不清了。

反例:if(pingAnResponse.code == '404' && pingAnResponse.msg == '订单不存在') setPayStatus(FAIL);

正例:if(pingAnResponse.status == 'FAIL') setPayStatus(FAIL);

🍀下发同步请求,不能返回支付状态

下发同步请求接口,我们不能返回payStatus(正确姿势是响应体里不包含payStatus字段 / 实体对象里不能定义payStatus字段)

🍀终态时,状态不可再发生变更。日常维护中,如有,必须人为介入

反例1:将失败的订单置为成功

反例2:将成功的订单置为失败(杀头)

🍀支付状态在修改时,使用状态机控制

反例:update order set status='FAIL' where orderId='001'

正例:update order set status='FAIL' where orderId='001' and status='PAYING'

🍀异常非失败。

反例:try{ .. } catch (Exception e) { setPayStatus('FAIL'); }

正例:try{ .. } catch (Exception e) { log.error(e); }

🍀业务幂等

反例:下游通道重复回调,我们重复修改状态,重复记账。

正例:使用状态锁保证幂等,先判断订单是否为终态。

目录
相关文章
|
2月前
|
小程序
移动医保支付
移动医保支付
53 0
支付系统43-----支付宝支付-统一收单退款,全额退款这里可以发起一笔或者两笔订单
支付系统43-----支付宝支付-统一收单退款,全额退款这里可以发起一笔或者两笔订单
|
7月前
银行,客户,账户
银行,客户,账户
45 0
银行,客户,账户
|
7月前
支付设计白皮书:详解!《境外信用卡支付》收单完整过程
支付设计白皮书:详解!《境外信用卡支付》收单完整过程
186 0
|
移动开发 安全 API
支付收银台初探(1)
支付收银台初探
442 0
|
测试技术 定位技术 开发工具
支付交易风险控制小知识:iOS设备限制境外交易
支付交易风险控制小知识:iOS设备限制境外交易
308 0
支付交易风险控制小知识:iOS设备限制境外交易
|
开发者
支付之去银行 | 学习笔记
快速学习支付之去银行。
142 0
支付之去银行 | 学习笔记
|
测试技术
国务院出台《保障中小企业款项支付条例》,最长支付周期60天
为维护中小企业合法权益,优化营商环境,7月14日,国务院公布《保障中小企业款项支付条例》,于2020年9月1日起施行。
国务院出台《保障中小企业款项支付条例》,最长支付周期60天