/**
* 方法名:getWxConfig</br>
* 詳述:獲取微信的配置信息 </br>
* @param
* @return 說明返回值含義
* @throws
*/
public Map<String, String> getWxConfig(HttpServletRequest request, HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
Map<String, String> ret = new HashMap<>();
//獲取前臺傳來的三個參數
String timestamp = WXPayUtil.getCurrentTimestamp()+"";
String nonce_str = WXPayUtil.generateNonceStr();
String url = request.getParameter("url");
logger.info("url"+url+"==============="+nonce_str+"============"+timestamp);
//從緩存中讀取token信息,如果沒有則獲取一個新的token,通過token獲取ticket信息
String access_token = (String)request.getSession().getAttribute("access_token");
if(access_token == null) {
/** 獲取AccessToKen*/
String getAccessToKen = "https://api.weixin.qq.com/cgi-bin/token?"
+ "grant_type=client_credential&appid="+env.getProperty("wxlog.appid")+"&secret="+ env.getProperty("wxlog.appsecret");
String jsonObject = MyHttpUtils.doPost(getAccessToKen,"",Charset.forName("UTF-8").toString());
JSONObject rq = JSON.parseObject(jsonObject);
/**獲取jsapi_ticket*/
String getTicket = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+rq.get("access_token").toString()+"&type=jsapi";
String rest = MyHttpUtils.doPost(getTicket,"",Charset.forName("UTF-8").toString());
JSONObject re = JSON.parseObject(rest);
/**將信息保存入緩存中*/
request.getSession().setAttribute("token", rq.get("access_token").toString());
request.getSession().setAttribute("ticket", re.get("ticket").toString());
}
/**生成簽名*/
String ticket = (String)request.getSession().getAttribute("ticket"); //微信返回的ticket
String signature = shareUtil.getSignature(ticket,url,nonce_str,timestamp); //獲取簽名
ret.put("appId", env.getProperty("wxlog.appid"));
ret.put("nonceStr", nonce_str);
ret.put("timestamp", timestamp);
ret.put("signature", signature);
return ret;
}
---------------------------------------------------------------------------------
var url2=location.href.split('#')[0];
function getwxconfing(title,pretext,preimage){
mui.post('/wxpya/getWxConfig',
{
url:url2
},
function (data) {
console.log(url);
console.log(data);
if (data!=undefined) {
wx.config({
debug: false, // 開啓調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時纔會打印。
appId: data.appId, // 必填,公衆號的唯一標識
timestamp: data.timestamp, // 必填,生成簽名的時間戳
nonceStr: data.nonceStr, // 必填,生成簽名的隨機串
signature: data.signature,// 必填,簽名
jsApiList: [//需要調用的JS接口列表
'checkJsApi',//判斷當前客戶端版本是否支持指定JS接口
'onMenuShareAppMessage',//分享給好友
'onMenuShareTimeline'//分享到朋友圈
]
});
var config = {
title: title, // 分享標題
desc: pretext, // 分享描述
link: url, // 分享鏈接
imgUrl: imgsrcpath()+preimage,
success: function () { /*$.alert("成功分享");*/ },
cancel: function () { /*$.alert("分享失敗,您取消了分享!");*/ }
};
wx.ready(function () {
wx.onMenuShareAppMessage(config);
wx.onMenuShareTimeline(config);
});
}
}, 'json'
)
}