1.登录
wx.login(OBJECT)接口用于调用接口获取登录凭证(Code),进而换取用户登录态信息,包括用户的唯一标识(OpenID)及本次登录的会话密钥(session_key)。用户数据的加解密通信需要依赖会话密钥完成。登录部分代码如下。
// app.jsApp({ 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"}