做支付对接,最典型的事故是用户付款成功、钱也到账了,系统里订单还是待支付。客服查半天,才发现回调丢了。这类问题不偶发,量一上去就会遇到。这一步谁是责任人?
回调必须当成不可靠的信号
支付平台的回调可能重复、可能延迟与也可能根本不到。所以处理回调的第一原则是幂等:同一个订单被回调十次,结果和一次完全一样。做法是先查订单状态,已是成功就直接返回,别重复发货、重复加积分。第二原则是不要只信回调。主动查单才是兜底:定时把待支付订单拿去支付平台查一遍状态,查到成功就改。
这个任务跑得勤一点,掉单的窗口就短一点。很多团队只做回调不做查单,出问题时毫无补救手段。每天把平台的交易流水和系统里的订单逐笔比对,找出三种差异:平台有系统没有、系统有平台没有以及金额不一致。这三种各自对应不同的问题,比对一个不漏,账才不会越积越乱。对账要自动化,但异常要人工确认。
对账是末尾一道防线
自动改状态是危险的,因为可能改错。合理的做法是系统把差异列出来,标注可能原因,由人确认后处理。这条流程看着慢,实际上能避免大部分资金类事故。退款不是简单地把钱退回去。原路退回和部分退款与多次退款以及退到余额,这几种要分开处理。还要考虑退款时优惠券怎么算、积分怎么扣回。
这些规则不提前定,上线后每周都会有新问题。分账涉及多方结算,账期、手续费承担以及退款时的分账回滚,每一项都要在协议里写清楚,再在系统里落实。这块最容易出现"技术上能做、业务上没想清"的情况,到头来变成人工补账,越补越乱。再多说一句:支付这块的技术难点不在接口,在异常处理。
退款和分账更麻烦
把幂等、查单和对账三件事做扎实,出事概率会低一个量级。支付对接这套流程,谁来兜底?
支付对接的常见疑问
支付对接要多久
单一渠道的基本支付,两三天可通;含退款、分账与对账的完整方案通常两到四周。
回调丢了怎么办
靠定时主动查单兜底。建议待支付订单每几分钟查一次,成功后立即更新状态。
对账必须每天做吗
建议每天。差异拖得越久越难查,尤其涉及退款和分账时,隔几天就说不清了。
总结:支付对接的难点在异常不在接口。回调幂等、主动查单跟每日对账,三件事做好,掉单和错账才可控。