21.4.7 开放接口

04-13Ctrl+D 收藏本站

关灯 直达底部

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