1. 程式人生 > 其它 >自定義企業微信轉發、分享介面

自定義企業微信轉發、分享介面

一、頁面
<!DOCTYPE html>
<html lang="en">
<script type="text/javascript" src="./static/js/jquery.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<head>
<meta charset="UTF-8">
<title>國聯直通車([[${formDate}]])</title>
<link rel="shortcut icon" href="#"/>
</head>
<div style="width:100%;height:100%">
<img style="width:100%;height:100%" id="image1">
</div>
<script type="text/javascript">
var path1 = "./img/" + "[[${imageName1}]]" + ".png";
var image1 = "[[${ShowImageURL}]]getImageIo.html?fileName=[[${imageName}]]" + ".png&datePath=[[${formDate}]]";
$("#image1").attr("src", image1);
var shareUrl = "[[${shareUrl}]]";
var imageUrl = "[[${imgURL}]]";
var title = "銷售業績榜([[${formDate}]])";
var desc = "統計開始時間:[[${startTime}]]\n統計截止時間:[[${endTime}]]";
//微信配置
wx.config({
beta: true,// 必須這麼寫,否則wx.invoke呼叫形式的jsapi會有問題
debug: true,//除錯開關
appId: "[[${corpid}]]",// 必填,企業微信的corpID
timestamp: "[[${timestamp}]]",// 必填,生成簽名的時間戳
nonceStr: "[[${noncestr}]]",// 必填,生成簽名的隨機串
signature: "[[${signature}]]",// 必填,簽名,見 附錄-JS-SDK使用許可權簽名演算法
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'hideMenuItems']// 必填,需要使用的JS介面列表,凡是要呼叫的介面都需要傳進來
});
wx.ready(function () {
//移除不需要的按鈕
wx.hideMenuItems({
menuList: [
'menuItem:favorite',
'menuItem:copyUrl',
'menuItem:openWithQQBrowser',
'menuItem:share:qq',
'menuItem:readMode',
'menuItem:share:weiboApp',
'menuItem:share:facebook',
'menuItem:share:QZone',
'menuItem:editTag',
'menuItem:delete',
'menuItem:originPage',
'menuItem:readMode',
'menuItem:openWithSafari',
'menuItem:share:email',
'menuItem:share:brand'
],
success: function (res) {
},
fail: function (res) {
}
});
//獲取“轉發”按鈕點選狀態及自定義分享內容介面
wx.onMenuShareAppMessage({
title: title, //分享標題
desc: desc, //分享描述
link: shareUrl, //分享連結
imgUrl: imageUrl,//分享圖片
success: function (res) {
},
cancel: function (res) {
}
});
/*wx.onMenuShareWechat({
title: title, //分享標題
desc: desc, //分享描述
link: shareUrl, //分享連結
imgUrl: imageUrl,//分享圖片
success: function (res) {
alert("success");
},
cancel: function (res) {
alert("cancel"+res);
}
});*/
//獲取“分享到朋友圈”按鈕點選狀態及自定義分享內容介面
wx.onMenuShareTimeline({
title: title, //分享標題
desc: desc,//分享描述
link: shareUrl, // 分享連結
imgUrl: imageUrl, // 分享圖示
success: function (res) {
},
cancel: function (res) {
}
});
});
//自定義轉發到會話
wx.invoke(
"shareAppMessage", {
title: title, //分享標題
desc: desc,//分享描述
link: shareUrl, // 分享連結
imgUrl: imageUrl, // 分享圖示
}, function (res) {
if (res.err_msg == "shareAppMessage:ok") {
}
}
);
//自定義轉發到微信
wx.invoke(
"shareWechatMessage", {
title: title, //分享標題
desc: desc,//分享描述
link: shareUrl, // 分享連結
imgUrl: imageUrl, // 分享圖示
}, function (res) {
if (res.err_msg == "shareWechatMessage:ok") {
}
}
);
wx.error(function (res) {
// config資訊驗證失敗會執行error函式,如簽名過期導致驗證失敗,具體錯誤資訊可以開啟config的debug模式檢視,也可以在返回的res引數中檢視,對於SPA可以在這裡更新簽名。
});
</script>
</html>

二、後臺
@RequestMapping("/msgShow.html")
public String dataShow(Model model, String params) {
JSONObject param = JSONObject.parseObject(params);
String imageName = param.getString("imageName");
String startTime = param.getString("startTime");
String endTime = param.getString("endTime");
String date = param.getString("date");
String sign = param.getString("sign");
log.info("訊息展示請求,imageName:{},date:{}", imageName, date);
// MD5簽名
String signVerify = MD5.MD5Encode(imageName + startTime + endTime + date + "Oqw13w");
String noncestr = UUID.randomUUID().toString().replace("-", "").substring(0, 16);//隨機字串 ;
String jsapi_ticket = redisUtil.getString("WorkWeiXin:getAddressBookJsapiTicketToken");
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);//時間戳
String url = msgSkipURL + "params=" + URLEncoder.encode(params);
log.info("轉發連結:{}", url);
String signature = SecuritySHA1Util.encodePassword("jsapi_ticket=" + jsapi_ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + url);
if (!signVerify.equals(sign)) {
log.info("驗籤失敗");
model.addAttribute("errorMsg", "驗籤失敗");
return "error";
} else {
log.info("驗籤成功");
model.addAttribute("corpid", corpid)
.addAttribute("noncestr", noncestr)
.addAttribute("timestamp", timestamp)
.addAttribute("signature", signature)
//個人業績十強圖
.addAttribute("imageName", imageName)
.addAttribute("startTime", startTime)
.addAttribute("endTime", endTime)
.addAttribute("imgURL", imgURL)
//報表標題顯示日期
.addAttribute("formDate", date)
//圖片地址
.addAttribute("ShowImageURL", ShowImageURL)
.addAttribute("shareUrl", url);
}
return "msgShow";
}