一、背景
有一个活动页面需要通过短信将页面链接发送出去,链接里面有公众号二维码,用户扫描企业微信二维码可以添加老师领取资料。
二、实现分析
分析:因为是企业微信二维码所以需要在微信里面打开才行。实现方式最初经过分析可能有以下几种:
- 点击短信中活动页面链接拉起微信,然后在微信中打开H5页面。页面中放企业微信二维码然后用户长按识别。
- 点击短信中活动页面链接拉起微信小程序,在小程序中可以跳转h5,然后用户可以长按识别企业微信二维码。
经过分析第一种方式没有找到实现方案,第二种小程序官方给出了三种实现方式:
通过URL Scheme实现
通过服务端接口或在小程序管理后台生成URL Scheme后,自行开发中转H5页面。
将带有中转H5链接的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开小程序。
通过URL Link实现
通过服务端接口生成URL Link。
直接将带有URL Link的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开小程序。
通过云开发静态网站实现
可以参考「云开发」-「静态网站」-「短信跳小程序」。
经过分析以后决定采用通过url link 方式来实现。
三、业务实现
1.首先开发一个H5页面将包含有企业微信的二维码放在h5页面中。
这个页面只要按照UI设计正常开发即可。
2.将页面放到小程序中
在小程序中新建一个页面,然后使用web-view标签嵌套h5页面

此时小程序页面如下:

3.将当前小程序页面根据文档生成url link.
此时页面路径为“pages/index/index”
根据官方文档说明生成URL Link
urllink.generate | 微信开放文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-link/generateUrlLink.html
public static final String URL_LINK_GENE_URL = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN";
/**
* description: getAccessToken 获取微信公众号<br>
* version: 1.0 <br>
* @date: 2021/7/30 0030 下午 2:18 <br>
* @author: William <br>
* @param appId 微信AppID
* @param appSecret 微信授权秘钥
* @return java.lang.String
*/
public static String getAccessToken(String appId,String appSecret) {
String token = null;
Lock lock = new ReentrantLock();
lock.lock();
try {
String requestTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
requestTokenUrl = requestTokenUrl.replace("APPID", appId);
requestTokenUrl = requestTokenUrl.replace("SECRET", appSecret);
WxTokenVo parse = JsonUtils.parse(HttpClientUtil.doGet(requestTokenUrl), WxTokenVo.class);
if(parse != null && StringUtils.isNotBlank(parse.getAccess_token())){
token = parse.getAccess_token();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();
}
return token;
}
public static void main(String[] args) {
String accessToken = getAccessToken(WxtkConfig.LIVE_APP_ID, WxtkConfig.LIVE_APP_SECRET);
String requestUrl = URL_LINK_GENE_URL.replace("ACCESS_TOKEN",accessToken);
Map<String,Object> map = new HashMap<>();
map.put("path","pages/index/index");
map.put("query","");
map.put("env_version","release");
map.put("is_expire",true);
map.put("expire_type",1);
map.put("expire_interval",180);
//需要引入hutool包或者自己封装一个http请求工具类也行
String post = HttpUtil.post(requestUrl, JsonUtils.serialize(map));
System.out.println("post = " + post);
}
请求成功以后会返回url路径,然后将路径放入到短信模板中进行发送就好了。

4.将小程序页面的url link 放到短信模板,然后调用模板发送即可。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96981.html