全国诚招各地市合作,提供完成项目运营资料 电话:18638624151
API接口开发

支付接口的回调,是最容易掉单的一段

API接口开发
支付接口的回调,是最容易掉单的一段

碰到这种事,客户总要问,支付对接难在哪?我说下单那一段不难,难的是付完钱之后那个回调。回调处理不好,客户付了钱订单却没到。

回调为什么要快速返回

支付平台通知你「客户付款了」,你的接口要尽快回一个「收到」。回慢了,平台以为你没收到,会一遍遍重发。

我们的做法是回调接口先把收到的信息存下来。立刻返回成功,真正处理订单的逻辑放到后台慢慢做。先接住,再处理,这个顺序很关键。

如果回调接口里又查数据库又发消息又对接物流。处理时间长,平台等不及就会重发,结果一笔订单被处理好几次。

重复回调要能识别

同一个支付通知收到多次是正常的,不是异常。你的系统要能识别出「这个通知我处理过了」,而不是再处理一遍。

常见的做法是用支付平台的订单号或者交易号做唯一标识。处理前先查一下有没有记录。有记录就直接返回成功,不再重复处理。

这一步叫幂等。听起来像技术词,实际解决的问题很朴素:客户只付了一次钱,系统不能给他发两批货。

回调失败怎么补

网络抖动、系统升级都可能让回调失败。不能只依赖平台重发,自己也要有一个主动查询的机制。

我们的建议是定时去支付平台查一遍未完成的订单状态。发现已经付款但本地没处理的,补上处理。

还有一个兜底是人工处理入口。真有处理不了的订单,运营能手动在后台标记,把客户的钱和货对上,别让客户一直等。

还有一个细节是金额的校验。回调里的金额要和本地订单的金额对一遍,对不上要拦下来人工看。金额不做校验,被人改了通知内容就麻烦了。

支付回调上客户最常问的几个问题

回调要返回什么

按平台的约定返回成功标识。关键是快速返回,不要在回调里做耗时操作。

重复回调怎么防

用交易号做唯一标识,处理前先查询。重复的只返回成功,不再处理业务。

回调一直失败怎么办

加定时查询补漏,再留一个人工处理入口。两条腿走,才不会卡住订单。

常斌常挂嘴上的一句话:回调那个接口越急越要快返回,慢一秒就可能掉一单。

先把回调测透

我的建议是上线前把回调的几种异常情况都测一遍:超时、重复通知,再加上处理失败。平时测透了,真出事才不会慌。

我们交出去 100 多个商业应用之后,哪条路稳当早就摸清了。信服无限做支付对接时,会把回调处理当成重点来测。开始之前,告诉我你接的是哪家支付通道,各家回调的规则略有不同,我们按你的通道来。

聊聊你的项目

有架构或成本优化的烦恼?

把你的业务场景告诉我们,专家会给出一份务实的改造与降本建议。


电话咨询 微信咨询 在线咨询 返回顶部
xycx202108

微信扫码咨询

×