이 기사는 귀하의 참조를 위해 WeChat 공개 계정을 스캔하는 특정 코드를 공유했습니다. 특정 내용은 다음과 같습니다
단계
WeChat JS-JDK 문서 설명에 따르면 주로 스캔을 구현하기위한 다음 단계가 있습니다.
도메인 이름을 바인딩합니다
JS 인터페이스 보안 도메인 이름에서 도메인 이름을 작성하고 그림과 같이 HTTP를 가져 오지 않도록주의하십시오.
JS 파일을 소개합니다
<script src = "http://res.wx.qq.com/open/js/jweixin-1.0.js"> </script>
구성 인터페이스를 통해 구성을 확인하십시오
$ .ajax ({url : "$ {pagecontext.request.contextpath}/wechat/jsapisign", type : "post", data : {url : location.href.split ( '#') {wx.config ({debug : false, appid : data.appid, // 필수, 서명 timestamp noncestr : data.noncest, // 필수, data.signature, // 필수, 서명, 부록 1 jsapilist : [ "scanqrcode", retfends, be be be be be be be be be be be be be be be be be be be be be be be be be be be be in js in a js 참조. 인터페이스 목록;}});Wechat Jsapi 비자 확인
public map <string, String> jsapisign (String URL) {map <String, String> ret = new Hashmap <String, String> (16); 문자열 nonce_str = checkutil.create_nonce_str (); String timestamp = checkutil.create_timestamp (); 문자열 string1; 문자열 서명 = ""; 문자열 jsapi_ticket = wechataccesstokenservice.getJsapiticket (); // 여기서 매개 변수 이름은 모두 소문자 여야하며 string1 = "jsapi_ticket =" + jsapi_ticket + "& noncest =" + nonce_str + "× tamp =" + timestamp + "& url =" + url; logger.info ( "jsapisign ===" + string1); try {messageDigest crypt = messageDigest.getInstance ( "SHA-1"); crypt.reset (); crypt.update (String1.getBytes ( "UTF-8")); 서명 = 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 ( "타임 스탬프", 타임 스탬프); ret.put ( "서명", 서명); logger.info ( "jsapisign === url =" + url + "== jsapi_ticket" + jsapi_ticket + "== nonce_str" + nonce_str + "== timestamp" + timesstamp + "== 서명" + 서명); 반품 반환; } 공개 문자열 getJsapiticket () {augewechataccesstoken wechataccesstokenmapper.selectbyprimarykey (jsapiticketid); logger.info ( "getjsapiticket ===" + wechataccesstoken.getAccessToken ()); if (strings.isnullorEmpty (wechataccesstoken.getAccessToken ()) || wechataccesstoken.getexpiresin () - 100 * 1000 <System.currentTimeMillis ()) {// 비어 있거나 만료되면 Reforte ReportyJsapiticket (); } else {return wechataccessToken.getAccessToken (); }}컨트롤러 계층 코드
@requestmapping (value = "/jsapisign", method = {requestmethod.get, requestmethod.post}, comperes = mediatype_charset_json_utf8) @ResponseBody public String jsapisign (String URL) {// wechat js 서명 정보 맵 <string, string> sidmap = wechatservice. 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 + "/";%> <! doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <html lang = "zh-cn"> charset = "utf-8"> <meta http-equiv = "x-ua-catsible"content = "ie = edge"> <meta name = "viewport"content = "width = 320.1, minimum-scale = 1, maximum-scale = 1, user-scalable = no"> <base href = <%= basepateal> " nofollow "> <title> 책을 반환하기 위해 코드를 스캔 </title> <link rel ="stylesheet "href ="http://203.195.235.76/jssdk/css/style.css "/> <script src = "http://res.wx.qq.c.com/open/js/jweixin-1.1.js"> </script> <script src = "http://libs.baidu.com/jquery/2.0.0/jquery.js"> href = "../../../ resources/css/bookdetail.css"rel = "external nofollow"> </head> <body> <div> <img src = "../../../ resources/images/borring/return.png"> <div style = "text-align : center; background-color : #f5f5f5;"> src = "../../../ 리소스/이미지/borrow/scanreturn.png"id = "scanqrcode1"> </div> <script type = "text/javaScript"> $ .ajax ({url : "$ {pagecontext.request.contextPath}/wechat/jsapisign", type : "post" location.href.split ( '#') [0]}, contenttype : 'Application/x-www-form-urlencoded; charset = utf-8', async : true, success : function (data) {wx.config ({debug : false : false : appid : data.appid, // 요구, 데이터의 고유 한 식별자 timestamp : timestamp : timestamp : timestamp : timestamp : timestamp : timestamp : 시그니처의 타임 스탬프 : data.noncest, // 필수 서명 서명의 임의 문자열을 생성합니다. data.signature, // revendix 1 jsapilist : [ "scanqrcode"] // restface}); wx.ready (function () {// 9.1.2 QR 코드를 스캔하고 결과 문서를 반환합니다. QuerySelector ( '##scanqrcode1'). onclick = function () {wx.scanqrcode ({wx.scanqrcode : 1, desc : 'scanqrcode desc', success : function (res) {res)에 대한 결과 매개 변수를 얻습니다. // 제품 바코드, if (url.indexof ( ",") {var temparray = url.split ( ','); "https://open.weixin.qq.com/connect/oauth2/authorize?appid?appid=wx966687444efc2b2de&redirect_uri=http://cx.ngrok.xiaomiqiu.cn/wechat/toreturnDetail + "code & scope = snsapi_base = wechat_redirect"{alert}; // JSAPI 인터페이스 상태 wx.error (function (res) {alert ( "weChat JSAPI :" + res.errmsg);}); </script> </body> </html>을 호출하여 반환 된 상태참고 : 서명 검증 오류는 개발 중에 발생하기 쉽습니다. 우리는 프론트 엔드 URL의 일관성을 통해 판단 할 수 있습니다. 둘째, AccessToken이 새로 고침되지 않고 다시 새로 고침해야하기 때문입니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.