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

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

【资金安全铁律】

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

反例: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); }

🍀业务幂等

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

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

buguge
+关注
目录
打赏
0
0
0
0
40
分享
相关文章
|
4月前
|
移动医保支付
移动医保支付
156 0
支付系统43-----支付宝支付-统一收单退款,全额退款这里可以发起一笔或者两笔订单
支付系统43-----支付宝支付-统一收单退款,全额退款这里可以发起一笔或者两笔订单
|
9月前
银行,客户,账户
银行,客户,账户
61 0
银行,客户,账户
订单最多的客户
订单最多的客户
49 0
|
9月前
|
从不订购的客户(C++)
从不订购的客户(C++)
36 0
|
9月前
支付设计白皮书:详解!《境外信用卡支付》收单完整过程
支付设计白皮书:详解!《境外信用卡支付》收单完整过程
236 0
电商收付通系列⑦,合单下单之小程序支付
在我接这个接口的时候,官方并没有明确给出合单支付支持小程序支付,凭借一腔热血去尝试了一下可以成功,prepay_id就是调用JS合单支付获取的。现在再看文档,已经明确列出来了“小程序调起支付”的字眼。所以大家可以放心的接入小程序合单支付哈。支付场景较多,系列文章只介绍小程序合单支付,APP合单支付、JS合单支付依瓢画葫芦,都一样哈。要注意,合单中同一个二级商户只允许有一笔子订单。订单如果需要进行分账等,需要在合单中指定需要进行分账(profit_sharing为true)。
340 0
电商收付通系列⑦,合单下单之小程序支付
电商收付通系列⑧,合单下单之支付通知
用户支付完成后,微信会把相关支付结果和用户信息发送给清算机构,清算机构需要接收处理后返回应答成功,然后继续给异步通知到下游从业机构。
231 0
电商收付通系列⑧,合单下单之支付通知

热门文章

最新文章