服務器端:
1 獲取微信js accessToken
備注:access_token是公眾號的全局唯一票據,公眾號調用各接口時都需使用access_token。
開發者需要進行妥善保存。access_token的存儲至少要保留512個字符空間。
access_token的有效期目前為2個小時,需定時刷新,
重復獲取將導致上次獲取的access_token失效。
目前access_token的有效期通過返回的expire_in來傳達,目前是7200秒之內的值。
中控服務器需要根據這個有效時間提前去刷新新access_token。
獲取方法:
1) . 公眾號可以使用AppID和AppSecret調用本接口來獲取access_token。
AppID和AppSecret可在微信公眾平台官網-開發者中心頁中獲得
(需要已經成為開發者,且帳號沒有異常狀態)
2) .http請求方式:
GET : https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
3) .返回說明:正常情況下,微信會返回下述JSON數據包給公眾號:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
4) 將獲取到的accessToken值放入緩存中,存放時間小於7200秒
2 獲取 jsapi_ticket
備注: jsapi_ticket是公眾號用於調用微信JS接口的臨時票據。
正常情況下,jsapi_ticket的有效期為7200秒,通過access_token來獲取。
獲取方法:
1) 采用http GET方式請求獲得jsapi_ticket(有效期7200秒,開發者必須在自己的服務全局緩存jsapi_ticket:
2) http請求方式:
GET: https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
3)返回說明:成功返回如下JSON:
{
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
}
4)將獲取到的jsapi_ticket值放入緩存中,存放時間小於7200秒
3 生成簽名
備注:簽名生成規則如下:
參與簽名的字段包括noncestr(隨機字符串),
有效的jsapi_ticket,
timestamp(時間戳),
url(當前網頁的URL,不包含#及其后面部分) 。
對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)后,
使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串string1。
這里需要注意的是所有參數名均為小寫字符。
對string1作sha1加密,字段名和字段值都采用原始值,不進行URL 轉義。
獲取方法:
1). 對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)后,使用URL鍵值對的格式
(即key1=value1&key2=value2…)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com
2). 對string1進行sha1簽名,得到signature:f4d90daf4b3bca3078ab155816175ba34c443a7b
用Apache的commons-codec工具包,其中的DigestUtils類有SHA加密方法可以直接調用..
3). 將wx.config接口需要的參數值都放入緩存中(即signature,noncestr,timestamp),時間為小於7200秒。
注意事項:
1) 簽名用的noncestr和timestamp必須與wx.config中的nonceStr和timestamp相同。
2) 簽名用的url必須是調用JS接口頁面的完整URL。
3) 出於安全考慮,開發者必須在服務器端實現簽名的邏輯。