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

说明

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

错误复现

如果在云函数中写使用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);
      },
    });
  },
});
相关推荐
前端开发小吴2 小时前
微信小程序预览文件 兼容性苹果
微信小程序·小程序
Good Lucky2 小时前
setData执行后操作方法-微信小程序
微信小程序·小程序·setdata
爱分享的程序员6 小时前
微信小程序执行C语言库的详细方案
c语言·微信小程序·小程序
Mark.10246 小时前
uniapp项目打包的微信小程序,设置uni-popup type=“bottom“时,底部有空隙
微信小程序·uni-app·notepad++
发呆小天才yy11 小时前
uniapp 微信小程序使用图表
前端·微信小程序·uni-app·echarts
Muxiyale14 小时前
微信小程序备案的一些记录
微信小程序·小程序
天上掉下来个程小白19 小时前
缓存菜品-04.功能测试
java·spring boot·缓存·微信小程序·需求分析·苍穹外卖
Mountain0819 小时前
微信小程序BLE蓝牙模块断开后无法再次搜索到原来的蓝牙
微信小程序·小程序
大力水手~1 天前
微信小程序上传视频,解决ios上传完video组件无法播放
ios·微信小程序·音视频