当前位置:   article > 正文

【小程序】动态生成微信小程序二维码_微信小程序生成二维码接口

微信小程序生成二维码接口

微信官方提供的接口

官方文档中给我们提供了三个接口,分别应用于不同的场景
wxacode.createQRCode - - 接口文档地址->点击跳转
该接口需慎用,因为文档描述,该接口可生成的二维码是有限制的。

总共生成的码数量限制为 100,000

wxacode.get - - 接口文档地址->点击跳转
该接口需慎用,因为文档描述,该接口可生成的二维码是有限制的,且每日最大调用数为10000。

  • POST 参数需要转成 JSON 字符串,不支持 form 表单提交。
  • 接口只能生成已发布的小程序的二维码。
  • 与 wxacode.createQRCode 总共生成的码数量限制为 100,000,请谨慎调用。

wxacode.getUnlimited - - 接口文档地址->点击跳转

  • POST 参数需要转成 JSON 字符串,不支持 form 表单提交。
  • 接口只能生成已发布的小程序的二维码。
  • 调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成。

使用演示

【本演示,采用的是wxacode.get接口,使用的是uni.request请求方法】

  1. 第一步先获取到自己的accessToken。
  2. 请求接口路径,路径上需携带access_token=${access_token}的传值,且仅用此传值。
  3. 请求上需声明返回值类型为arraybuffer,不然会转换为utf-8影响后续操作,原因详见此处
  4. 使用官方提供的arrayBufferToBase64函数将arraybuffer转换为base64格式,再自行补充base64头部属性即可

代码演示

//获取access_token
uni.request({
	url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`,
	success(res) {
		if(res.statusCode < 300){
			console.log(res.data);
		}else {
			console.error('Accesstoken get fail!');
		}
	}
})

//获取二维码
uni.request({
	url: `https://api.weixin.qq.com/wxa/getwxacode?access_token=${access_token}`,
	method:"POST",
	data: {
		path: `pages/index/index/?a=${a}`
	},
	responseType: 'arraybuffer',//此步很关键
	success(res) {
		//设置img标签上的src属性
		that.logoSrc = 'data:image/png;base64,' + uni.arrayBufferToBase64(res.data);
	},
	fail(res) {
		//...
	}
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

排坑说明

你在调用此接口的时候,往往会遇到一些奇奇怪怪的bug。
1.在成功调用接口的前提下,如果你的返回值出现乱码的情况,是因为返回值被转换成了utf-8的格式,此格式将无法再进行buffer处理,故你需要限制请求响应的数据格式。
2.返回结果说数据格式错误,如下

data format error rid: 63241b41-1f622122-62d884a8

可能你在传参的时候写的值名错误了,例如wxacode.getUnlimited接口传入的值名 对比 其他接口,path 被改成了 page

【欢迎各位大佬指正批评!】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/312328
推荐阅读
相关标签
  

闽ICP备14008679号