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

一、前言

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

二、配置实现

1. 小程序码

进入小程序管理后台

下载小程序码物料

2. 公众号菜单

三、开发实现

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

官方文档链接

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

配置流程请往下看。

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

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

(3)完善配置内容

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

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

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

我一般都是使用草料网生成二维码:生成二维码二维码解码

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

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

这是掘金发给我的推广短信,这里面就有一个短链接,有些运营场景中就需要使用这样一个短链接打开指定的微信小程序,并且还需要携带一些参数,微信小程序也支持这种做法,怎么做?继续看。

(1)使用AppId和AppSecret获取token

java 复制代码
/**
 * 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);
java 复制代码
@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的参数

java 复制代码
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)生成微信小程序的打开链接

java 复制代码
/**
 * 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);
java 复制代码
@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接口后,微信就会生成一个打开链接。这里说一下有些短信是按字符长度算短信费用的,如果嫌这个链接太长,可以自己生成一个短链做一下跳转。

相关推荐
tan180°2 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
优创学社23 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
why技术3 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理3 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
汤姆yu3 小时前
基于微信小程序的学校招生系统
微信小程序·小程序·招生小程序
马可奥勒留4 小时前
《你以为职场是过家家?真正的高手都在用「职业化人际关系模型」》
程序员
ai小鬼头4 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
袁煦丞4 小时前
数据库设计神器DrawDB:cpolar内网穿透实验室第595个成功挑战
前端·程序员·远程工作
简佐义的博客4 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang