登录
开发指南 / 移动支付 / 接口接入步骤

接口接入步骤

约 6 分钟
以 Markdown 格式查看 |
## 开始前

开始本场景前,应已完成[开发前准备](../开始接入/开发前准备.md)和[请求与签名](../开始接入/请求与签名.md),并准备:

- 已经与支付商户关系配置完成的目标小程序`appid`。
- 当前登录顾客在该小程序`appid`下的`openid`。
- 当前门店和设备对应的终端参数。
- 可公网访问的`notify_url`和可执行主动查询的后台任务。

## 接口调用时序图

![小程序支付顾客支付接口调用时序图](https://img-hub.wosaimg.com/file/2026/08/06/529982edbce57eff.png)

创建商户订单 → 服务端调用**[预下单接口](https://doc.shouqianba.com/zh-cn/api/interface/precreate.html)** → 将`wap_pay_request`交给小程序 → 小程序调用`wx.requestPayment` → **[回调接口](https://open.shouqianba.com/docs/payment/70?category_id=54)**和**[查询接口](https://open.shouqianba.com/docs/payment/71?category_id=54)**确认原订单 → 成功后幂等履约 → 售后需要时调用**[退款接口](https://open.shouqianba.com/docs/payment/72?category_id=54)**。

## 配置小程序关系

- 目标:让收钱吧能够为目标小程序创建微信支付订单。
- 配置来源:商户主体、小程序`appid`和支付开通信息由商户及收钱吧对接人员确认。
- 完成结果:正式商户与目标小程序关系已配置,当前支付终端可用于该小程序。
- 下一步:在小程序登录链路中取得当前顾客`openid`。

如果商户主体与小程序主体不同,可能需要按对接要求完成联合运营等额外配置。关系未完成前,不要进入支付测试。

## 创建商户订单

- 目标:在唤起微信支付前保存一笔待支付订单。
- 输入来源:商品、金额、顾客、门店和业务信息来自商户系统。
- 商户系统处理:生成全局唯一的商户订单号,保存订单金额、当前小程序`appid`和`openid`所属关系。
- 输出用途:用于预下单、查询、回调、退款和幂等履约。
- 下一步:调用预下单接口。

## 调用预下单

- 目标:创建收钱吧支付订单,并取得微信小程序调起参数。
- 调用接口:**[预下单接口](https://doc.shouqianba.com/zh-cn/api/interface/precreate.html)**。
- 输入来源:商户订单号、金额和商品简介来自已保存订单;`payer_uid`取当前顾客在目标小程序下的`openid`;`extended.sub_appid`取已配置的小程序`appid`;支付方式按小程序支付配置;`notify_url`来自服务端配置。
- 签名凭证:使用当前终端的`terminal_sn`和`terminal_key`。
- 输出用途:保存收钱吧订单号和交易状态,把`wap_pay_request`返回给发起订单的小程序页面。
- 下一步:响应允许继续支付且`wap_pay_request`完整时,调起微信支付;否则按响应结果结束或查询原订单。

完整字段、取值、类型和必填规则以预下单接口文档为准。

## 调起微信支付

- 目标:让顾客在微信原生收银台确认付款。
- 调用能力:小程序端`wx.requestPayment`。
- 输入来源:将预下单响应中的`wap_pay_request`按微信要求映射给`wx.requestPayment`,不要由小程序自行生成或改写签名参数。
- 输出用途:小程序端只用于展示支付完成、取消或失败提示。
- 下一步:无论前端返回成功、失败、取消或页面被关闭,商户后台都按原订单接收回调或主动查询。

`wx.requestPayment`返回成功不等于商户已经取得最终支付结果,不能直接触发履约。

## 接收支付回调

- 目标:异步取得订单最终状态。
- 对接接口:**[回调接口](https://open.shouqianba.com/docs/payment/70?category_id=54)**。
- 输入来源:收钱吧向预下单时提供的`notify_url`发送原始通知。
- 商户系统处理:验签,通过商户订单号定位原订单,并与查询共用状态机幂等更新。
- 输出用途:确认最终交易结果。
- 下一步:成功落库后返回`success`;最终成功时只履约一次。

## 主动查询

- 目标:在预下单后主动确认结果,补偿前端和回调的不确定性。
- 调用接口:**[查询接口](https://open.shouqianba.com/docs/payment/71?category_id=54)**。
- 输入来源:使用预下单保存的原商户订单号或收钱吧订单号。
- 输出用途:与回调更新同一订单。
- 下一步:最终成功则履约;最终失败则结束;仍非最终状态则按本场景节奏继续查询。

预下单成功5秒后开始查询;第0至1分钟每3秒一次,第1至5分钟每10秒一次,第6分钟执行最后一次查询。

## 完成履约

- 触发条件:商户后台通过验签回调或查询确认最终支付成功。
- 执行动作:开通服务、出货、发券或更新权益。
- 幂等要求:以前述商户订单号为幂等键,只创建一个履约任务。

## 发起退款

- 目标:退回已经确认支付成功的订单资金。
- 调用接口:**[退款接口](https://open.shouqianba.com/docs/payment/72?category_id=54)**。
- 输入来源:原支付订单标识、唯一退款流水号、金额和原因来自商户售后系统。
- 输出用途:保存退款流水并关联原支付订单。
- 下一步:退款非最终或请求超时时查询原退款流水。

退款只能由商户后台发起,小程序端不得持有退款签名凭证。

## 完成标准

- [ ] 正式商户与目标小程序关系已经配置。
- [ ] `openid`属于当前`extended.sub_appid`对应的小程序。
- [ ] 预下单结果和`wap_pay_request`已正确保存和转交。
- [ ] `wx.requestPayment`返回不会直接触发履约。
- [ ] 回调和主动查询更新同一订单。
- [ ] 轮询节奏、4分钟支付有效期和第6分钟最终查询已经实现。
- [ ] 结果未知时不会履约或重复发起支付。
- [ ] 退款只由服务端发起。
目录
在线咨询