繫結網域名稱
引入js檔案
通過config介面注入許可權驗證配置
wx.config();
需要安裝一下模組供我們使用:
npm install sha1
這個雜湊1模組是處理對字元的雜湊加密,生成signature
npm install redis
如果使用co庫的話
npm install co
module.exports = ;
建立getwebtoken.js 用來返回access_token,因為這個是非同步返回乙個promise
'use strict';
const request = require('request');
const qs = require('querystring');
const config = require('./../wechatconfig');
function gettoken() ;
let options = ;
console.log(options.url);
return new promise((resolve, reject) => else
})})
}module.exports = gettoken;
param的順序一定不能錯!!!這個很重要不然會證書會認證失敗!這個坑我整了1天才爬出來。
建立乙個getjsapidata.js 檔案用來做為主要的controller返回結果返回給client
/**
* created by caozheng on 2016/11/24.
*/'use strict';
const fs = require('fs');
const request = require('request');
const gettoken = require('./getwebtoken');
const sha1 = require('sha1');
function getjsapiticket() ;
request(options, function (err, res, body) else
})}).catch(function (err) );
})}//noncestr
function getnoncestr ()
return text;
}//timestamp
function gettimestamp()
function getsign(jsapiticket, noncestr, timestamp, url)
//返回資料分別為sign, timestamp, noncestr
function getjsapidata(clienturl) )
}module.exports = getjsapidata;
在路由處新增入口
router.post('/wechat',function (req, res) );
});});
建立乙個redis.js檔案,因為這裡只需要儲存功能。
/**
* created by caozheng on 2016/11/24.
*/var db = {};
var redis = require('redis');
var options = ;
var client = redis.createclient(options);
client.on('ready',function(err));
client.on("error", function (err) );
client.on('connect', function());
/** * 新增string型別的資料
* @param key 鍵
* @params value 值
* @params expire (過期時間,單位秒;可為空,為空表示不過期)
* @param callback(err,result)
*/db.set = function(key, value, expire, callback)
if (!isnan(expire) && expire > 0)
callback(null,result)
})};/**
* 查詢string型別的資料
* @param key 鍵
* @param callback(err,result)
*/db.get = function(key, callback)
callback(null,result);
});};module.exports = db;
總結:這裡也可以寫成非同步! express可以使用co庫,koa的話那就不用看我寫的了...
在getjsapidata.js中的getjsapiticket函式中新增redis儲存,讀取。同時需要引入redis.js
const db = require('./../../db/radis');
var res = // 這裡為了和公共介面同步把數
co(function* ()
// 判斷redis中是否存在access_token、ticket
if(result.access_token && result.ticket)else
})
總結 : 這只是個示例**的具體實現還是看場景。 微信js sdk呼叫
在開始編碼之前,首先了解一下從使用者使用開始,到調起js sdk進行操作得當整個流程 wx.ready 中。如果不需要,就只需要在根據情況在頁面上出發對應的js sdk提供的函式即可。每個函式,都會有對應的成功與失敗的 函式,前端通過該函式,來實現對應的結果展示就行了。調起js sdk所後台需要做的...
呼叫介面簽名 用Node實現微信JS SDK的簽名
2 目前access token的有效期通過返回的expire in來傳達,目前是7200秒之內的值。中控伺服器需要根據這個有效時間提前去重新整理新access token。在重新整理過程中,中控伺服器可對外繼續輸出的老access token,此時公眾平台後台會保證在5分鐘內,新老access t...
微信jssdk使用
使用jssdk之前,我們需要在伺服器端準備什麼資料 jssdk使用的config wx.config 這裡我們需要自己去準備的資料,主要有 timestamp 這個一般可用伺服器當前時間設值,php now noncestr 隨機的字串,這個字串可以任意長度,自己設定隨機串 signature 簽名...