บทความนี้ได้แชร์รหัสเฉพาะของการสแกนบัญชีสาธารณะ WeChat สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
ขั้นตอน
ตามคำอธิบายเอกสาร WeChat JS-JDK ส่วนใหญ่มีขั้นตอนต่อไปนี้ในการสแกน:
ผูกชื่อโดเมน
กรอกชื่อโดเมนในชื่อโดเมนความปลอดภัยของอินเตอร์เฟส JS ระวังอย่านำ HTTP ดังแสดงในรูป:
แนะนำไฟล์ JS
<script src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script>
ตรวจสอบการกำหนดค่าผ่านอินเตอร์เฟสการกำหนดค่า
$ .ajax ({url: "$ {pageContext.request.contextpath}/weChat/jsapisign", ประเภท: "โพสต์", ข้อมูล: {url: location.href.split ('#') [0]}, contenttype: 'แอปพลิเคชัน {wx.config ({debug: false, appid: data.appid, // จำเป็น, สร้างการกำหนดเวลาลายเซ็น noncestr: data.noncestr, // จำเป็นต้องสร้างลายเซ็นสตริงแบบสุ่ม: data.signature, // จำเป็นต้องใช้ รายการอินเตอร์เฟส;}});การตรวจสอบวีซ่า WeChat JSAPI
แผนที่สาธารณะ <สตริง, สตริง> jsapisign (สตริง url) {แผนที่ <สตริง, สตริง> ret = new hashmap <สตริง, สตริง> (16); String nonce_str = checkutil.create_nonce_str (); String timestamp = checkutil.create_timestamp (); สตริงสตริง 1; String Signature = ""; String JSAPI_TICKET = WECHATACCESSTOKENSERVICE.GETJSAPITICKET (); // โปรดทราบว่าชื่อพารามิเตอร์ที่นี่จะต้องเป็นตัวพิมพ์เล็กทั้งหมดและจะต้องสั่งซื้อ string1 = "jsapi_ticket =" + jsapi_ticket + "& noncestr =" + nonce_str + "× tamp =" + timestamp + "& url =" + url; logger.info ("jsapisign ===" + string1); ลอง {MessageGeSest Crypt = MessageGeSt.getInstance ("sha-1"); crypt.reset (); crypt.update (String1.getBytes ("UTF-8")); signature = checkutil.bytetohex (crypt.digest ()); } catch (nosuchalgorithmexception | unsupportencodingexception 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", การประทับเวลา); ret.put ("ลายเซ็น", ลายเซ็น); logger.info ("jsapisign === url =" + url + "== jsapi_ticket" + jsapi_ticket + "== nonce_str" + nonce_str + "== timestamp" + timesstamp + "== signature" + ลายเซ็น); ผลตอบแทนผลตอบแทน; - Public String GetJSapiticket () {augeWechataccessToken WeChataccessTokenMapper.SelectByPrimaryKey (JSapiticketId); logger.info ("getjsapiticket ===" + wechataccessToken.getAccessToken ()); if (strings.isnullorEmpty (wechataccessToken.getAccessToken ()) || wechataccessToken.getExpiresin () - 100 * 1000 <System.currentTimeMillis ()) {// ว่างเปล่าหรือหมดอายุ } else {return wechataccessToken.getAccessToken (); -รหัสเลเยอร์คอนโทรลเลอร์
@RequestMapping (value = "/jsapisign", method = {requestMethod.get, requestMethod.post}, ผลิต = mediaType_Charset_json_utf8) @ResponseBody สตริงสาธารณะ jsapisign return json.tojsonstring (signmap); -รหัสที่สมบูรณ์ของหน้า JSP แผนกต้อนรับส่วนหน้า
<%@ page contentType = "text/html; charset = utf-8" language = "java"%> <%String Path = request.getContextPath (); String basepath = request.getScheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/";%> <! charset = "utf-8"> <meta http-equiv = "x-ua-compatible" เนื้อหา = "ie = edge"> <meta name = "viewport" content = "ความกว้าง = 320.1, ระดับเริ่มต้น = 1, ระดับต่ำสุด = 1 nofollow "> <title> สแกนรหัสเพื่อส่งคืนหนังสือ </title> <link rel =" stylesheet "href =" http://203.195.235.76/jssdk/css/style.css "/> <สคริปต์ src = "http://res.wx.qq.com/open/js/jweixin-1.1.0.js"> </script> <script src = "http://libs.baidu.com/jquery/2.0.0/jquery.js" href = "../../../ ทรัพยากร/css/bookdetail.css" rel = "nofollow ภายนอก"> </head> <body> <div> <img src = "../../../ ทรัพยากร/ภาพ/ยืม/return.png" src = "../../../ ทรัพยากร/รูปภาพ/ยืม/scanreturn.png" id = "scanqrcode1"> </div> </div> <script type = "text/javascript"> $ .ajax ({url: "$ {pagecontext.request.context.context location.href.split ('#') [0]}, contentType: 'แอปพลิเคชัน/x-www-form-urlencoded; charset = utf-8', async: จริง, ความสำเร็จ: ฟังก์ชั่น (data) {wx.config ({debug: เท็จ การประทับเวลาของ NONCESTION Signature: data.noncestr, // จำเป็น, สร้างสตริงสุ่มของลายเซ็นลายเซ็น: data.signature, // จำเป็น, ดูภาคผนวก 1 Jsapilist: ["Scanqrcode"] // จำเป็นต้องใช้รายการอินเทอร์เฟซ JS ที่จะใช้}); wx.ready (function () {// 9.1.2 สแกนรหัส QR และส่งคืนเอกสารผลลัพธ์ QUARYSELECTER ('#SCANQRCODE1'). ONCLICK = FUNCTION () {WX.SCANQRCODE ({NeedResult: 1, desc: 'scanqRcode Res.resultstr; "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx966687444efc2b2de&redirect_uri=http://cx.ngrok.xiamiqiu.cn/wechat/toreturnderdet "& response_type = code & scope = snsapi_base & state = bindface#wechat_redirect"; // เริ่มต้นสถานะอินเตอร์เฟส JSAPI wx.error (ฟังก์ชั่น (res) {alert ("สถานะที่ส่งคืนโดยเรียก weChat JSAPI:" + res.errmsg);}); </script> </body> </html>หมายเหตุ: ข้อผิดพลาดการตรวจสอบลายเซ็นมีแนวโน้มที่จะเกิดขึ้นระหว่างการพัฒนา เราสามารถตัดสินผ่านความสอดคล้องของ URL ด้านหน้าและด้านหลัง ประการที่สองโปรดทราบว่าบางครั้งข้อผิดพลาดเป็นเพราะ AccessToken ไม่ได้รีเฟรชและจำเป็นต้องได้รับการรีเฟรชอีกครั้ง
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น