对接微信支付api需完成资质、配置、开发、验证四层闭环:先确保小程序企业认证与服务类目匹配,商户平台入驻获取mch_id并开通jsapi/h5支付,配置https回调地址;再下载api证书并转换格式、提取序列号,将证书、密钥等安全加载;后端实现统一下单获取prepay_id及解密验签回调;前端调用sdk唤起支付并做好异常兜底。

对接微信支付API接口不是单纯写几行代码的事,核心是完成资质、配置、开发、验证四层闭环。没走通任一环节,调用都会失败,比如常见错误 errCode: 47001(未开通云支付)或 errCode: 48002(JSAPI权限未开启)。
先确认基础资质和平台配置
这是所有后续操作的前提,跳过必报错:
- 小程序必须已完成企业认证,并在「小程序管理后台 → 基本设置 → 服务类目」中勾选与业务匹配的类目(如“电商”“生活服务”);
- 在微信支付商户平台完成入驻,拿到10位纯数字的 mch_id(商户号),并设置好32位的 APIv3密钥;
- 在商户平台「产品中心 → 我的产品」中,开通 JSAPI支付(小程序用)或 H5支付(网页用),否则接口直接不可用;
- 配置支付回调地址:必须是公网可访问的 HTTPS 地址(如
https://api.yoursite.com/pay/notify),不能带端口,且需在商户平台「开发配置」中填写一致。
准备好证书与密钥文件
V3接口强制要求双向证书校验,缺一不可:
支持AI生成符合公众号规范的图文,推送至草稿箱;兼容其他技能生成的图文/图片。通过向导扫码授权,支持多账号;无需暴露Secret密钥或配置IP白名单。
- 登录商户平台 → 「账户中心 → API安全 → 下载API证书」,获取
apiclient_cert.pem和apiclient_key.pem; - 用 OpenSSL 将私钥转为无密码 PKCS#8 格式:
openssl pkcs8 -topk8 -inform PEM -outform PEM -in apiclient_key.pem -out apiclient_key_plain.pem -nocrypt; - 提取证书序列号:
openssl x509 -in apiclient_cert.pem -noout -serial | cut -d= -f2 | tr '[:lower:]' '[:upper:]' | tr -d ':',结果即为 merchant-serial-number; - 把证书、私钥、序列号、APIv3密钥、APPID、mch_id 全部作为配置项加载进项目(推荐用环境变量或加密配置中心,切勿硬编码)。
后端实现统一下单与回调处理
以小程序 JSAPI 支付为例,关键流程分两步:
-
统一下单(/v3/pay/transactions/jsapi):后端接收前端传来的用户
openid、订单号out_trade_no、金额amount后,构造请求体,用 APIv3 密钥生成签名,带上Authorization请求头调用接口,返回prepay_id; -
支付回调(notify-url):微信服务器会向你配置的回调地址发起 POST 请求,含加密的 JSON 数据;后端需用 APIv3 密钥解密、验签、校验响应体中的
resource.algorithm和resource.ciphertext,验证通过后更新订单状态,并返回 HTTP 200 + 空响应体; - 注意:回调地址必须能被微信服务器直连,本地调试可用 ngrok 或 localtunnel 映射公网地址。
前端唤起支付与异常兜底
后端返回预支付参数后,前端调用微信 SDK 发起支付:
- 调用
uni.requestPayment(uni-app)或wx.requestPayment(原生小程序),传入后端返回的timeStamp、nonceStr、package、signType、paySign; - 监听成功/失败回调:支付成功不等于订单完成,仅表示用户点了确认;最终状态必须以后端收到微信回调为准;
- 常见失败场景要提示用户:如余额不足、网络中断、用户取消,建议引导重新下单或联系客服,避免重复扣款。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










