分析微信小程序的登录和支付

  • 关于登录
    在小程序初始化的时候调用两个方法,一个是检查登录态,另一个则是缓存用户信息。

    • onLaunch
      • checkSession()
      • getUserInfo()
  • 检查登录态checkSession()
    • 请求api,wx.checkSession成功则登录态还没过期,失败则重新请求登录。
    • 成功–>调用getLoginSession()方法,用于获取localStorage中的3rd_session,需要登录授权的接口使用。
      - getLoginSession()方法:调用wx.getStorage将数据存储在本地缓存中指定的 key 中。成功则执行回调,失败则再次登录拿到3rd_session,执行回调。
  • 关于登录
    • 请求wx.login成功则请求自己后台的接口,请求的参数是code,成功则返回t_session:openid+session_Key->存储3rd_session->wx.setStorage.
      • 缓存用户信息
      • 判断有没有用户信息有就直接提交用户信息,没有则请求登录后再调用获取用户信息的方法。
      • 提交用户信息->判断有没有用户信息,再调用getLoginSession()方法将数据存在本地缓存,然后调用自己后台的获取用户信息接口将用户信息存储在后台数据库。

对于登录态的逻辑上我可能解释得不清楚,具体可以查看的链接
小程序登录态维护实现流程

  • 通过wx.login获取登录态。 通过登录返回的code发送给服务器,服务器用code换取session_key和openid后。

  • 获取session_key后一般使用缓存框架保存登录态,服务端随机生成一串唯一字符串3rdSessionId为key,session_key为value组成键值对并存到缓存当中,缓存时间视情况自行决定。

  • 将3rdSessionId返回给客户端

  • 客户端将3rdSessionId缓存到localStorage中,后续接口从缓存中读取3rdSessionId,传递给服务器;服务器根据3rdSessionId来判断用户身份。
  • 如果服务器根据3rdSessionId在缓存中查找是否存在session_key,如果存在正常执行;如果不存在小程序未登录,重新从第一步流程走。

  • 关于支付

  • 提交订单请求后台->获取支付信息->唤起支付功能wx.requestPayment
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值