微信小程序开发

注册小程序

  • 一个邮箱只能注册一个小程序,且该邮箱不能被绑定个人微信,微信公众平台,微信开放平台
  • 已经注册过微信公众号的企业可以直接添加小程序,不需要额外付费

小程序登录

第一步:小程序调用wx.login() 获取code。

第二步:小程序通过wx.request()调用服务端接口发送code,appId到开发者服务器

第三步:开发者服务器接收小程序发送的code,并携带appid、code发送到微信服务器,服务端调用微信服务器接口 auth.code2Session,换取 用户唯一标识 OpenID,unionId 和 会话密钥 session_key(session_key不会下发到小程序

第四步:开发者服务器自己生成一个key(自定义登录状态)与openid、session_key进行关联,并存到数据库中。

第五步:开发者服务器返回生成key(自定义登录状态)到小程序。

第六步:小程序存储key(自定义登录状态)到本地。

wx.login({
      success: res => {
        console.log(res)
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })  

小程序授权

在调用一些API的时候,需要继续授权,比如获取用户信息,录音等功能

获取授权状态

wx.getSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }
})

发起授权弹窗

  • 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
  • 如果用户已授权,可以直接调用接口;
  • 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。
// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scope
wx.getSetting({
  success(res) {
    if (!res.authSetting['scope.record']) {
      wx.authorize({
        scope: 'scope.record',
        success () {
          // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
          wx.startRecord()
        }
      })
    }
  }
})

授权获取用户信息

授权获取用户信息时,调用wx.authorize不会触发弹窗

<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取用户信息</button>

  

getUserInfo: function(e) {
    app.globalData.userInfo = e.detail.userInfo
 
  }

引导用户去系统设置

wx.openSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }
})

授权时效

一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除小程序

小程序微信支付

原文地址:https://www.cnblogs.com/liuxiaoru/p/13663586.html