Dieser Artikel hat den spezifischen Code zum Scannen des WeChat Public -Kontos für Ihre Referenz geteilt. Der spezifische Inhalt ist wie folgt
Schritt
Gemäß der Beschreibung des WeChat JS-JDK-Dokuments gibt es hauptsächlich die folgenden Schritte zum Implementieren von Scannen:
Binden Sie den Domänennamen
Füllen Sie den Domänennamen im Namen der JS -Schnittstellen -Sicherheitsdomain ein. Achten Sie darauf, dass Sie HTTP nicht mitbringen, wie in der Abbildung gezeigt:
JS -Dateien einführen
<script src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script>
Überprüfen Sie die Konfiguration über die Konfigurationsschnittstelle
$ .ajax ({url: "$ {pageContext.Request.ContextPath}/Wechat/jsapisign", Typ: "post", Daten: {url: location.href.Split ('#') [0]}, contentType: application/x-wwww-orm: true-orm: true-orm: usww-orm: rot: rot: rot: orm: (Daten) {Wx.config ({Debug: False, Appid: Data.appid, // Erforderlich, generieren Sie den Signatur -Zeitstempel noncestern: data.noncestern, // Erforderlich generieren Sie eine zufällige Signatur von String Signatur: Data.Signature, // Erforderlich, Signature, Anhang 1 JSAPILIST: ["Scanqrcodes"/ //. alle JS -Schnittstellenlisten;Wechat JSAPI Visa -Überprüfung
public map <string, string> jsapisign (String url) {map <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 = WechatAccessTokenService.getJSapiticket (); // Beachten Sie, dass die Parameternamen hier alle Kleinigkeiten sein müssen und bestellt werden müssen String1 = "jsapi_ticket =" + JSAPI_TICKET + "& NONCESTR =" + NONCE_STR + "× TAMP =" + TIMESTAMP + "& url =" + url; logger.info ("jsapisign ===" + string1); probieren {MessagedIGest crypt = MessagedIGest.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 ("noncest", nonce_str); ret.put ("timestamp", timestamp); ret.put ("Signatur", Signatur); logger.info ("jsapisign === url =" + url + "== jsapi_ticket" + jsapi_ticket + "== nonce_str" + nonce_str + "== Timestamp" + TimessTamp + "== Signature" + Signature); Rückkehr; } public String getJSapiticket () {AugewechatAccessOken WechatAccessTokenMapper.SelectByprimaryKey (jsapiticketId); logger.info ("getJsapiticket ===" + WechatAccessToken.getAccessToken ()); if (Strings.isnullorempy (WeChataccessToken.getAccessToken ()) || WeChataccessToken.getExpiresin () - 100 * 1000 <System.CurrentTimemillis ()) {// leer oder abgelaufen, erfrischend revanusedjsapiticket (); } else {return WeChatAccessToken.getAccessToken (); }}Controller -Layer -Code
@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.tojonstring (SignMap); }JSP -Seite Rezeption CODE CODE
<%@ page contentType = "text/html; charset = utf-8" Sprache = "java"%> <%String path = request.getContextPath (); String basepath = request.getScheme () + ": //" + request.getSerVername () + ":" + request.getServerport () + path + "/";%> <! DocType html public "-// w3c // dtd html 4.01 tranitional // en"> <html Lang = "Zh- charset = "utf-8"> <meta http-äquiv = "x-ua-kompatible" content = "ie = edge"> <meta name = "viewPort" content = "width = 320.1, initial scale = 1, minimal scale = 1, maximal-scale = 1, user-scalable = no" -Regal ". nofollow "> <tits> Scannen Sie den Code, um das Buch </title> <link rel =" stylesheet "href =" http://203.195.235.76/jssdk/css/style.css "/> <script zurückzugeben"/> < src = "http://res.wx.qq.com/open/js/jwexin-1.1.0.js"> </script> <script src = "http://libs.baidu.com/jquery/2.0.0/jquery.js"> </scrip> <link rel = "stilesheet" tection/cs "> </cript> <link rel =" href = "../../../ ressourcen/css/bookDetail.css" rel = "external nofollow"> </head> <body> <div> <img src = "../../../ Ressourcen/Bilder/bloß/return src="../../../resources/images/borrow/scanReturn.png" id="scanQRCode1"> </div></div><script type="text/javascript"> $.ajax({ url: "${pageContext.request.contextPath}/wechat/jsapisign", type: "post", data: { url: location.href.split('#')[0] }, contentType: 'application/x-www-form-urlencoded;charset=utf-8', async: true, success: function (data) { wx.config({ debug: false, appId: data.appid, // Required, the unique identifier of the official account timestamp: data.timestamp, // Required, generate the Zeitstempel des Signature Noncesters: Data.noncestern, // Erforderlich, die zufällige Zeichenfolge der Signatursignatur erzeugen: Datenschütze, // Erforderlich, siehe Anhang 1 JSAPILIST: ["scanqrcode"] // Erforderlich, Liste der zu verwendenden JS -Schnittstellen}); wx.ready (function () {// 9.1.2 scannen Sie den QR -Code und geben Sie das Ergebnis document.querySelector ('#scanqrcode1'). // Das Produkt Barcode nimm das if (url.indexof (",")> = 0) {var temparray = url.split (','); "https://open.weixin.qqq.com/connect/oauth2/authorize?appid=wx96668744efc2b2de&redirect_uri=http://cx.ngrok.xiaomiqiu.cn/wechat/toreturndetetaNdetaNdetaNdet/ToreturndetaNdet/Toreturndet/ToreturndetaNdet/Toreturndet/Toretrack. "& response_type = code & scope = snsapi_base // JSAPI -Schnittstellenstatus initialisieren wx.Error (Funktion (res) {alert ("zurückgegebener Status, indem Sie WeChat JSAPI aufrufen:" + res.errmsg);}); </script> </body> </html>>HINWEIS: Signaturüberprüfungsfehler sind anfällig für die Entwicklung. Wir können durch die Konsistenz der vorderen und hinteren URLs beurteilen. Zweitens beachten Sie, dass der Fehler manchmal darauf zurückzuführen ist, dass der AccessToken nicht aktualisiert wird und erneut aktualisiert werden muss.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.