1.登錄
wx.login(OBJECT)接口用於調用接口獲取登錄憑證(Code),進而換取用戶登錄態信息,包括用戶的唯一標識(OpenID)及本次登錄的會話密鑰(session_key)。用戶數據的加解密通信需要依賴會話密鑰完成。登錄部分代碼如下。
// app.js App({ onLaunch: function { wx.login({ success: function(res) { if (res.code) { // 發起網絡請求 wx.request({ url: 'https:// test.com/onLogin', data: { code: res.code } }) } else { console.log('獲取用戶登錄態失敗!' + res.errMsg) } } }); } })
用戶允許登錄後,回調內容會帶上Code(有效期為5分鐘),返回內容如下。
{errMsg: "login:ok", code: "013IwEe106FprD1A3Wd10HCGe10IwEeb"}
開發者需要將Code發送到開發者服務器後台,使用Code換取session_key接口,將Code換成OpenID和session_key。其中,session_key是對用戶數據進行加密簽名的密鑰。為了自身應用安全,session_key不應該在網絡上傳輸。Code換取session_key接口如下。
https:// api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
上述接口的參數說明如表21-32所示。
表21-32 Code換取session_key接口的參數說明
正確創建時,返回的數據示例如下。
{ "openid":"OPENID", "session_key":"SESSIONKEY", "expires_in":2592000 }
上述數據的參數說明如表21-33所示。
表21-33 code換取session_key接口返回參數說明
通過wx.login獲取到用戶登錄態之後,需要維護登錄態。要注意,不應該直接把session_key、openid等字段作為用戶的標識或者session的標識,而應該自己派發一個session登錄態。對於開發者自己生成的session,應該保證其安全性且不應該設置較長的過期時間。session派發到小程序客戶端之後,可將其存儲在storage中,用於後續通信。
2.獲取用戶信息
wx.getUserInfo(OBJECT)接口用於獲取用戶信息。獲取成功後,返回內容的參數說明如表21-34所示。
表21-34 獲取用戶信息接口返回參數說明
獲取用戶信息的代碼如下。
wx.getUserInfo({ success: function(res) { var userInfo = res.userInfo var nickName = userInfo.nickName var avatarUrl = userInfo.avatarUrl var gender = userInfo.gender // 性別。0:未知;1:男;2:女 var province = userInfo.province var city = userInfo.city var country = userInfo.country } })
3.微信支付
wx.requestPayment(OBJECT)接口用於發起微信支付。其參數如表21-35所示。
表21-35 微信支付接口的參數說明
發起微信支付的代碼如下。
wx.requestPayment({ 'timeStamp': '', 'nonceStr': '', 'package': '', 'signType': 'MD5', 'paySign': '', 'success':function(res){ }, 'fail':function(res){ } })
4.模板消息
使用模板消息需要預先獲取access_token,獲取方法可參考第5章。
發送模板消息的接口如下。
https:// api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
POST數據時,提交的數據示例如下。
{ "touser": "OPENID", "template_id": "TEMPLATE_ID", "page": "index", "form_id": "FORMID", "data": { "keyword1": { "value": "339208499", "color": "#173177" }, "keyword2": { "value": "2015年01月05日 12:30", "color": "#173177" }, "keyword3": { "value": "粵海喜來登酒店", "color": "#173177" } , "keyword4": { "value": "廣州市天河區天河路208號", "color": "#173177" } }, "emphasis_keyword": "keyword1.DATA" }
上述接口的參數說明如表21-36所示。
表21-36 模板消息接口的參數說明
正確創建時,返回的數據示例如下。
{"errcode":0,"errmsg":"ok"}