1. 程式人生 > >微信網頁開發分享

微信網頁開發分享

首先提供一個微信官方地址點選開啟連結

早期web專案中經常用到微信分享功能,現在整理一下,供記憶與分享,開發環境為JAVA +H5。

1、微信的開發環境不在多說,大概為:使用已備案的域名,設定“公眾號設定”的三項域名、

設定開發者密碼(AppSecret)、除錯通過核心服務地址。

2、公眾平臺以access_token為介面呼叫憑據,來呼叫介面,所有介面的呼叫需要先獲取access_token,access_token在2小時內有效,過期需要重新獲取,但1天內獲取次數有限,開發者需自行儲存。線上測試地址點選開啟連結

 介面地址:JSAPI_Access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";


 提供必要引數: String tokenURL=JSAPI_Access_token+"&appid="+appid+"&secret="+secret;3、用第一步拿到的access_token 採用http GET方式請求獲得jsapi_ticket(有效期7200秒,開發者必須在自己的服務全域性快取jsapi_ticket);

String JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi";

以上JS-SDK介面是基礎,比較簡單,注意細節即可。

4、簽名計算

public static Map<String, String> sign(String jsapi_ticket, String url) {
		Map<String, String> ret = new HashMap<String, String>();
		String nonce_str = echostr();
		String timestamp = getTimeStamp();
		String string1;
		String signature = "";
		string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "timestamp=" + timestamp + "&url=" + url;
		//System.out.println(string1);
		try {
			MessageDigest crypt = MessageDigest.getInstance("SHA-1");
			crypt.reset();
			crypt.update(string1.getBytes("UTF-8"));
			signature = byteToHex(crypt.digest());
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		ret.put("url", url);
		ret.put("jsapi_ticket", jsapi_ticket);
		ret.put("nonceStr", nonce_str);
		ret.put("timestamp", timestamp);
		ret.put("signature", signature);
		return ret;
	}
5、WEB前端js函式封裝,頁面載入是註冊分享事件
function wxSharecfg(response, setFx) {
    var Request = new Object();
    Request = GetRequest();
    var d = Request["demo"];
    wx.config({
        debug: false,
        appId: response.appId,
        timestamp: response.timestamp,
        nonceStr: response.nonceStr,
        signature: response.signature,
        jsApiList: [
            'checkJsApi',
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'onMenuShareQQ',
            'onMenuShareWeibo',
            'onMenuShareQZone'
        ]
    });
    wx.ready(function () {
        var shareData = {
            imgUrl: urlStr ,//圖片地址
            link: url,
            title: "標題",
            desc: setFx.desc,
            success: function (res) {
                //alert('已分享');    
            },
            fail: function (res) {
                    //'分享失敗!'
            }
        };
        wx.onMenuShareAppMessage(shareData);
        wx.onMenuShareTimeline(shareData);
        wx.onMenuShareQQ(shareData);
        wx.onMenuShareWeibo(shareData);
        wx.onMenuShareQZone(shareData);
    });
}