微信生成短链接并点击跳转到微信小程序

您所在的位置:网站首页 网站链接生成短链接的方法是 微信生成短链接并点击跳转到微信小程序

微信生成短链接并点击跳转到微信小程序

2024-07-11 03:12| 来源: 网络整理| 查看: 265

        前言:首先我的业务通过短信发链接让用户点击链接跳转进小程序,但是在短信里点击默认跳转到浏览器,浏览器又不支持打开小程序的,正好微信有自带的短链接生成并自己跳转到微信里打开,废话不多说 直接看下面。

一、功能描述  参考微信短链接生成: 获取URLLink | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-link/generateUrlLink.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E

二、操作步骤 1.微信提供的接口 POST https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN 2.在调用上面这个接口之前得先拿到access_token 获取接口调用凭据  GET https://api.weixin.qq.com/cgi-bin/token 3.请求参数及返回参数

4.请求数据示例及返回数据示例

三、示例代码 获取 access_token 工具类 package org.jeecg.modules.message.util; import cn.hutool.http.*; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.util.RedisUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.*; /** * @author rwy * @date 2023-08-04 9:30 */ @Slf4j @Component public class WeChatUtil { @Resource private RedisUtil redisUtil; //微信小程序appId @Value("${wx.xcx.appId}") private String appId; //微信小程序secret @Value("${wx.xcx.appSecret}") private String appSecret; //存入缓存中的缓存名称 自定义 @Value("${spring.application.name}") private String appName; /** * 请求微信接口服务,获取小程序全局唯一后台接口调用凭据(access_token) * @return */ public String getAccessToken() { //如果缓存有token直接拿 if (redisUtil.hasKey(appName+":wx_accss_token")) { return (String) redisUtil.get(appName+":wx_accss_token"); } //没有去取 try { String baseUrl = "https://api.weixin.qq.com/cgi-bin/token"; HashMap requestParam = new HashMap(); // appId requestParam.put("grant_type", "client_credential"); // 唯一凭证id appid:(换成自己的) requestParam.put("appid", appId); // appSecret(小程序的唯一凭证密钥,换成自己的) requestParam.put("secret", appSecret); // 发送GET请求读取调用微信接口获取openid用户唯一标识 String result = HttpUtil.get(baseUrl, requestParam); JSONObject jsonObject = JSONUtil.parseObj(result); log.info("获取微信access_token:"+jsonObject.toString()); if (jsonObject.containsKey("access_token")) { String access_token = jsonObject.getStr("access_token"); redisUtil.set(appName+":wx_accss_token", access_token, 2 * 60 * 60); } else { throw new JeecgBootException("获取微信授权失败!"); } } catch (Exception e) { e.printStackTrace(); } return (String) redisUtil.get(appName+":wx_accss_token"); } } 请求代码 /** * 微信订阅短链接消息 * @param * @param * @return */ public String generateUrllink(){ String result = null; try { // 接口调用凭证:accessToken String accessToken = weChatUtil.getAccessToken(); System.out.println(accessToken); String baseUrl = "https://api.weixin.qq.com/wxa/generate_urllink?access_token="+accessToken; HashMap requestParam = new HashMap(); //跳转自己小程序的链接 requestParam.put("path",""); //带参 例如:id=1 requestParam.put("query",""); String jsonStr = JSONUtil.toJsonStr(requestParam); cn.hutool.http.HttpResponse response = HttpRequest.post(baseUrl) .header(Header.CONTENT_ENCODING, "UTF-8") .header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded") .body(jsonStr) .execute(); if (response.getStatus() == HttpStatus.HTTP_OK) { com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(response.body()); String url_link = jsonObject.getString("url_link"); result =url_link; System.out.println(result); } } catch (Exception e) { e.printStackTrace(); } return result; } 四、效果演示

 

 

温馨提示:记得在微信小程序开发管理里面配置域名啥的 不然跳转不了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3