В этой статье поделился конкретный код сканирования публичной учетной записи 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", type: "post", data: {url: location.href.split ('#') [0]}, ContentType: 'Application/x-WW-form-urlencoded; charset; {wx.config ({debug: false, appid: data.appid, // требуется Списки интерфейса JS;Visa Visa WeChat JSAPI
public Map <string, string> jsapisign (string url) {map <string, string> ret = new hashmap <string, string> (16); String nonce_str = ceckutil.create_nonce_str (); String TimeStamp = CheckUtil.create_timestAmp (); String String1; String signature = ""; String jsapi_ticket = weChataccesstokenservice.getjsapiticket (); // Обратите внимание, что имена параметров здесь должны быть все строчные и должны быть заказаны string1 = "jsapi_ticket =" + jsapi_ticket + "& noncestr =" + nonce_str + "× tamp =" + timestamp + "& url =" + url; logger.info ("jsapisign ===" + string1); try {messagegest 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 ("noncestr", nonce_str); ret.put ("TimeStamp", TimeStamp); ret.put ("подпись", подпись); logger.info ("jsapisign === url =" + url + "== jsapi_ticket" + jsapi_ticket + "== nonce_str" + nonce_str + "== timestamp" + timesstamp + "== Сигнатура" + сигнатура); возврат возврата; } public String getjsapiticket () {augewechataccesstoken wechataccesstokenmapper.selectbyprimarykey (jsapiticketid); logger.info ("getjsapiticket ===" + weChataccessToken.getAccessToken ()); if (strings.isnullorempty (weChataccessToken.getAccessToken ()) || weChataccessToken.getExpiresIn () - 100 * 1000 <System.currentTimeMillis ()) {// пусто или истек, обновленная вернуть rebreshJsApiticket (); } else {return weChataccessToken.getAccessToken (); }}Код уровня контроллера
@Requestmapping (value = "/jsapisign", method = {requestMethod.get, requestMethod.post}, presectes = mediaType_charset_json_utf8) @ResponseBody public String jsApisign (string url) {// Добавить WeChat JS -сигнатусную карту <string> signmap = wechatservice. вернуть json.tojsonstring (signmap); }Страница на стойке регистрации
<%@ page contentType = "text/html; charset = utf-8" language = "java"%> <%string path = request.getContextPath (); String basePath = request.getScheme () + ": //" + request.getServername () + ":" + request.getServerport () + path + "/";%> <! Doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <html lang = "zh-cn"> <Teta-CN "ZH-CN"> <Teta-CN "> <Teta-CN"> <Teta-CN "ZH-CN charset = "utf-8"> <meta http-equiv = "x-ua-compeatible" content = "ie = edge"> <meta name = "viewport" content = "width = 320,1, начальная шкала = 1, минимальный шкал = 1, максимальная шкала = 1, пользовательский scallable = no"> <head> <base href = "<%-nafale = 1, use-scallable = no"> <head> <base href = "<%= nof>" nof> ". <TILE> Сканируйте код, чтобы вернуть книгу </title> <Link rel = "styleSheet" href = "http://203.195.235.76/jssdk/css/style.css"/> <script src = "http://res.wx.qq.com/open/js/jexin-1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1. <script src = "http://libs.baidu.com/jquery/2.0.0/jquery.js"> </script> <link rel = "stylesheep" type = "text/css" href = "../../../ Resources/css/bookDetail.css" rel -noflold "> </head> <imbod> <imbod> </im -gobdetail.css" reflowlold "> </imge -gobdetail.css". src = "../../../ Resources/Images/Bourn/return.png"> <div style = "text-align: center; founal-color: #f5f5f5;"> <img src = "../../ ../ Ресурсы/Изображения/Заимствование/Scanreturn.png" id = "scanqrcode1"> </div> </div> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <cript> <script. $ .ajax ({url: "$ {pagecontext.request.contextPath}/weChat/jsapisign", type: "post", data: {url: location.href.split ('#') [0]}, ContentType: 'Application/x-WW-form-urlencoded; charset; {wx.config ({debug: false, appid: data.appid, // требуется, уникальный идентификатор официальной временной метки учетной записи: data.timestamp, // требуется, генерируйте временную метку подписной неэкровки: data.noncestr, //, генерируйте случайную строку сигнатуры сигнатуры: data.signature, // требуется, см. appendistx: hapendistx: hapendistx: appendistx: appendistx: appendistx: appendistx: appendistx: см. ["scanqrcode"] // требуется, список интерфейсов JS, которые будут использоваться}); wx.ready (function () {// 9.1.2 Сканировать QR -код и вернуть результат document.queryselector ('#scanqrcode1'). onclick = function () {wx.scanqrcode ({euldresult: 1, desc: 'scanqrcode desc', res ur ur ur ur ur ur ur ur ur ur ur ur ur ur or ur ur ur or Res.Resultstr; "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx96668744445b2b2de&redirect_uri=http://cx.ngrok.xioomiqiu.cn/wechat/toretrurndet? "response_type = code & scope = snsapi_base & state = bindface#weChat_redirect"; // Инициализировать статус интерфейса jsapi wx.error (function (res) {alert («Возвращенный статус, вызовив WeChat jsapi:" + res.errmsg);}); </script> </body> </html>ПРИМЕЧАНИЕ. Ошибки проверки подписи подвергаются возникновению во время разработки. Мы можем судить по последовательности URL -адресов переднего и заднего конец. Во -вторых, обратите внимание, что иногда ошибка заключается в том, что AccessToken не обновляется и должен снова обновляться.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.