微信公衆號開發(1)---微信後臺配置篇

進行微信公衆號的開發:java

1.咱們須要有微信公衆號(開發中咱們能夠本身去申請一個我的的公衆號進行測試開發),算法

2.須要一個公網的IP(對於開發階段便於咱們調試,咱們能夠使用ngrok,進行一個內網穿透,將本地IP映射成公網的IP,使用80端口),開發時候,咱們將Tomcat端口設置爲80;服務器

3.裏面所涉及到的工具類,在個人經常使用工具類中,我有進行展現說明,直接Copy微信

 

 

-------------------------------------------------------開始微信後臺------------------------------------------------------------------微信開發

開發微信公衆號,必須進入微信公衆號平臺中,進行url 和token 的配置,這個url就是咱們與微信後臺交互的路徑,咱們主要就是開發這個url;app

 

APPID 以及AppSecret 會自動生成,在咱們開發中咱們會用的到,進行校驗工具

 

 

 配置url,這個url是微信Get請求到咱們服務器的地址,且爲公網能夠訪問的地址;測試

自定義一個token,後面代碼有用ui

 

---------------------------------------------編寫微信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接口配置上,點擊提交,只要代碼沒有錯誤,就會成功。

這樣咱們的第一步就完成了,微信和咱們的後臺就是打通了-----

相關文章
相關標籤/搜索