微信小程序

本框架已经集成了微信小程序的接口封装,可以通过简单的配置,实现微信小程序的接口调用。

启用配置

通过下面的配置类可以知道,我们是通过wx.ma.enabled=true来启用微信小程序的配置的。 配置类

application.yml也对其进行了优化 application.yml

这样我们可以通过三种方式启用微信小程序的配置类。

方式一

通过application.yml进行配置,直接将wx.ma.enabled设置为true,即

wx:
  ma:
    enabled: ${WX_MA_ENABLED:true}

方式二

通过环境变量进行配置,即WX_MA_ENABLED=true

方式三

通过启用时候传入参数,即-Dwx.ma.enabled=true 上面三种方式任选一种即可。

配置项

上面虽然启用了微信小程序的配置类,但是实际上,我们并没有进行任何配置,如果这个时候启动服务,那么会抛出异常。所以需要进行配置项的配置。 配置项如下:

属性描述是否必填
WX_MA_APPID小程序的appid
WX_MA_SECRET小程序的secret
WX_MA_TOKEN小程序的token
WX_MA_AES_KEY小程序的的EncodingAESKey
WX_MA_MSG_DATA_FORMAT小程序的消息数据格式

上面的配置项,可以通过两种方式进行配置。

方式一

通过环境变量进行配置,即 mac/linux

export WX_MA_APPID=xxx
export WX_MA_SECRET=xxx

方式二

【系统设置】-【参数配置】-【新增】

下面是idea中配置参数的截图: idea配置idea启动截图

使用

配置完成后,我们就可以使用微信小程序的接口了。

关于授权登录

我们框架已经实现了授权登录,登录接口和用户名+密码登录接口一样,只是入参不同。

POST /sys/login

请求body参数:

{
  "grantType": "wxMa",
  "code": "xxx"
}
  • grantType: 授权类型,固定为wxMa,对应的是WxMaGranter.java
  • code: 微信小程序的code,由小程序获取

注:目前该授权登录是不会自动注册用户,如果用户不存在,那么会返回错误。如果是如下错误,则会返回openid和unionid。

{
  "code": 10041002,
  "msg": "您未绑定微信,请先绑定!",
  "data": {
    "wx_openid": "xx",
    "wx_openid": "xxx"
  }
}

此时,可以把openid和unionid保存起来,然后跳转到登录页面,让用户绑定微信。(一般情况可以跳转到手机号授权页,通过手机号授权登录关联)

关于手机号授权登录

我们框架已经实现了手机号授权登录,登录接口和用户名+密码登录接口一样,只是入参不同。 POST /sys/login 请求body参数:

{
  "grantType": "wxMaPhone",
  "code": "xxx",
  "wx_openid": "xxx",
  "wx_unionid": "xxx"
}
  • grantType: 授权类型,固定为wxMaPhone,对应的是WxMaPhoneGranter.java
  • code: 微信小程序的code,由小程序获取
  • wx_openid: 前面授权登录获取到的微信小程序的openid
  • wx_unionid: 前面授权登录获取到的微信小程序的openid

注:手机号授权登录,如果手机号不存在,那么会自动注册用户。

关于账号关联

  1. 先使用用户名+密码或手机授权登录
  2. 再调用关联账号接口 POST /sys/relThirdAccountByCode 请求body参数:
{
  "relType": "WxMa",
  "code": "xxx"
}
  • relType: 关联类型,固定为WxMa
  • code: 微信小程序的code,由小程序获取

关于取消账号关联

POST /sys/unRelThirdAccount 请求body参数:

{
  "relType": "WxMa"
}
  • relType: 关联类型,固定为WxMa

其他小程序接口

详见:WxJava文档open in new window

关于关系表

用户授权登录之后,会返回用户信息,用户信息中会包含openid,openid就是关系表需要的关联字段。详见:sys_rel_third_account