node.js 微信開發1-接入

準備工做1 域名準備javascript

  不管是我的開發仍是作公司項目域名都是必不可少的html

  前期我我的用過花生殼作個開發測試,挺好用的,就是如今要收費了,開通花生殼要收費,開通內網穿透要收費(爲啥要內網穿透呢,由於微信接入的接口必須使用80端口,而若是 要想讓本身pc的80端口對外映射就要作這個內網穿透)java

  開發公司項目的須要提早準備好服務器和域名(爲啥提早申請呢,域名備案也是個有點麻煩的事情,須要各類公司法人證件,順利的話辦理週期1-2周)node

準備工做2 公衆號申請和配置服務器

  公衆號分三種:訂閱號(天天發文章)、服務號(功能更豐富)、企業號(俺也沒用過)微信

  公衆號申請也是須要公司各類材料,而且申請完了須要認證才能夠作自定義開發,而後認證費300大洋微信開發

  固然我的作測試的話,只須要去申請一個測試號就好了,基本的開發功能也都有,so easy微信公衆平臺

  而後是配置dom

  進入微信公衆平臺,選擇 開發-基本配置async

  開發者ID、開發者密碼:系統給自動分配的,尤爲是開發者密碼須要本身保存(不然就要進行重置)

  IP白名單:沒有加入IP白名單的IP地址是沒法調用微信的接口獲取access_token的,因此你的微信公衆號接口部署在哪裏,就要把那臺電腦的ip地址加入到IP白名單

  服務器地址:就是你的域名+接口名:如 http://mydomain.com/wechat/index

  令牌(token):記住就行,第一步作公衆號接入的時候就要用這個token

  消息加解密密匙:若是消息加解密方式爲‘明文模式’能夠不去記,‘加密方式’就須要在接入接口中配置

 

  稍後等接入接口寫完而且部署到服務器上了,就是在這裏驗證接口是不是通的

 

node.js 微信接入代碼參考

公衆號接入接口(注意是get請求)

'GET /wechat/index': async (ctx, next) => {
        wechatApp.auth(ctx.request, ctx.response);
    },

 公衆號接入認證

/**
 * 微信接入驗證
 * @param {Request} req Request 對象
 * @param {Response} res Response 對象
 */
WeChat.prototype.auth = function (req, res) {

    var that = this;

    //1.獲取微信服務器Get請求的參數 signature、timestamp、nonce、echostr
    var signature = req.query.signature, //微信加密簽名
        timestamp = req.query.timestamp, //時間戳
        nonce = req.query.nonce, //隨機數
        echostr = req.query.echostr; //隨機字符串

    //2.將token、timestamp、nonce三個參數進行字典序排序
    var array = [this.token, timestamp, nonce];
    array.sort();

    //3.將三個參數字符串拼接成一個字符串進行sha1加密
    var tempStr = array.join('');
    const hashCode = crypto.createHash('sha1'); //建立加密類型 
    var resultCode = hashCode.update(tempStr, 'utf8').digest('hex'); //對傳入的字符串進行加密

    //4.開發者得到加密後的字符串可與signature對比,標識該請求來源於微信
    if (resultCode === signature) {
        res.body = echostr
        // res.send(echostr);
    } else {
        res.body = mismatch
        // res.send('mismatch');
    }
}

 按照微信官方的說明就是:

你在微信公衆平臺點擊提交 公衆號基本配置 後,公衆號會向你配置的服務器地址(URL)發送一個get請求

這個get請求就包含了四個參數:signature\timestamp\nonce\echostr

而後你要作的就是

1)將其中的timestamp、nonce兩個參數和你本身設置的token(共三個參數)進行排序
2)將三個參數字符串拼接成一個字符串進行sha1加密
3)開發者得到加密後的字符串可與signature對比,若是對比一致,就將echostr參數返回(表示接入成功了),不然就返回其餘信息(表示接入失敗了)

若是此時在微信公衆平臺提示驗證經過,那也就經過微信開發的第一步了……

相關文章
相關標籤/搜索