悠悠楠杉
API支付接口对接教程:从创建订单到确认支付结果
支付接口对接并非把支付按钮接到一个接口上就结束。用户发起付款后,商户系统要能认出这笔订单,并在支付平台返回结果时正确更新状态。不同平台的接口名称、签名规则和证书要求各异,具体字段以所选平台的文档为准;下面梳理的是接入时需要处理的共同问题。
开始开发前,核对下单资料和订单记录
拿到商户号和接口权限后,先确认支付场景:网页跳转、应用内支付等场景,调起支付的方式可能不同。与平台核对所需的密钥或证书、回调地址配置方式,再开始写请求代码。密钥和私钥留在服务端管理,不放进前端代码或公开仓库。
商户系统在调用下单接口前,应生成自己的订单号,记录应付金额和当前状态。金额单位、币种以及订单号的格式按接口文档填写;尤其要看清金额字段要求的是“元”还是最小货币单位,避免付款页面展示的金额与本地订单不一致。接口返回支付参数后,前端负责调起支付,服务端保留订单与平台交易信息的对应关系。
开发中常见的误区,是把“下单接口调用成功”当成“用户已经付款”。前者只表示支付请求已被接受,用户仍可能取消支付、停留在收银台,或尚未完成付款。
页面显示成功,订单却仍是待支付
假设某个网站已能正常调起收银台,用户付款后也回到了“支付成功”页面,但后台订单一直显示待支付。开发者此时先查看服务端是否收到支付平台的异步回调,而不是直接把页面跳转结果写成已支付。浏览器跳转可能因网络或用户关闭页面而中断,页面传来的状态也不足以作为入账依据。
如果回调没有到达,就核对平台配置的通知地址、服务端路由和网络访问情况;如果已经到达,则保留请求日志,检查验签结果与订单匹配情况。只有按平台规则验证通知来源,并核对订单号、金额及支付状态后,才更新本地订单。验证失败的请求不能因为字段里写着“成功”就放行。
排查时还可能遇到回调延迟:用户已完成付款,通知尚未被系统处理。此时订单暂时保留待确认状态,通过平台提供的订单查询接口核对交易结果;查询频率和重试方式按平台限制设置,避免反复请求。页面可展示“结果确认中”,后台继续记录查询结果,不急于凭用户截图改状态。
回调再次到达,避免重复发货
支付平台可能重复发送同一笔交易的通知,网络重试也会让回调处理多次执行。订单状态更新因此要具备幂等性:同一笔已确认支付的订单再次收到有效通知,只返回平台要求的响应,不重复发货、充值或发放权益。若支付成功后的业务动作由异步任务执行,还要记录任务执行结果,避免订单已改为已支付,权益却没有交付。
联调时,除了测试正常付款,也要测试取消支付、重复通知和回调晚于页面返回的情况。上线前再核对一次生产环境的回调地址、证书或密钥配置,并用一笔可追踪的测试订单对照商户订单记录与平台交易记录。若两处状态仍不一致,保留订单号和接口日志,先定位差异,再处理交付。

