锘?.ajaxSetup({ async: false }); var wxdata = { wx_account: new Array(4), wx_share: new Array(4), wx_myuser: new Array("wxb46dfe1ff545a5da", "adf25c47c40aceb4dcff938b5530679e"), access_token: "", // 鍑瘉 token_expires_in: "", // 鍑瘉杩囨湡鏃堕棿 鍗曚綅锛歴 jsapi_ticket: "", // 鍑瘉 ticket_expires_in: "", // 鍑瘉杩囨湡鏃堕棿 鍗曚綅锛歴 url: "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx8b6311fe67c0c835&secret=f50bd98571e4daa2f55b40bfa833d9e6", // 鑾峰彇access_token // *娉ㄦ剰* 缁忚繃瀹為檯寮€鍙戞祴璇曪紝寰俊鍒嗕韩涓嶆敮鎸佽法鍩熻姹傦紝鍥犳鑾峰彇access_token鐨勮姹傚繀椤讳粠鏈嶅姟鍣ㄥ彂璧凤紝鍚﹀垯鏃犳硶鑾峰彇鍒癮ccess_token get_access_token: function () { $.get("/ajax/gettoken.ashx", { }, function (data) { var dataObj = eval("(" + data + ")"); wxdata.access_token = dataObj.access_token; // 鑾峰彇鍒扮殑浜や簰鍑瘉 闇€瑕佺紦瀛橈紝瀛樻椿鏃堕棿token_expires_in 榛樿涓?200s wxdata.token_expires_in = dataObj.expires_in; // 杩囨湡鏃堕棿 鍗曚綅锛歴 console.log(dataObj.access_token); $.post("/ajax/getjsapi.ashx", { access_token: dataObj.access_token }, function (data) { console.log(data); var dataObj = eval("(" + data + ")"); if (dataObj.errcode == 0) { wxdata.jsapi_ticket = dataObj.ticket; // 闇€瑕佺紦瀛橈紝瀛樻椿鏃堕棿ticket_expires_in 榛樿涓?200s wxdata.ticket_expires_in = dataObj.expires_in; // 杩囨湡鏃堕棿 鍗曚綅锛歴 console.log(dataObj.ticket); $.cookie('data-ticket', dataObj.ticket); } else { console.log("get jsapi_ticket fail"); } }); }); }, // 鑾峰彇jsapi_ticket // *娉ㄦ剰* 缁忚繃瀹為檯寮€鍙戞祴璇曪紝寰俊鍒嗕韩涓嶆敮鎸佽法鍩熻姹傦紝鍥犳鑾峰彇jsapi_ticket鐨勮姹傚繀椤讳粠鏈嶅姟鍣ㄥ彂璧凤紝鍚﹀垯鏃犳硶鑾峰彇鍒癹sapi_ticket get_jsapi_ticket: function () { }, // 鏁版嵁绛惧悕 create_signature: function (nocestr, ticket, timestamp, url) { var signature = ""; // 杩欓噷鍙傛暟鐨勯『搴忚鎸夌収 key 鍊 ASCII 鐮佸崌搴忔帓搴 var s = "jsapi_ticket=" + ticket + "&noncestr=" + nocestr + "×tamp=" + timestamp + "&url=" + url; console.log(s); $.post("/ajax/gets.ashx", { ticket: ticket, nocestr: nocestr, timestamp: timestamp, url: url }, function (data) { $.cookie('data-s', data); console.log(data); }); return $.cookie('data-s'); }, // 鑷畾涔夊垱寤洪殢鏈轰覆 鑷畾涔変釜鏁? < ? < 32 create_noncestr: function () { var str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var val = ""; for (var i = 0; i < 16; i++) { val += str.substr(Math.round((Math.random() * 10)), 1); } return "ifbdikgabhdkchea"; }, // 鑷畾涔夊垱寤烘椂闂存埑 create_timestamp: function () { return "1537784949"; } } wxdata.get_access_token(); // 1 //wxdata.access_token = "B06fRIti5GDmvNLKsV5OkJ4fU1qd3YyyW0cgwenxhqI7XwmpTrpwY6Uc7nNtnumdJvnPJXcACAVPD"; //2 wxdata.get_jsapi_ticket(); //3 //wxdata.jsapi_ticket = "XGEs8VD-_kgoxt8jcijupT7j_EA-nP07ro_MmUNDVD0oR8unfqY4C_YIMXAQvhztlTk8j2A" //4 // ----- 5 寮€濮 ------ var timestamp = wxdata.create_timestamp(); // timestamp var noncestr = wxdata.create_noncestr(); // noncestr var url = window.location.href; wxdata.wx_account[0] = wxdata.wx_myuser[0]; // appid wxdata.wx_account[1] = "1537784949"; // timestamp wxdata.wx_account[2] = "ifbdikgabhdkchea"; // noncestr wxdata.wx_account[3] = wxdata.create_signature(noncestr, $.cookie('data-ticket'), timestamp, url);//signature wxdata.wx_share[0] = "http://www.jzcx.net/images/1.png"; // share_img 鍒嗕韩缂╃暐鍥惧浘鐗 wxdata.wx_share[1] = "http://www.jzcx.net";// share_link 鍒嗕韩椤甸潰鐨剈rl鍦板潃锛屽鏋滃湴鍧€鏃犳晥锛屽垯鍒嗕韩澶辫触 wxdata.wx_share[2] = "";// share_desc wxdata.wx_share[3] = "";// share_title var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ function hex_sha1(s){ return binb2hex(core_sha1(AlignSHA1(s))); } /* * * Calculate the SHA-1 of an array of big-endian words, and a bit length * */ function core_sha1(blockArray) { var x = blockArray; // append padding var w = Array(80); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; for (var i = 0; i < x.length; i += 16) // 姣忔澶勭悊512浣 16*32 { var olda = a; var oldb = b; var oldc = c; var oldd = d; var olde = e; for (var j = 0; j < 80; j++) // 瀵规瘡涓?12浣嶈繘琛?0姝ユ搷浣 { if (j < 16) w[j] = x[i + j]; else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); e = d; d = c; c = rol(b, 30); b = a; a = t; } a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); e = safe_add(e, olde); } return new Array(a, b, c, d, e); } /* * * Perform the appropriate triplet combination function for the current * iteration * * 杩斿洖瀵瑰簲F鍑芥暟鐨勫€ * */ function sha1_ft(t, b, c, d) { if (t < 20) return (b & c) | ((~b) & d); if (t < 40) return b ^ c ^ d; if (t < 60) return (b & c) | (b & d) | (c & d); return b ^ c ^ d; // t<80 } /* * * Determine the appropriate additive constant for the current iteration * * 杩斿洖瀵瑰簲鐨凨t鍊 * */ function sha1_kt(t) { return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514; } /* * * Add integers, wrapping at 2^32. This uses 16-bit operations internally * * to work around bugs in some JS interpreters. * * 灏?2浣嶆暟鎷嗘垚楂?6浣嶅拰浣?6浣嶅垎鍒繘琛岀浉鍔狅紝浠庤€屽疄鐜 MOD 2^32 鐨勫姞娉 * */ function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } /* * * Bitwise rotate a 32-bit number to the left. * * 32浣嶄簩杩涘埗鏁板惊鐜乏绉 * */ function rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } /* * * The standard SHA1 needs the input string to fit into a block * * This function align the input string to meet the requirement * */ function AlignSHA1(str) { var nblk = ((str.length + 8) >> 6) + 1, blks = new Array(nblk * 16); for (var i = 0; i < nblk * 16; i++) blks[i] = 0; for (i = 0; i < str.length; i++) blks[i >> 2] |= str.charCodeAt(i) << (24 - (i & 3) * 8); blks[i >> 2] |= 0x80 << (24 - (i & 3) * 8); blks[nblk * 16 - 1] = str.length * 8; return blks; } /* * * Convert an array of big-endian words to a hex string. * */ function binb2hex(binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for (var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF); } return str; }