微信生成外部链接
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author
* @date 2022/2/28 14:37
*/
@Slf4j
@AllArgsConstructor
@Component
public class WxUrlUtil {
//刚才注册到spring里面的wxservice
private final WxMaService wxMaService;
/**
* 生成微信跳转链接,用于钉钉跳转
* 目前钉钉内部安卓可以直接跳到微信,但是ios不能跳转
* 但是通过外部浏览器能打开
*
* @param path 微信小程序路径(如果为空默认就进入的是小程序首页)
* @param query 进入小程序的参数(配合有参的路径用)
* @return 微信url,如果生成失败返回一个默认地址
*/
public String getWxUrl(String path, String query) {
try {
String accessToken = wxMaService.getAccessToken();
//构建请求参数
JSONObject paramMap = new JSONObject();
//通过 URL Link 进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带 query 。path 为空时会跳转小程序主页
paramMap.put("path", path);
//小程序页面的参数,直接为:参数=值
if (!StrUtil.isEmpty(query)) {
paramMap.put("query", query);
}
//生成的 URL Link 类型,到期失效:true,永久有效:false
paramMap.put("is_expire", true);
//小程序 URL Link 失效类型,失效时间:0,失效间隔天数:1
paramMap.put("expire_type", 1);
//到期失效的URL Link的失效间隔天数。生成的到期失效URL Link在该间隔时间到达前有效。最长间隔天数为365天。expire_type 为 1 必填
paramMap.put("expire_interval", 60);
//执行post
String generateLinkUrl = "/wxa/generate_urllink?access_token=ACCESS_TOKEN";
String postUrl = generateLinkUrl.replaceAll("ACCESS_TOKEN", accessToken);
String result = HttpUtil.post(postUrl, paramMap.toString());
System.out.println(result);
JSONObject jsonObject = JSONObject.parseObject(result);
String wxUrl = jsonObject.getString("url_link");
return StrUtil.isEmpty(wxUrl) ? "默认地址" : wxUrl;
} catch (Exception e) {
log.error("微信链接生成失败:错误信息:{}", e.getMessage());
}
//如果生成链接失败就返回kpi首页地址
return "默认地址";
}
}