uniapp小程序生成小程序码 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

uniapp小程序生成小程序码

发表时间:2020-11-27

发布人:葵宇科技

浏览次数:74

文章目录

  • 前言
  • 一、自测版本
  • 二、线上版本
  • 三、测试
  • 总结


前言

需求:用户通过扫描小程序码,直接跳转到小程序的登陆页,并自动填充推荐码


一、自测版本

用于前端自己测试如何生成小程序码

<!-- 以图片的形式展示 -->
<image :src="maskData"></image>
onLoad(options) {
    console.log('需要推荐码',options)//打印出来是 {scene: "code%3D2QQ"}
	const scene = options.scene ? decodeURIComponent(options.scene) : ''
	console.log('编译出来的scene',scene) //打印出来是 code=3D2QQ
	this.code = scene.split('=')[1]//打印出来是 3D2QQ
	console.log('编译出来的推荐码',this.code)
},
getData(e) {
	//获取accessToken
	let that = this;
	const APP_ID = 'xxx'; // 小程序appid
	const APP_SECRET = 'xxxxx'; // 小程序app_secret
	let access_token = '';
	uni.request({
		url: "https://api.weixin.qq.com/cgi-bin/token", //固定链接,不用改
		data: {
			grant_type: 'client_credential',
			appid: APP_ID,
			secret: APP_SECRET
		},
		success: function(res) {
			console.log('获取accessToken', res)
			access_token = res.data.access_token;
			// 接口B:适用于需要的码数量极多的业务场景 生成的是小程序码
			that.getQrCode(access_token);
		}
	})
},
//获取二维码
getQrCode(access_token) {
	var that = this;
	uni.request({
		url: "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + access_token,//固定链接,不用改
		method: 'POST',
		responseType: 'arraybuffer', //设置响应类型
		data: {
			path: 'pages/public/login?code=' + that.code, // 必须是已经发布的小程序存在的页面(否则报错)
			width: 298,
			auto_color: false, // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调
			line_color: {
				"r": "0",
				"g": "0",
				"b": "0"
			} // auto_color 为 false 时生效,使用 rgb 设置颜色
		},
		success: function(res) {
			console.log('获取二维码', res)
			that.maskData = "data:image/PNG;BASE64," + uni.arrayBufferToBase64(res.data);//以图片的形式展示
		}
	})
}

二、线上版本

原来以为很难的,压力都在前端,等做完了,测试体验版的时候,发现api.weixin.qq.com域名没加进去,结果官方跟我说,不能加这个域名,原因是前端不能直接用上面的方法自己去生成小程序码,必须要通过后台服务器转一下
在这里插入图片描述

// 给了个token,后端自己去实现自测版本中的操作-生成小程序码,返回图片地址,前端直接展示图片就好了,666
getData(e) {
	this.$api
		.qrcode({
			token: this.token
		})
		.then(res => {
			console.log('我的推荐码', res)
			this.maskData = res
		})
		.catch(err => {
			this.$api.msg(err)
		});

三、测试

截取生成小程序码的图片,用微信开发者工具的“通过二维码编译”扫码测试能不能拿到参数,并填充
在这里插入图片描述


总结

事情其实很简单,没必要想的太复杂

相关案例查看更多