我的小程序之旅四:扫普通二维码进入小程序、打开短链接进入小程序
大家有没有好奇过饭店扫码点餐的时候,小程序是如何打开的?商家是怎么确认桌号的?为什么有的码微信可以扫,支付宝也可以扫?
本篇文章将会给大家介绍:如何通过扫描二维码进入微信小程序。
一、扫普通二维码进入小程序
1、扫码进入小程序管理页
2、点击开发管理-开发设置-扫普通链接二维码打开小程序-添加
3、完善配置内容
(1)协议类型选择https
(2)选择小写
(3)二维码规则,这个看文档有些人估计会比较迷糊,简单理解一下就是一个https的路径
(4)前缀占用规则选择不占用
(5)校验文件,按照说明文档来,这个不难
(6)小程序的功能页面,这个页面就是你扫码要打开的页面
(7)测试范围
(8)测试链接(选填)
有个比较坑的地方,这个如果没有发布到线上,测试规则和测试链接都要一段时间才生效。
4、使用二维码生成工具生成二维码,然后扫码就可以打开了
二、打开短链接进入小程序
1、使用AppId和AppSecret获取token
/** * https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential * 请求参数 属性 类型 默认值 必填 说明 * @param appId string 是 小程序 appId * @param secret string 是 小程序 appSecret * 返回值 * @return JSON 数据包 * 属性 类型 说明 * access_token string token * expires_in string 失效时间 * * errcode 的合法值 * 值 说明 最低版本 * -1 系统繁忙,此时请开发者稍候再试 * 0 请求成功 * 40029 code 无效 * 45011 频率限制,每个用户每分钟100次 */ JSONObject getAccessToken(String appId,String secret);
@Override public JSONObject getAccessToken(String appId, String secret) { String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret; String str = restTemplate.getForObject(url, String.class); log.info("api/wx-mini/getAccessToken:" + str); if (StringUtils.isEmpty(str)) { return null; } else { return JSONObject.parseObject(str); } }
2、构建生成URL Schema的参数
JSONObject data = new JSONObject(); //设置当前链接打开的小程序页面路径 data.put("path","你的小程序页面路径"); //设置跳转到当前页面的参数,参数格式如下 data.put("query", "id=1&status=1"); //当前小程序打开的版本,develop(开发版)、trial(体验版)、release(线上版) data.put("env_version", "develop"); //链接是否会失效,微信官方有限制永久链接的个数 data.put("is_expire", true); //按天数过期 data.put("expire_type", 1); //30天后过期 data.put("expire_interval", 30);
3、生成微信小程序的打开链接
/** * https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN * 请求参数 属性 类型 默认值 必填 说明 * @param accessToken string 是 小程序 发送凭证 * @param data jsonObject 是 小程序 发送数据 * 返回值 * @return JSON 数据包 * 属性 类型 说明 * errmsg string 错误消息 * msgid string 消息ID * * errcode 的合法值 * 值 说明 最低版本 * -1 系统繁忙,此时请开发者稍候再试 * 0 请求成功 * 40029 code 无效 * 45011 频率限制,每个用户每分钟100次 */ JSONObject generateUrlLink(String accessToken ,JSONObject data);
@Override public JSONObject generateUrlLink(String accessToken, JSONObject data) { String url = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + accessToken; return getResult(data, url); } private JSONObject getResult(JSONObject data, String url) { HttpHeaders headers = new HttpHeaders(); HttpMethod method = HttpMethod.POST; // 以表单的方式提交 headers.setContentType(MediaType.APPLICATION_JSON_UTF8); //将请求头部和参数合成一个请求 HttpEntity<JSONObject> requestEntity = new HttpEntity<>(data, headers); //执行HTTP请求,将返回的结构使用ResultVO类格式化 ResponseEntity<JSONObject> response = restTemplate.exchange(url, method, requestEntity, JSONObject.class); return response.getBody(); }
本文来自博客园,作者:sum墨,转载请注明原文链接:https://www.cnblogs.com/wlovet/p/15822898.html