码上敲享录 > 互联网笔记 > 微信公众号基本服务器地址(URL)配置Token认证教程(java版)

微信公众号基本服务器地址(URL)配置Token认证教程(java版)

上一章章节目录下一章 2021-01-12已有2162人阅读 评论(0)

微信公众号基本服务器地址(URL)配置Token认证教程(java版)



解决方法:

1.在基本服务器地址(URL)中配置外网可以访问的回调地址,如果你的系统还在测试阶段没上线,可以通过natapp工具生成一个临时域名测试,请参考:http://www.yayihouse.com/yayishuwu/chapter/1877


2.Token随意填一个,不能让别人知道,这个token等会要用在回调地址方法中进行签名认证。


3.假如我的回调地址是http://7ap932.natappfree.cc/open/wx/callback,那具体代码实现如下,复制就能用。

private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5','6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};


@RequestMapping("open/wx/callback")

   public String callBack(HttpServletResponse response, HttpServletRequest request,String signature,String timestamp,String nonce,String echostr) throws IOException {

       try {

           String[] arr = new String[]{"你微信公众号后台配置的Token", timestamp, nonce};

           Arrays.sort(arr);

           StringBuilder sb = new StringBuilder();

           for (int i = 0; i < arr.length; i++) {

               sb.append(arr[i]);

           }

           MessageDigest messageDigest = MessageDigest.getInstance("SHA1");

           messageDigest.update(sb.toString().getBytes());

           String sign = getFormattedText(messageDigest.digest());


           if (sign.equals(signature)) {

               return echostr;


           }

       } catch (Exception e) {

           e.printStackTrace();

       }

       return null;



   }



   private static String getFormattedText(byte[] bytes) {

       int len = bytes.length;

       StringBuilder buf = new StringBuilder(len * 2);

       // 把密文转换成十六进制的字符串形式

       for (int j = 0; j < len; j++) {

           buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);

           buf.append(HEX_DIGITS[bytes[j] & 0x0f]);

       }

       return buf.toString();

   }


向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交