专注小程序 / APP 开发,用代码改变生活

获取方案
全国分站 主站首页 北京分站 石家庄分站 唐山分站 保定分站 廊坊分站 沧州分站 郑州分站

小程序微信支付接入全流程

小程序开发 2026-10-10 5 阅读 0 点赞 原创

很多独立开发者在做小程序时,最头疼的一步就是「怎么把微信支付跑通」。本文按真实上线流程,把小程序微信支付的接入步骤拆开讲清楚,代码可直接套用。

一、前置准备:先把资质和配置搞定

在写代码之前,下面几件事必须完成,否则后面一定卡住:

  • 注册微信支付商户号(mchid),并完成企业认证;
  • 在小程序后台关联该商户号(AppID 与 mchid 绑定);
  • 在商户平台配置 APIv3 密钥 和 商户证书(apiclient_cert.pem / apiclient_key.pem);
  • 配置支付回调域名(必须是 HTTPS,且已备案)。

注意:小程序支付属于 JSAPI 支付,用户必须在小程序内,openid 必须来自同一个小程序的 AppID。

二、整体链路:一句话理解

小程序端只负责「唤起支付」,真正的下单和签名必须放在自己的服务端。链路是:

  1. 小程序调用 wx.login 拿到 code,后端换 openid;
  2. 后端调用微信「JSAPI 下单」接口,拿到 prepay_id;
  3. 后端二次签名,返回小程序唤起支付所需参数;
  4. 小程序调用 wx.requestPayment 拉起收银台;
  5. 微信异步回调后端,后端更新订单状态。

三、服务端:调用 JSAPI 下单

以 Node.js 为例,使用官方 SDK 或直接请求 v3 接口。核心是组装参数并签名:

const params = {
  appid: APPID,
  mchid: MCHID,
  description: '测试商品',
  out_trade_no: 'ORDER_' + Date.now(),
  notify_url: 'https://your.domain/pay/notify',
  amount: { total: 1, currency: 'CNY' },
  payer: { openid: userOpenid }
};
// 请求 POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi
// 返回 prepay_id

拿到 prepay_id 后,还需要用商户私钥做一次小程序端唤起签名:

const paySign = sign({
  appId: APPID,
  timeStamp: ts,
  nonceStr: nonce,
  package: 'prepay_id=' + prepay_id,
  signType: 'RSA'
});
return { timeStamp: ts, nonceStr: nonce, package, paySign, signType: 'RSA' };

四、小程序端:唤起支付

前端拿到后端返回的参数后,直接调用支付 API:

wx.requestPayment({
  timeStamp: res.timeStamp,
  nonceStr: res.nonceStr,
  package: res.package,
  signType: 'RSA',
  paySign: res.paySign,
  success: () => { /* 支付成功,跳转结果页 */ },
  fail: (err) => { /* 用户取消或失败 */ }
});
提醒:success 只代表用户完成了支付动作,不代表订单一定到账,最终状态必须以服务端回调为准。

五、支付回调:最容易踩坑的一步

微信会向 notify_url 发送 POST 请求,你需要:

  • 验签(用微信平台证书验证请求头签名);
  • 解密 resource 字段(AES-256-GCM);
  • 判断 trade_state 是否为 SUCCESS;
  • 处理完业务后返回 { code: 'SUCCESS' },否则微信会重复通知。
// 伪代码
if (decrypted.trade_state === 'SUCCESS') {
  await updateOrder(decrypted.out_trade_no);
}
return { code: 'SUCCESS', message: '成功' };

六、上线前的检查清单

  • 金额单位是分,不是元;
  • out_trade_no 全局唯一,避免重复下单;
  • 回调接口做幂等处理,防止重复更新;
  • 证书和密钥不要写进前端代码或 Git 仓库;
  • 正式环境用正式 AppID 和 mchid,测试可用沙箱或 1 分钱订单。

把上面六步走完,小程序微信支付基本就能稳定跑起来了。真正花时间的往往不是接口本身,而是证书、回调验签和幂等这些细节,建议一开始就按生产标准写。

小程序推广没订单?这5个方法最有效小程序分销拼团秒杀到底能不能做

评论 (0)

还没有评论,快来抢沙发吧~

好想法,值得被认真交付

从小程序、APP 到全栈网站,一站式把想法变成可落地的产品

微信咨询

微信扫码,直接沟通需求