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"}