网易首页 > 网易号 > 正文 申请入驻

支付新手高频易发的故障,如何应对?

0
分享至

在支付行业的技术领域,新手开发者常常会遇到各种技术挑战和故障。本文汇总了支付新手高频易发的故障,并提供了实用的应对策略,供大家参考。

———— / BEGIN / ————

一路走来,我犯过很多错,也引发过很多线上故障。在带团队后,也不断看到团队内的新人频繁出现各种线上故障。这些故障或多或少都对公司的业务和新人的心理造成了一定的负面影响。

这里汇总一些新手高频易发的故障,以及应对策略,少点故障,安心过年。主要包括:渠道返回码,乱序,三高(高并发、高性能、高可用),幂等,多币种等。

对外部渠道的返回码理解一知半解

无论是四方还是三方,大部分情况下都是调用外部渠道或银行做真实的扣款,而渠道对接是新手触发故障的高风险区。

首先就是渠道返回码的映射。最常见的就是把渠道返回“系统异常”、“订单不存在”、或调用超时,推进到失败。

我现在还记得我接入的第一个外部渠道,吭哧吭哧前后忙活了1个多月,终于上线,开量,稳定运行,非常开心。

有天财务小妹找到我,说我接的那个渠道有笔支付订单对账出了长款,我们的订单是失败的,但是渠道给的对账文件是成功的。我不敢大意,赶紧去查日志和数据库的数据,原来是渠道支付接口超时,查询接口返回“订单不存在”,被映射到了“失败”。

当时被老板被狠批一顿:“你怎么犯这种低级错误!怎么能把订单不存在映射成失败呢?”那时年轻,毫不客气地回敬道:“这是银行的问题哪,他都告诉我订单不存在了,我咋还不能推进到失败呢?我不推进到失败我推进到哪里?”

虽然嘴硬,心还是虚的。在网络环境下,数据包走不同的路由分发,银行内部多个系统之间有延时,最后导致查询比支付先到,或者查询时数据还没有落库,银行返回订单不存在,很正常的。

梳理出大致如下几条准则:

  • 只有明确成功,才能推进成功。

  • 只有明确失败,才能推进失败。

  • 结果不明确,默认全部是“未知”。

  • 支付场景谨慎推进到成功,退款、提现、商家打款等场景谨慎推进到失败。

  • 典型的结果不明确场景有:订单不存在,系统异常,内部错误等。


这部分在“渠道返回码映射设计与最佳实践”的那篇文章里写得更清楚明确,有兴趣的可以历史发文里面找一找。

缺少乱序的概念

人的大脑是顺序思维,但互联网世界是乱序的。

比如以前发生一个线上问题,财务小妹说和建行的对账对出了长款:银行支付成功,我方不是成功。一查,原来是渠道异步通知接口先返回了“成功”,单据先被推进到了成功,然后同步接口才返回“系统异常”,单据又被推进到了支付失败。

这里有两个问题:

1)不应该把系统异常映射到失败,这个在上面的返回码映射已经说得非常清楚。

2)成功是终态,不应该再变更。

第2个问题的解法非常简单,只需要设计好状态机就行。比如终态不可变,只有符合要求的初始状态+指定事件,才能推进到指定的状态。有兴趣的,可去找公号历史发文里面的“支付交易订单状态机设计与最佳实践”,写得非常详细。

不仅仅是外部渠道对接,现在互联网应用都是微服务架构,微服务之间除了api接口,还通过消息来传递数据,而大部分消息是不保证顺序性的。

我时不时听见一些新人质问消息发送方:“为什么你的数据没有顺序,你需要保证你的数据要有顺序,不然我处理不了!”。我只能哑然一笑。

群里也有小伙伴说某某消息中间件可以保证有序性。可是我们如果设计一个系统,不依赖中间件来保证顺序性,不是更好么?极端场景下,就算消息中间件能保证顺序性,但在分布式场景下,我们也无法保证一笔业务只在一台服务器上处理。

缺少三高的概念

“高并发、高可用、高性能”虽然很虚,却又很实在。不同数量级的并发,对系统的要求是截然不同的。“压死骆驼的最后一根稻草”在大规模交易场景下,不是一句笑话,而是真实存在的。

以前很长一段时间我分辨不出“高并发”和“高性能”之间区别,以为两者是一回事。事实不是,高并发是指同时能接多少请求,比如同时处理1百个请求,还是1万个请求,就是并发的概念。高性能是指一个请求需要处理多少时间,比如平均每个请求处理时间是500毫秒,性能就远好于平均处理时间1000毫秒。

举几个例子:


  • 高性能:用户一般可以使用多个支付方式,比如余额、红包、满减、外部银行等,分别保存在不同的子应用中,没有经验的新人,就按顺序去各个应用中查数据。有经验的老人就知道,使用多线程同时去各子应用中查数据。这就是提高性能的方式。

  • 高可用:以前分享过一个故障,后台操作出现慢查询,在线业务去缓存查数据,击穿到数据库,数据库宕机,进而导致线上业务宕机。最后分析下来,在线业务对那个缓存数据是弱依赖,没有也能部分有损地处理业务。这就是高可用的部分。有兴趣的可以看看公号里的历史发文中的一些故障分享。

  • 高并发:高并发引发的问题太多了。比如代码new 一个大对象,小流量没事,流量一大,就会出现频繁full gc。比如数据库连接没有按预期释放,小流量也没事,流量一大,连接不够用,就会出现频繁报错。


这三块在网上有很多资料,边看边学边实践,没什么好办法。

4. 缺少幂等概念

在支付系统中,幂等极其重要,一旦出现幂等失败,经常导致资损,不是平台资损,就是用户资损。

常见有三种:


  1. 对外提供的接口升级,导致幂等失效。现在互联网应用对外的接口都会声明幂等字段,最怕就是内部做升级,不小心把幂等组合修改掉,比如原来使用订单号,后面使用订单号+日期,上游订单号没有变,日期变了,本应该是一笔订单,因为幂等失败,就成了两笔订单。

  2. 调用下游接口,把下游依赖的幂等字段内容修改了。比如下游依赖订单号+创建日期做幂等,上游在架构升级中,传入了订单号+当前日期,在跨零点的交易中,就可能出现幂等失败。

  3. 使用redis实现的分布式锁做幂等。redis的可靠性和持久存储是比不上关系数据库的,最起码需要使用关系数据库的唯一索引做幂等。


幂等在网上有很多资料,值得好好看看。更高阶的,还需要考虑异地多活的幂等场景,A机房挂了,去到B机房,会不会幂等失败。

缺少多币种或金额单位换算概念

在跨境交易中,必然是多币种的,不同的币种,最小单位是不一样的。人民币、美元都很标准,有元有分,但是日元最小单位就是元,印尼盾虽然最小单位是分,但是日常只会用到元。

在微服务框架中,如果一些子应用中使用分,一些子应用使用元,会出现什么情况?

新人还容易犯的一个错误就是手动加减乘除,容易出现金额放大缩小100倍,或者出现舍入不正确(舍入有:向下取整,向上取整,四舍五入、银行家算法等)。尤其是渠道对接时,以为内部使用的分,外部渠道接口要求是元,直接乘100,但实际上内部应用使用的是元,妥妥资损100倍。

解决方案在公号以前的发文“支付系统金额处理规范及最佳实践”中有详细说明,有兴趣可以去翻翻。

结束语

上面只是举了一些常见的例子,无法覆盖全部。

基本所有的新人都是踩着线上故障在成长。我们能做的,只是提供一些规范或案例,让新人能踩在前人的故障上成长,而不全是踩着自己的线上故障在成长。很多时候一不小心因为一个大故障而被清理门户,成长虽有,代价却过大,得不偿失。

本文来自微信公众号:隐墨星辰,作者:隐墨星辰。原标题:支付新手高频易发故障及应对

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
把儿子养得内驱力全无,我才知道:废掉一个孩子,就一天到晚说他

把儿子养得内驱力全无,我才知道:废掉一个孩子,就一天到晚说他

富书
2026-07-09 18:59:26
上海炒股冠军罕见发声:目前股市想要逢低建仓,建议死啃65原则!

上海炒股冠军罕见发声:目前股市想要逢低建仓,建议死啃65原则!

股经纵横谈
2026-07-09 20:38:36
摩洛哥0-2出局,阿根廷遭欧洲6队围剿,英格兰主力被FIFA禁赛2场

摩洛哥0-2出局,阿根廷遭欧洲6队围剿,英格兰主力被FIFA禁赛2场

何老师呀
2026-07-10 06:46:16
德不配位必有灾殃!央视表态仅6天,韩红再迎"噩耗",孙浩曝内幕

德不配位必有灾殃!央视表态仅6天,韩红再迎"噩耗",孙浩曝内幕

阿丰聊娱
2026-07-09 13:23:32
成都一女子不洗手抱孙子,儿媳怒斥不卫生,儿子一拳打面中,母亲扬言要儿子坐牢,儿子却说:她活该!6年后现状曝光...

成都一女子不洗手抱孙子,儿媳怒斥不卫生,儿子一拳打面中,母亲扬言要儿子坐牢,儿子却说:她活该!6年后现状曝光...

背包旅行
2026-07-02 14:33:11
刚刚!荣耀看上了中国足球小将,官宣达成战略合作

刚刚!荣耀看上了中国足球小将,官宣达成战略合作

雷科技
2026-07-09 18:44:53
世界杯争议!阿根廷足协接受调查!卫冕冠军幕后彻底炸锅!

世界杯争议!阿根廷足协接受调查!卫冕冠军幕后彻底炸锅!

澜归序
2026-07-09 13:48:22
这跟不穿有啥区别?明星巴黎看秀,真空上阵、透视网纱,个个大胆

这跟不穿有啥区别?明星巴黎看秀,真空上阵、透视网纱,个个大胆

青梅侃史啊
2026-07-10 07:08:58
宁波即将处在“巴威”的“危险半圆”!一男子为防台风花一万多给窗户装挡风板,本人亲历“桑美”,曾目击300斤重油灶机像树叶一样飞走

宁波即将处在“巴威”的“危险半圆”!一男子为防台风花一万多给窗户装挡风板,本人亲历“桑美”,曾目击300斤重油灶机像树叶一样飞走

极目新闻
2026-07-09 14:55:08
事情闹大了,美军机被击落,特朗普想“掀桌子”,中方说了句实话

事情闹大了,美军机被击落,特朗普想“掀桌子”,中方说了句实话

云舟史策
2026-07-10 07:15:40
网传东北某高校大一女生搬寝室,女同学没几个帮忙,被挂网上

网传东北某高校大一女生搬寝室,女同学没几个帮忙,被挂网上

观察鉴娱
2026-07-09 10:07:22
德州爆发反伊斯兰风潮!穆斯林被歧视为扼杀文明的恐怖分子!

德州爆发反伊斯兰风潮!穆斯林被歧视为扼杀文明的恐怖分子!

罐头告诉猫迷
2026-07-01 12:26:11
乒坛迎来重大变动!3位高层集体离任,樊振东回归出现新希望

乒坛迎来重大变动!3位高层集体离任,樊振东回归出现新希望

笑一个吧
2026-07-09 05:16:09
今夜!光通信、存储、芯片,集体暴涨

今夜!光通信、存储、芯片,集体暴涨

中国基金报
2026-07-10 02:56:41
炸锅了!全进华真的太松弛,带着张家齐出门吃饭,依然是一双拖鞋

炸锅了!全进华真的太松弛,带着张家齐出门吃饭,依然是一双拖鞋

火山詩话
2026-06-09 16:53:05
10倍光纤大牛股,遭百万股抛售,一把套现4亿元

10倍光纤大牛股,遭百万股抛售,一把套现4亿元

新浪财经
2026-07-09 22:15:06
出局后首次社媒发声!41岁C罗暗示暂不退出国家队:永远的葡萄牙

出局后首次社媒发声!41岁C罗暗示暂不退出国家队:永远的葡萄牙

风过乡
2026-07-09 05:52:40
20:1压倒性复仇!美军炸毁伊朗北部铁路桥,中东进入绝杀模式

20:1压倒性复仇!美军炸毁伊朗北部铁路桥,中东进入绝杀模式

无意争春
2026-07-09 14:40:29
丰田官宣新车,15.4万元,即将上市

丰田官宣新车,15.4万元,即将上市

科技堡垒
2026-07-07 09:01:18
保姆偷拿了家里2瓶茅台去卖,我没揭穿只辞退了她,临走时她指了指旧皮鞋,我一看瞬间瘫坐在地

保姆偷拿了家里2瓶茅台去卖,我没揭穿只辞退了她,临走时她指了指旧皮鞋,我一看瞬间瘫坐在地

今夜有个好故事
2026-03-11 17:26:56
2026-07-10 07:59:00
人人都是产品经理社区 incentive-icons
人人都是产品经理社区
想要成为大牛先从学做产品开始
64882文章数 311633关注度
往期回顾 全部

科技要闻

Meta发布Muse spark 1.1,跑分接近Opus4.8

头条要闻

特朗普松口 称将授权乌克兰自行生产"爱国者"防空系统

头条要闻

特朗普松口 称将授权乌克兰自行生产"爱国者"防空系统

体育要闻

信哈兰德吃小孩,还是信非洲足球会魔法?

娱乐要闻

陈翔发文“苍天饶过谁”登热搜,旧事再引关注

财经要闻

中国房地产十年

汽车要闻

悦己更悦人 阿维塔07L加长了更加上了豪华

态度原创

教育
本地
游戏
房产
数码

教育要闻

我真的很讨厌这句话!!!非常非常讨厌!!!

本地新闻

重庆人有自己的避暑桃花源 | 夏天就去「酉」风的地方!

魂师对决:现在屯真身券到底有多坑爹?SP+魂师为啥就不出真身了?

房产要闻

猛踩油门!绿地,又拿下海南一个大城更!

数码要闻

Marshall发布全新ACTON IV与STANMORE IV:2499元起

无障碍浏览 进入关怀版