微信云开发支付配置绑定商户号时,无法发起授权,通过工作流或云开发模版解决支付问题

说明

在之前开发发布的项目课程《微信小程序云开发微信支付商城实战项目》,早先做支付的时候非常容易,只需要在云开发设置中,配置一下微信商户号,然后点一下授权就可以直接使用了,但是现在改了规则,绑定商户号时,无法发起授权,提示需要用微信支付的工作流来实现,那么这一节就给大家讲一下如何快速高效完成微信小程序支付功能。

错误复现

如果在云函数中写使用cloudPay.unifiedOrder统一下单api,如下所示,会报错:errCodeDes: "受理关系不存在",出现这个错误,那就代表绑定商户号没有授权成功,不知道大家有没有遇到过这个错误。

javascript 复制代码
exports.main = async (event, context) => {
	const res = await cloud.cloudPay.unifiedOrder({
		"body" : "小秋TIT店-超市", // 商品描述
		"outTradeNo" : "1217752501201407033233368018", // 商户订单号
		"spbillCreateIp" : "请传入终端 ip 地址,支持 ipv6", // 终端 IP
		"subMchId" : "1712600078", // 商户号
		"totalFee" : 1, // 总金额
		"envId": "cloud1-9gaa1ieg11955727", // 云函数环境名称
		"functionName": "pay_cb" // 支付结果通知回调云函数名
	  })
	  return res
}

解决方案

1.在云开发控制台选择管理工具

2.模版中心的模版市场中,选择小程序微信支付

选择完模版后会自动安装,这里稍微等待一下就可以,就会自动安装成功了

3.模版概览

在模版概论中有详细的操纵步骤,你仔细看文档基本可以掌握,文档地址传送门,在模版中主要是配置参数比较麻烦,配置错了会出现各种错误,这里主要是给大家说一下错误后怎么解决。

1)在模版概述或我的模版中,点击查看详情就可以进入到模版配置中

主要是填写好如下几项配置就可以完成支付 ① 点击参数设置 ②如果不知道这些参数怎么填,可以选择输入框下面的链接,有很详细的文档说明,会告诉你怎么配置的,详细的文档地址

2)安装调试接口

1.打开微信开发者工具界面,在cloudfunctions目录点击右键,选择同步云函数列表,同步模板中的云函数wxpayFunctions到本地;然后在云函数wxpayFunctions目录右键,选择下载,即可下载模板内置的云函数代码到本地。如下图所示: 2.选择wxpayFunctions云函数,单击右键"开启云函数本地调试" ①选择手动调试 ②设置参数,type:"wxpay_order",点击调用 ③如果返回了code:0,data返回了参数,那么就说明参数配置成功了,如果出现报错那么可以参考下面我统计的错误信息及修改办法

3)错误一:商户API证书序列号错误,errcode: "InnerError.FailedOperation"

errmsg: "{"message":"微信支付SDK请求失败, 响应码:401,错误码:SIGN_ERROR, 错误信息: 商户证书序列号有误。请使用签名私钥匹配的证书序列号"}"。出现上面的这个错误,一般就是"商户API证书序列号"过期或者无效。 解决办法: 进入到微信商户pay.weixin.qq.com,点击管理证书,申请新的API证书管理,这个申请过程可以根据之前写的文案来生成,uniapp项目unipay开通微信支付,生成后下载好证书,同时会生成新的"证书序列号",将新的序列号添加到参数设置中的"商户API证书序列号",就可以解决这个错误了。

4)错误二:商户API证书私钥错误,errcode: "InnerError.FailedOperation"

errmsg: "{"message":"http请求失败, 错误信息: Input byte array has incorrect ending byte at 1628"}"。错误可能有所不同,但是很类似,这种一般就是私钥有问题。 解决办法: 在上一步使用"微信支付商户平台证书工具"生成的证书,解压"1604799500_20250416_cert"文件 使用文本编辑器,打开私钥文件"apiclient_key.pem" 将私钥文件全选复制,拷贝到"参数设置"的"商户API证书私钥"中,重新保存,再运行,可以解决这个错误。

5)错误三:API V3密钥错误,errcode: "InnerError.FailedOperation"

errmsg: "{"message":"http请求失败, 错误信息: java.security.InvalidKeyException: Invalid AES key length: 33 bytes"}"。这个错误API V3密钥错误,这个错误找了半天,原因是要求32位,给提供了33位,我用AI给生成的随机字符,结果AI给多生成了一位字符,导致找了好久的错误。 解决办法: 还是到微信商户平台里面,找到api安全,设置修改APIv3秘钥,重新修改一个,填写到"参数设置"的API V3密钥中,就可以解决这个错误了。

4.实现支付

在可以的直接可以调用云函数获取支付参数,然后通过wx.requestPayment唤起微信支付组件,完成支付。

javascript 复制代码
wx.cloud.callFunction({
  // 云函数名称
  name: 'wxpayFunctions',
  data: {
    // 调用云函数中的下单方法
    type: 'wxpay_order',
    // 业务其他参数...
    // 这里的参数会传入wxpayFunctions/wxpay_order/index.js下的函数,通过event获取
  },
  success: (res) => {
    console.log('下单结果: ', res);
    const paymentData = res.result?.data;
    // 唤起微信支付组件,完成支付
    wx.requestPayment({
      timeStamp: paymentData?.timeStamp,
      nonceStr: paymentData?.nonceStr,
      package: paymentData?.packageVal,
      paySign: paymentData?.paySign,
      signType: 'RSA', // 该参数为固定值
      success(res) {
        // 支付成功回调,实现自定义的业务逻辑
        console.log('唤起支付组件成功:', res);
      },
      fail(err) {
        // 支付失败回调
        console.error('唤起支付组件失败:', err);
      },
    });
  },
});
相关推荐
chaosama16 小时前
微信小程序带参分享、链接功能
微信小程序·小程序
胡西风_foxww17 小时前
微信小程序动态组件加载的应用场景与实现方式
微信小程序·应用·加载·动态组件
甜甜的资料库21 小时前
基于小程序老人监护管理系统源码数据库文档
微信小程序
Uyker2 天前
微信小程序动态效果实战指南:从悬浮云朵到丝滑列表加载
前端·微信小程序·小程序
happyCoder2 天前
uniapp 微信小程序实现定时消息订阅提醒(前后端)
微信小程序
Uyker2 天前
从零开始制作小程序简单概述
前端·微信小程序·小程序
打小就很皮...2 天前
HBuilder 发行Android(apk包)全流程指南
前端·javascript·微信小程序
前端缘梦3 天前
微信小程序登录方案实践-从账号体系到用户信息存储
前端·微信小程序
coding随想3 天前
2025年小程序开发全解析:技术储备、行业趋势与实战案例
微信小程序
Nueuis3 天前
微信小程序前端面经
前端·微信小程序·小程序