zoukankan      html  css  js  c++  java
  • 微信公众号开发(1)---微信后台配置篇

    进行微信公众号的开发:

    1.我们需要有微信公众号(开发中我们可以自己去申请一个个人的公众号进行测试开发),

    2.需要一个公网的IP(对于开发阶段便于我们调试,我们可以使用ngrok,进行一个内网穿透,将本地IP映射成公网的IP,使用80端口),开发时候,我们将Tomcat端口设置为80;

    3.里面所涉及到的工具类,在我的常用工具类中,我有进行展示说明,直接Copy

    -------------------------------------------------------开始微信后台------------------------------------------------------------------

    开发微信公众号,必须进入微信公众号平台中,进行url 和token 的配置,这个url就是我们与微信后台交互的路径,我们主要就是开发这个url;

    APPID 以及AppSecret 会自动生成,在我们开发中我们会用的到,进行校验

     配置url,这个url是微信Get请求到我们服务器的地址,且为公网可以访问的地址;

    自定义一个token,后面代码有用

    ---------------------------------------------编写微信Get请求的后台校验代码(******重要的一步)---------------------------------------------------

    /*controller
         * 该方法与微信后台配置的url进行对接,是get的请求,是微信开发的第一步
         * 微信后台会给我们接口传入signature,timestamp,nonce,echostr
         * 进行sha1 加密与signature比较,TRUE 则返回echostr给微信
         * author:cys
         */
        @RequestMapping(value="/wxopen" ,method=RequestMethod.GET)
        public void wxopen(HttpServletResponse response,String signature,String timestamp,String nonce,String echostr) {
            
            
            PrintWriter writer=null;
         //微信检验逻辑处理,这里涉及到一些算法以及加密,不用去研究它,复制就行
    if(WxOpenCheck.checkSignature(signature, timestamp, nonce)) { try { writer=response.getWriter(); writer.write(echostr); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if(writer !=null) { writer.close(); } } } }

    微信检验逻辑

    package com.wx.project.util;
    
    import java.util.Arrays;
    
    public class WxOpenCheck {
        
        //微信参数进行校验的逻辑
        public static boolean checkSignature(String signature,String timestamp,String nonce) {
            //后台自己定义的Token,开发者需要自己修改的地方
            String token ="chenyuesong";
            
            String arr[]= new String[] {token,timestamp,nonce};
            //排序
            Arrays.sort(arr);
            
            StringBuilder builder =new StringBuilder();
            for(int i=0;i<arr.length;i++) {
                builder.append(arr[i]);
            }
            
            //sha1 加密
            
            String sha1=SHA1.encode(builder.toString());
            
            return sha1.equals(signature);
        }
        
    
    }

    sha1加密工具类,直接copy

    package com.wx.project.util;
    
    import java.security.MessageDigest;
    
    /*
     * sha1 加密算法
     * 网上copy 一大堆
     */
    public class SHA1 {
        
    
         
        private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',
                               '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
     
        /**
         * Takes the raw bytes from the digest and formats them correct.
         *
         * @param bytes the raw bytes from the digest.
         * @return the formatted bytes.
         */
        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();
        }
     
        public static String encode(String str) {
            if (str == null) {
                return null;
            }
            try {
                MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
                messageDigest.update(str.getBytes());
                return getFormattedText(messageDigest.digest());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
    
    }

    代码写好之后,在80端口运行,在微信后台中将我们的写好的接口url接口配置上,点击提交,只要代码没有错误,就会成功。

    这样我们的第一步就完成了,微信和我们的后台就是打通了-----

    原创打造,多多指教
  • 相关阅读:
    Git的使用
    工具使用--Tomcat
    数据库优化-索引
    sql语句小练习
    Oracle sql 优化
    用词云图分析一带一路峰会哪3个词说的最多
    为什么你用不好Numpy的random函数?
    python3.6下安装结巴分词需要注意的地方
    UFO长啥样?--Python数据分析来告诉你
    关于matplotlib,你要的饼图在这里
  • 原文地址:https://www.cnblogs.com/iscys/p/9501318.html
Copyright © 2011-2022 走看看