
这是《线上支付 API 接入实战》第01篇。本专题将用10篇内容,连续讲清场景选型、支付下单、异步通知、主动查单、退款、对账、安全、测试与正式上线。
顾客在商城选好商品,点击“立即支付”,调起付款页面,输入密码或完成验证,几秒后看到“支付成功”。
从顾客视角看,付款已经结束。
但对商户系统来说,工作才完成了一半:
- 这笔钱对应哪一张业务订单?
- 页面显示成功,服务端是否已经确认?
- 支付通知没有及时到达,订单应该怎么办?
- 同一条通知重复到达,会不会重复发货?
- 顾客申请部分退款,原订单状态怎样变化?
- 到了第二天,业务订单、支付账单和结算数据能不能对上?
很多项目能够很快“调通一笔支付”,却会在正式上线后遇到漏单、重复处理、退款查不到、客服不敢补单、财务月底对不上账。
问题通常不在付款按钮本身,而在于团队没有提前画清一笔订单的完整链路。
先说结论
线上支付 API 接入,不是调用一个“收款接口”,而是建立一套可以持续运行的交易闭环。
这套闭环至少要回答六件事:
- 怎样创建并识别一张订单;
- 怎样把正确的支付参数交给顾客;
- 怎样确认顾客是否真的支付成功;
- 通知延迟、重复或中断时怎样恢复;
- 取消、关单和退款怎样处理;
- 业务记录与资金账单怎样核对。
如果只完成“调起支付”,项目还不能算真正接完。
一、先分清一笔交易中的4个角色
线上支付链路看起来复杂,先把参与者分清就容易理解。
1. 顾客
顾客在小程序、公众号、H5、App、PC商城或其他业务页面中下单,并选择一种可用的支付方式。
顾客看到的是商品、金额、支付确认页和支付结果,不应该接触商户密钥,也不应由前端自行决定最终应付金额。
2. 商户业务系统
这是企业自己的商城、SaaS、ERP、订购系统、会员系统或行业应用。
它负责管理商品、价格、优惠、业务订单、履约状态和售后流程。顾客买了什么、应该付多少钱、支付后开通什么服务,最终都由业务系统判断。
3. 支付服务方
支付服务方可能是银行、具备相应许可的非银行支付机构,或者基于前述机构能力提供技术与接入服务的服务商。
它向符合条件的商户提供支付下单、订单查询、通知、退款、账单等能力。具体由谁提供支付服务、宜收宝和合作机构分别承担什么角色,应以实际产品、商户协议和接入文件为准。
4. 支付渠道或用户付款工具
顾客最终可能通过微信、支付宝、银行卡或其他受支持的方式确认付款。
“支持某种支付方式”还不够,项目还要确认它是否支持当前终端、交易场景、商户主体和应用入口。
二、三个订单号,分别在追踪什么?
第一次接支付 API 时,最容易混淆的是各种订单号。
1. 业务订单号
由商户业务系统生成,用来表示“顾客买了什么”。
例如一张商品订单、一次会员充值、一笔服务预约或一张缴费账单。它关联商品、顾客、优惠、履约和售后。
2. 商户支付订单号
由商户侧生成并提交给支付服务方,用来追踪“一次支付尝试”。
有的简单业务会让业务订单号与支付订单号一一对应;有的业务允许同一张业务订单更换支付方式或重新支付,就需要单独记录每一次支付尝试。
项目开始前,应先确认两者是一对一还是一对多,不能等到顾客重复支付后再补设计。
3. 支付侧交易号
支付受理后,支付服务方或渠道通常会生成自己的交易标识。它常用于查单、退款、账单匹配和客服定位。
因此,系统至少要保存好这组对应关系:
业务订单号 ↔ 商户支付订单号 ↔ 支付侧交易号
客服说“查不到这笔钱”,很多时候并不是交易不存在,而是三个系统只拿着各自的号码,无法快速找到对应关系。
三、顾客点击“立即支付”后,系统经历了什么?
一笔典型线上支付,可以拆成以下八个步骤。
第1步:创建业务订单
顾客提交商品或服务,业务系统根据商品价格、优惠、库存和业务规则,生成业务订单。
金额应由可信的服务端重新计算,不能直接采用前端提交的金额。否则,页面参数被修改后,可能出现低金额支付高价值订单的问题。
第2步:商户服务端发起支付下单
商户服务端整理订单号、金额、商品说明、通知地址等必要信息,按照具体产品要求完成身份验证或签名,再向支付服务方发起请求。
密钥、私钥或证书应保留在受控的服务端环境,不能放进小程序、网页或App前端代码。
第3步:支付服务方返回调起参数
支付服务方受理后,返回收银台地址、二维码内容、支付凭证或终端调起参数。
具体返回什么,取决于公众号、小程序、H5、App、PC或扫码等实际场景。不同入口不一定可以共用同一组参数。
第4步:顾客确认付款
前端根据返回参数调起付款页面,顾客完成确认。
此时可能出现成功、取消、失败、超时或结果暂时未知。前端应向顾客提供清晰提示,但前端展示结果不宜单独作为发货、加余额或开通服务的唯一依据。
第5步:支付结果返回前端
顾客完成操作后,前端可能收到结果或跳回商户页面。
这个结果主要服务于页面展示和用户体验。网络中断、关闭页面、跳转失败等情况,都可能让前端没有拿到最终结果;同时,前端环境本身也不适合承担最终交易确认责任。
第6步:支付结果异步通知商户服务端
支付服务方按照约定地址,将支付结果通知商户服务端。
商户系统收到通知后,不能只看到“成功”两个字就直接发货,还应按实际文档完成验签或身份校验,并核对商户、订单号、金额和交易状态。
通知还可能重复到达。系统必须做到:同一笔交易即使收到多次成功通知,业务也只能成功处理一次。这就是支付接入中经常提到的“幂等”。
第7步:更新订单并触发履约
确认结果有效后,系统更新支付订单与业务订单,并进入发货、充值、开通会员、生成服务单或其他履约流程。
如果履约过程较长,不能简单把所有工作都塞在通知请求中。更稳妥的做法是先可靠记录已确认的支付结果,再由后续任务执行履约,并保留失败重试和人工处理入口。
第8步:下载账单并完成对账
当天页面和订单都显示正常,也不代表财务闭环已经完成。
企业还需要按实际产品能力获取交易、退款、费用或结算相关数据,与内部业务订单进行匹配,找出单边账、金额不一致或状态不一致的记录。
支付对账不是月底才做一次的“财务补救”,而应成为日常交易流程的一部分。
四、为什么“支付成功页面”不能单独作为成功依据?
假设顾客已经付款,页面准备跳回商户商城。就在这时,手机断网了。
顾客可能看不到商户的成功页面,但钱已经付出;反过来,仅凭前端传来的某个结果,也不足以让服务端跳过验证直接履约。
因此要把两个问题分开:
- 页面应该显示什么? 服务顾客体验;
- 业务是否可以履约? 由商户服务端根据可信的支付结果判断。
常见做法是:服务端以验证通过的异步通知处理结果为主要路径;通知未到、处理失败或状态不明确时,再通过主动查单和补偿任务确认。具体通知、查询和确认规则,以实际接入产品的官方文档为准。
顾客端如果暂时拿不到最终状态,可以显示“支付结果确认中”,并提供刷新或查看订单入口,而不是立即引导顾客再次付款。
五、异步通知没有到,订单会永远卡住吗?
不能把整个系统的恢复能力押在一次网络请求上。
正常的支付项目还需要准备三层恢复机制:
1. 顾客主动查看时查单
顾客回到订单详情页,发现状态仍在确认中,商户服务端可以按规则查询支付结果,再更新页面。
2. 后台定时补偿
系统定期扫描超过一定时间仍未确认的订单,主动查询结果。已经成功的订单补做确认,明确失败或超时的订单进入相应处理流程。
3. 人工核查入口
客服或运营可以根据业务订单号、商户支付订单号或支付侧交易号查询,但人工操作必须有权限控制、处理依据和操作记录。
这三层机制的目的不是让人随意“改订单”,而是让系统在通知延迟、网络异常或局部故障后,仍然可以恢复到可核对的正确状态。
六、支付完成以后,为什么还要设计关单、退款和对账?
支付不是只有成功这一种结局。
未支付订单需要关单
顾客长时间未付款、库存已经释放或活动价格已经失效时,业务系统需要停止这张订单继续支付。关单前后如何查验状态,必须按具体产品规则执行,避免“商户认为已关闭,顾客却在同时完成付款”的状态冲突。
已支付订单可能退款
退款需要关联原支付订单,还要处理全额退款、部分退款、多次退款、退款处理中和退款失败。
“退款接口已经受理”与“顾客已经收到退款”不是同一个状态,系统应保留退款单号和最终结果。
每天都需要对账
业务系统关心订单和履约,支付数据关心交易和退款,财务还会关心费用与资金结算。三者不是同一张表,但必须能够通过订单号和交易号关联。
如果项目只设计收款,没有设计退款和对账,问题往往不会在第一天出现,而会在交易量增长后集中暴露。
七、支付接口“已经调通”和“可以稳定上线”,差在哪里?
接口调通通常只能说明:
- 能创建一笔测试订单;
- 能调起付款页面;
- 能完成一次正常支付;
- 能在后台看到一条交易。
稳定上线还要继续确认:
- 用户重复点击会不会产生异常订单;
- 下单请求超时后能否判断是否已经受理;
- 通知重复到达会不会重复发货或重复加余额;
- 通知延迟时能否主动查单并恢复;
- 金额、商户和订单信息是否逐项核对;
- 全额退款和部分退款能否正确处理;
- 业务订单、支付数据和账单能否对上;
- 密钥、证书和后台权限是否受到保护;
- 异常交易是否有监控和告警;
- 客服、运营、财务和技术是否知道出现问题时找谁、查什么、怎样处理。
能完成正常支付,是开发起点;能够处理异常并恢复,才接近可上线状态。
八、企业接入前,先准备这张需求清单
准备咨询或开发线上支付 API 时,建议先回答以下10个问题:
- 业务属于商城、会员、缴费、预约、平台还是其他模式?
- 顾客通过公众号、小程序、H5、App、PC还是线下扫码付款?
- 下单主体、收款主体和实际履约主体分别是谁?
- 当前是否已有商城、SaaS、ERP或其他业务系统?
- 是否有自己的开发团队或长期技术服务商?
- 预计月订单量、客单价和高峰并发大致是多少?
- 是否存在部分退款、多次退款或跨周期退款?
- 业务系统目前怎样生成订单、确认履约和处理售后?
- 财务现在怎样核对交易、退款、费用和结算数据?
- 计划什么时候进入联调、测试和正式上线?
如果这些问题有一半还没有答案,第一步不是立即索要接口文档,而是先完成业务与系统梳理。
写在最后
顾客看到的线上支付,可能只有一个按钮和几秒钟的确认过程。
企业真正需要建设的,却是一条从业务下单、支付受理、结果确认、异常恢复,到退款和对账的完整链路。
先把订单、角色和状态画清楚,再选择接入方式;先设计通知、查询和异常恢复,再讨论正式上线。这个顺序越清晰,后续产品沟通、技术联调和财务验收越顺畅。
我们整理了一份《线上支付 API 接入需求表与上线自查清单》,覆盖业务场景、支付入口、订单模型、通知与查单、退款、对账、安全、测试和上线验收。
关注“富盛锦科技”,回复“API”,即可领取。
提交业务类型、支付入口、现有系统、预计订单量、开发条件和计划上线时间后,还可以申请一次接入评估。
下一篇预告:
《公众号、小程序、H5、App 和 PC 支付,接入方式怎么选?》
参考依据
- 《非银行支付机构监督管理条例》(国务院令第768号),自2024年5月1日起施行;
- 《非银行支付机构监督管理条例实施细则》(中国人民银行令〔2024〕第4号),自2024年7月9日起施行。
本文用于一般业务与技术信息交流,不构成对某一支付产品的完整接口说明,也不构成法律、财务或合规意见。具体接口、签名、通知、查询、退款、账单、准入与结算规则,以实际产品最新官方文档、合作机构审核和正式协议为准。










