Artikel ini telah membagikan kode spesifik pemindaian akun publik WeChat untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
melangkah
Menurut deskripsi dokumen WeChat JS-JDK, terutama ada langkah-langkah berikut untuk mengimplementasikan pemindaian:
Mengikat nama domain
Isi nama domain dalam nama domain keamanan antarmuka JS, berhati -hatilah untuk tidak membawa http, seperti yang ditunjukkan pada gambar:
Memperkenalkan file JS
<skrip src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script>
Verifikasi konfigurasi melalui antarmuka konfigurasi
$ .AJAX ({url: "$ {pagecontext.Request.contextPath}/weChat/jsapisign", type: "Post", data: {url: location.href.split ('#') [0]}, contentType: 'Application/X-WWW-Form-Form-urlency (0. {wx.config ({debug: false, appid: data.appid, // Diperlukan, menghasilkan tanda waktu tanda tangan noncestr: data.nonCestr, // Diperlukan, menghasilkan tanda tangan string acak: data. Daftar antarmuka;}});Verifikasi visa jsapi wechat
peta publik <string, string> jsapisign (string url) {peta <string, string> ret = new HashMap <string, string> (16); String nonce_str = checkutil.create_nonce_str (); String timestamp = checkutil.create_timestamp (); String string1; String Signature = ""; String jsapi_ticket = wechatacaccesstokenService.getjsapiticket (); // Perhatikan bahwa nama parameter di sini harus semua huruf kecil dan harus dipesan string1 = "jsapi_ticket =" + jsapi_ticket + "& noncestr =" + nonce_str + "× tamp =" + timestamp + "& url =" + url; logger.info ("jsapisign ===" + string1); Coba {MessageDigest crypt = MessageSpetedigest.getInstance ("sha-1"); crypt.reset (); crypt.update (string1.getbytes ("UTF-8")); Signature = checkutil.bytetohex (crypt.digest ()); } catch (nosuchalgorithmException | unsupportedencodingException e) {e.printstacktrace (); } ret.put ("appid", appID); ret.put ("url", url); ret.put ("jsapi_ticket", jsapi_ticket); ret.put ("noncestr", nonce_str); ret.put ("timestamp", cap waktu); ret.put ("tanda tangan", tanda tangan); logger.info ("jsapisign === url =" + url + "== jsapi_ticket" + jsapi_ticket + "== nonce_str" + nonce_str + "== timestamp" + timesstamp + "== tanda tangan" + tanda tangan); kembali kembali; } string publik getjsapiticket () {augewechatacaccesstoken wechataccesstokenmapper.selectbyprimarykey (jsapiticketid); logger.info ("getjsapiticket ===" + wechataccesstoken.getAccessToken ()); if (strings.isnullorempty (wechatacaccesstoken.getAccessToken ()) || wechataccesstoken.getExpiresin () - 100 * 1000 <system.currentTimeMillis ()) {// kosong atau kedaluwarsa, refresh retress refreshjsapiticket (); } else {return wechatacaccesstoken.getAccessToken (); }}Kode Lapisan Pengontrol
@RequestMapping(value = "/jsapisign", method = {RequestMethod.GET, RequestMethod.POST}, produces = MEDIATYPE_CHARSET_JSON_UTF8) @ResponseBody public String jsApiSign(String url) { //Add WeChat js signature information Map<String, String> signMap = wechatService.jsApiSign(url); return json.tojsonstring (tanda tangan); }Kode Lengkap Halaman JSP Meja Depan
<%@ page contentType = "text/html; charset = utf-8" bahasa = "java"%> <%string path = request.getContextPath (); String BasePath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/";%> <! Doctype html public "-// w3c // dtd html 4.01 Transisi // en"> <html lang = "zh"> <"zh-c =" html lang = "zh =" html lang = "html lang =" html lang = "html lang =" charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=320.1,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><head> <base href="<%=basePath%>" rel="external nofollow" > <title> Pindai kode untuk mengembalikan buku </iteme> <tautan rel = "stylesheet" href = "http://203.195.235.76/jssdk/css/style.css"/<script src = "http://res.wx.qqq.com/pript =" http://res.wx.qqq.com/pript = "http://res.wx.qq. src = "http://libs.baidu.com/jquery/2.0.0/jquery.js"> </script> <tautan rel = "stylesheet" type = "text/css" href = "../../ sumber daya/css/bookDetail.css" rel = "eksternal nofover"/css </bookdetail.css "rel =" eksternal nofover " src = "../../../ sumber daya/gambar/pinjaman/kembali $ .AJAX ({url: "$ {pagecontext.Request.contextPath}/weChat/jsapisign", type: "Post", data: {url: location.href.split ('#') [0]}, contentType: 'Application/X-WWW-Form-Form-urlency (0. {wx.config ({debug: false, appid: data.appid, // Diperlukan, pengidentifikasi unik dari cap waktu akun resmi: data.timestamp, // Diperlukan, menghasilkan stempel waktu dari tanda tangan noncestr: data.noncestr, // yang diperlukan, menghasilkan string acak dari tanda tangan tanda tangan: data. ["Scanqrcode"] // Diperlukan, daftar antarmuka JS yang akan digunakan}); WX.ready (function () {// 9.1.2 Pindai kode QR dan kembalikan dokumen hasilnya. QuerySelector ('#scanqrcode1'). Onclick = function () {wx.scanqrcode ({NeedResult: 1, desc: 'scanqrcode desc', function: rev (result) {scc: scanqrcode ', function: function (rest) res.Resultstr; // Barcode Produk, ambil IF (url.indexof (",")> = 0) {var temparray = url.split (','); "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx96668744efc2b2de&redirect_uri=http://cx.ngrok.xiaomiqiuu.cn/wechat/cxrok.ngrok.xiaomiqiuu.cn "& Response_Type = CODE & SCOPE = SNSAPI_BASE & State = Bindface#WeChat_Redirect"; // inisialisasi status antarmuka JSAPI wx.error (function (res) {alert ("status yang dikembalikan dengan memanggil weChat jsapi:" + res.errmsg);}); </script> </body> </html>Catatan: Kesalahan verifikasi tanda tangan rentan terjadi selama pengembangan. Kita dapat menilai melalui konsistensi URL ujung depan dan belakang. Kedua, perhatikan bahwa kadang -kadang kesalahan adalah karena AccessToken tidak disegarkan dan perlu disegarkan lagi.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.