위챗 공중 플랫폼 개발에 접속

3405 단어 Wechat
1. 위챗 공식계정 개발 준비 관련 블로그:https://blog.csdn.net/Abysscarry/article/details/890714691. 위챗 공식계정 등록2.개발 환경 준비 1.개발된 프로그램은 자신의 컴퓨터에서 브라우저를 통해 직접 접근할 수 있다.다른 한 대의 컴퓨터는 접근할 수 없다. 우리는 이 컴퓨터들을 같은 랜에 연결한 다음에 IP를 통해 접근할 수 있다.2. 인터넷에서는 우리 로컬 프로그램에 접근할 수 없고 프로그램을 클라우드 서버에 올려야만 인터넷에서 접근할 수 있다.3. 개발 과정에서 우리는 프로그램과 위챗 서버가 네트워크 통신을 해야 한다. 만약에 위챗 서버가 우리 프로그램을 찾지 못하면 네트워크 통신을 할 수 없다. 그래서 개발할 때 우리의 프로젝트가 인터넷에 있는 다른 컴퓨터에 접근할 수 있도록 우리는 내부 네트워크를 뚫어야 한다.4. 내장 관통 소프트웨어: 땅콩 껍질,nat123,ngrok(무료,불안정)5.ngrok:http://www.ngrok.cc/1. 다운로드, 계정 등록하기;2. 터널 개통 협의: http;이름: 마음대로 쓰기;선행 도메인 이름: 마음대로 쓰기;로컬 포트:localhost:80(로컬 프로젝트 접근 포트) 기타 기입 필요 없음;3. 터널 id를 복제하여ngrok 클라이언트를 시작합니다.6. 위챗 공중 플랫폼 접속 개발 절차: 1. 서버 설정 작성 1.서버 주소 (내부 네트워크 관통 도구의 도메인 이름) 2.token은 프로그램과 일치해야 합니다.2. 서버 주소의 유효성을 검증한다. 3. 인터페이스 문서에 따라 업무 논리를 실현한다.
/**
	 *           
	 * 1.       ;
	 *   a.        ,        GET           URL ;
	 * 2.             
	 *   a.       signature       ,    GET         ,
	   *                   echostr    ,     ,       ,      ;
	 * 3.   :            ;  
	 * @param request
	 * @param response
	 * @throws IOException
	 */
	@RequestMapping(value="/start",method = RequestMethod.GET)
	public void start(HttpServletRequest request,HttpServletResponse response) throws IOException {	
		//             
		if(wechatUtil.check(request)) {	    	
	    	PrintWriter writer = response.getWriter();
	    	writer.write( request.getParameter("echostr"));
	    	writer.flush();
	    	writer.close();
	    	System.out.println("    ");
	    	
	    }else {
	    	 System.out.println("    ");
	    }
		
	}
/**
	 *               
	 * @param timestamp
	 * @param nonce
	 * @param signature
	 * @param token
	 * @return
	 */
	public boolean check(HttpServletRequest request) {
		 //      ,signature         token       timestamp  、nonce  。
		String signature = request.getParameter("signature");
		//   
	    String timestamp = request.getParameter("timestamp");
	    //   
	    String nonce = request.getParameter("nonce");
	    //     
	    String echostr = request.getParameter("echostr");
	    System.out.println(signature+"
"+timestamp+"
"+nonce+"
"+echostr); //1. token、timestamp、nonce String [] str = {TOKEN,timestamp,nonce}; Arrays.sort(str); //2) sha1 String strs = str[0]+str[1]+str[2]; String mysig= sha1(strs); System.out.println("mysig:---->"+mysig); //3) signature , return mysig.equals(signature); } /** * * @param strs * @return */ public String sha1(String strs) { // TODO Auto-generated method stub try { // MessageDigest md = MessageDigest.getInstance("sha1"); // byte[] digest = md.digest(strs.getBytes()); // char [] chars = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; StringBuilder sb = new StringBuilder(); for (byte b : digest) { sb.append((chars)[(b>>4)&15]); sb.append(chars[b&15]); } return sb.toString(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }

좋은 웹페이지 즐겨찾기