首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》21.4.7 开放接口

关灯直达底部

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