Leanote's Blog
I love Leanote!
Toggle navigation
Leanote's Blog
Home
Chrome
Git
Linux
Windows
Others
工具大全
VsCode
Expo
Html
JavaScript
Npm
Node
Mock
React-Native
React
TypeScript
小程序
插件
正则
Dva
Ant-Design-React
Umi
Vue
Vux
Ant-Design-Vue
Http
Java
flutter
开发小工具
About Me
Archives
Tags
小程序生成二维码带参数
2019-11-14 07:46:41
8
0
0
admin
## **注意: 小程序需要先上线才能生成二维码** ## **另参考[官方文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542)** ## **另参考[扫普通链接二维码打开体验版小程序](https://developers.weixin.qq.com/miniprogram/introduction/qrcode.html#%E9%85%8D%E7%BD%AE%E6%B5%81%E7%A8%8B)** ## 1. **获取[access_token](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183)** ### 接口调用请求说明 ``` https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET ``` ### 参数说明 参数|是否必须|说明 :-: | :-: | :-: grant_type|`是`|获取`access_token`填写`client_credential` appid|`是`|第三方用户唯一凭证 secret|`是`|第三方用户唯一凭证密钥,即`appsecret` 以下是Oauth支持的5类 grant_type 及说明 ``` authorization_code 授权码模式(即先登录获取code,再获取token) password 密码模式(将用户名,密码传过去,直接获取token) client_credentials 客户端模式(无用户,用户向客户端注册,然后客户端以自己的名义向’服务端’获取资源) implicit 简化模式(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash) refresh_token 刷新access_token ``` ### 返回说明 ``` {"access_token":"ACCESS_TOKEN","expires_in":7200} ``` ### 参数说明 参数|说明 :-: | :-: access_token|获取到的凭证 expires_in|凭证有效时间,单位:秒 ## 2. **获取小程序码** ### 接口A: 适用于需要的码数量较少的业务场景 接口地址: ``` https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN ``` ### POST 参数说明 参数|类型|默认值|说明 :-: | :-: | :-: path|String| |不能为空,最大长度 128 字节 width|Int|430|二维码的宽度 auto_color|Bool|false| 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 line_color|Object|{"r":"0","g":"0","b":"0"}|auth_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"},十进制表示 ### **注意:通过该接口生成的小程序码,永久有效,数量限制见文末说明,请谨慎使用。用户扫描该码进入小程序后,将直接进入 path 对应的页面。** ### 接口B:适用于需要的码数量极多的业务场景 ``` https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN ``` ### POST 参数说明 参数|类型|默认值|说明 :-: | :-: | :-: scene|String| | 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#{content}amp;'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式) page|String| |必须是已经发布的小程序存在的页面(否则报错),例如 "pages/index/index" ,根路径前不要填加'/',不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面 width|Int|430|二维码的宽度 auto_color|Bool|false|自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 line_color|Object|{"r":"0","g":"0","b":"0"}|auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示 ### **注意:通过该接口生成的小程序码,永久有效,数量暂无限制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中 scene 字段的值,再做处理逻辑。使用如下代码可以获取到二维码中的 scene 字段的值。调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟,开发工具模拟时的 scene 的参数值需要进行 urlencode** ``` // 这是首页的 js Page({ onLoad: function(options) { // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene var scene = decodeURIComponent(options.scene) } }) ``` ### 接口C:适用于需要的码数量较少的业务场景 ``` https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN ``` ### POST 参数说明 参数 | 类型 | 默认值 | 说明 :-: | :-: | :-: path | String | | 不能为空,最大长度 128 字节 width | Int | 430 | 二维码的宽度 ### **注意:通过该接口生成的小程序二维码,永久有效,数量限制见文末说明,请谨慎使用。用户扫描该码进入小程序后,将直接进入 path 对应的页面。** ### **使用** .js文件 ``` getqrcode:function(){ let that = this; let appid = '想要展示二维码小程序的appid'; let sec = '想要展示二维码小程序的密钥'; wx.request({ //换取access_token 接口 url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appid + '&secret=' + sec, header:{ 'content-type':'application/json' }, success:function(res){ console.log(res); wx:wx.request({ //获得二维码数据接口 url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + res.data.access_token, data: { 'scene': 111,//必填 scene 携带参数,可以在onload页面里面query里面解析出来,详情百度 'page': 'pages/login/login',//必填 具体的小程序页面,但不能携带参数,参数在scene中携带 'line_color': { 'r': 30, 'g': 144, 'b': 255 },//小程序二维码线条颜色 'is_hyaline':true//图片底色是否为透明 }, header: { 'content-type':'application/json' }, method: 'POST', // dataType: 'json', responseType: 'arraybuffer',//将原本按文本解析修改为arraybuffer success: function(res) { that.setData({ imgUrls: wx.arrayBufferToBase64(res.data) }) } }) } }) } ``` .wxml ``` <img src="data:image/png;base64,{{testImg}}" alt="" data-mce-src="data:image/png;base64,{{testImg}}"> ``` ### **Bug & Tip** 1. tip:通过该接口,仅能生成已发布的小程序的二维码。 2. tip:可以在开发者工具预览时生成开发版的带参二维码。 3. 接口A加上接口C,总共生成的码数量限制为100,000,请谨慎调用。 4. tip: POST 参数需要转成 json 字符串,不支持 form 表单提交。 5. tip: auto_color line_color 参数仅对小程序码生效。 ## **错误码** 1. `45009`:B接口调用分钟频率受限(目前5000次/分钟,会调整),如需大量小程序码,建议预生成。 2. `45029`:A接口和C接口生成码个数总和到达最大个数限制。 3. `41030`:B接口所传page页面不存在,或者小程序没有发布,请注意B接口没有path参数,传path参数虽然可以生成小程序码,但是只能跳主页面。
Pre:
小程序版本自动更新的实现
Next:
小程序canvas使用中遇到的问题
0
likes
8
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.