likes
comments
collection
share

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

作者站长头像
站长
· 阅读数 5

一、前言

如果微信小程序只能通过微信打开,那么它的普及程度肯定不如现在这样广泛。为了适应不同的使用场景,微信小程序提供了多种打开方式,包括直接跳转、扫码进入等。不过,有些方法如通过普通二维码或短链接打开小程序,需要开发者的参与才能实现。下面,我将详细介绍这些需要开发介入的打开方式。

二、配置实现

1. 小程序码

进入小程序管理后台 微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

下载小程序码物料

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

2. 公众号菜单

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

三、开发实现

1. 扫普通二维码打开小程序

官方文档链接

最常见的就是我们去饭店吃饭,桌子上有一个二维码,扫这个码不仅可以打开微信小程序,还可以确认桌号,打开指定的小程序页面,而不是首页。

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

配置流程请往下看。

(1)扫码进入小程序管理页

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

(2)点击开发管理-开发设置-扫普通链接二维码打开小程序-添加

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

(3)完善配置内容

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接)

  1. 协议类型选择https;
  2. 选择小写;
  3. 二维码规则,这个看文档有些人估计会比较迷糊,简单理解一下就是一个https的路径;
  4. 前缀占用规则选择不占用;
  5. 校验文件,按照说明文档来,这个最难搞;
  6. 小程序的功能页面,这个页面就是你扫码要打开的页面;
  7. 测试范围,视情况而定;
  8. 测试链接(选填,有个比较坑的地方,这个如果没有发布到线上,测试规则和测试链接都要一段时间才生效)。

关于上面那个第五点,我们必须知道微信小程序开发有一个概念:业务域名,关于这个可以看我这篇文章 微信小程序开发设置中服务器域名和业务域名

(4)使用二维码生成工具生成二维码,然后扫码就可以打开了

微信小程序生态4:打开小程序的一些方式(小程序码、普通二维码、短链接) 我一般都是使用草料网生成二维码:生成二维码二维码解码

2. 打开短链接进入小程序

官方文档链接 这个东西的场景光说可能有点懵,看一张图就知道了

(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;
    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();
 }

调用完generate_urllink接口后,微信就会生成一个打开链接。这里说一下有些短信是按字符长度算短信费用的,如果嫌这个链接太长,可以自己生成一个短链做一下跳转。