微信开发者账号验证

微信公众号平台开发者文档   https://mp.weixin.qq.com/wiki/home/index.html(在这里可以进行微信测试号的申请)

申请时需要有一个自己的域名,如果没有的话就可以用微信ngrok,  下载地址  http://ngrok.2bdata.com/


验证服务器有效性

首先进入到测试号管理界面可以看到接口配置信息,第一次进入url和token是没有的。

微信开发者账号验证_第1张图片
填写你服务器的访问地址及token,Token按照自己的需求随意设置。验证方法如下:
参考官方文档: 点击打开链接

微信开发者账号验证_第2张图片

根据填写的服务器访问地址接收相应参数进行验证,代码示例:
[java] view plain copy
  1. import java.security.MessageDigest;  
  2. import java.security.NoSuchAlgorithmException;  
  3. import java.util.Arrays;  
  4.   
  5. /** 
  6.  * 微信工具类 
  7.  *  
  8.  */  
  9. public class WxUtils {  
  10.   
  11.     /** 
  12.      * 验证消息合法性 
  13.      * @param signature 
  14.      * @param paraStr 
  15.      * @return 
  16.      * @throws NoSuchAlgorithmException 
  17.      */  
  18.     public static boolean checkSingature(String signature,String...paraStr) throws NoSuchAlgorithmException {  
  19.           
  20.         // 按字典顺序排序  
  21.         Arrays.sort(paraStr);  
  22.         // 字符串拼接  
  23.         StringBuilder content = new StringBuilder();  
  24.         for (String string : paraStr) {  
  25.             content.append(string);  
  26.         }  
  27.         // sha1加密  
  28.         MessageDigest md = MessageDigest.getInstance("SHA-1");  
  29.         byte[] digest = md.digest(content.toString().getBytes());  
  30.         String testingStr = byteArrayToHexString(digest);  
  31.         // 比较返回  
  32.         if (testingStr.equalsIgnoreCase(signature.toUpperCase())) {  
  33.             return true;  
  34.         }  
  35.         return false;  
  36.     }  
  37.   
  38.     // 将字节数组转换为十六进制字符串  
  39.     private static String byteArrayToHexString(byte[] bytearray) {  
  40.         String strDigest = "";  
  41.         for (int i = 0; i < bytearray.length; i++) {  
  42.             strDigest += byteToHexString(bytearray[i]);  
  43.         }  
  44.         return strDigest;  
  45.     }  
  46.   
  47.     // 将字节转换为十六进制字符串  
  48.     private static String byteToHexString(byte ib) {  
  49.         char[] Digit = { '0''1''2''3''4''5''6''7''8''9''A',  
  50.                 'B''C''D''E''F' };  
  51.         char[] ob = new char[2];  
  52.         ob[0] = Digit[(ib >>> 4) & 0X0F];  
  53.         ob[1] = Digit[ib & 0X0F];  
  54.         String s = new String(ob);  
  55.         return s;  
  56.     }  
  57. }  

对验证消息进行封装,以便下次直接调用,在访问路径中进行服务器验证,jsp中代码示例:
[java] view plain copy
  1. <%@page import="com.weixin.utils.WxUtils"%>  
  2. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  3. <%  
  4.     //在接口配置信息设置的Token  
  5.     String token = "jsharelife";  
  6.     //接收微信服务器三个参数  
  7.     String signature = request.getParameter("signature");  
  8.     String timestamp = request.getParameter("timestamp");  
  9.     String nonce = request.getParameter("nonce");  
  10.     //进行验证  
  11.     try{  
  12.         if(WxUtils.checkSingature(signature,token,timestamp,nonce)){  
  13.             //返回echostr  
  14.             response.getOutputStream().print(request.getParameter("echostr"));  
  15.             out.clear();    
  16.             out = pageContext.pushBody();    
  17.         }  
  18.     } catch(Exception e) {  
  19.         e.printStackTrace();  
  20.     }  
  21. %>  

然后再接口配置界面点击提交,会显示是否验证成功。
微信开发者账号验证_第3张图片

你可能感兴趣的:(微信开发者账号验证)