微信小程序第三方开发需要注意的点

1.关于小程序与公众号unionid数据互通

小程序和公众号必须为同一主体,而且必须绑定在同一个开放平台上,其中又分为两点:

  • 1.开放平台主动创建 此时需要手动将小程序和公众号绑定在开放平台上,不可使用接口绑定;

  • 2.开放平台由第三方接口创建 在公众号和小程序授权第三方开放平台管理权限后,可由接口进行绑定,若要绑定在同一个开放平台上,前提是公众号和小程序的主体相同,同时也支持接口解除绑定;

2.关于小程序ext.json

开发过程中可在小程序的根目录下添加ext.json文件来进行调试,比如在文件里添加以下配置:

{
  "extEnable": true,
  "extAppid": "wx90d87655678517ee",
  "ext": {
    "id": 100
  }
}
复制代码

设置extEnable属性为true,后续小程序的逻辑将依照ext.json中extAppid来执行,并可以通过以下两种方式来获取ext中的参数:

//方式一
if(wx.getExtConfig) {
  wx.getExtConfig({
    success: function (res) {
      console.log(res.extConfig)
    }
  })
}
//方式二
let extConfig = wx.getExtConfigSync? wx.getExtConfigSync(): {}
console.log(extConfig)
复制代码

另外第三方在帮助授权小程序提交代码的时候也可以指定ext字段,具体方式参考:微信第三方代小程序实现接口 其中需要注意的一点是ext_json的格式要非常注意,因为ext_json结构很松散,所以很多时候需要我们自己拼装这个字段,那么它需要为类似以下格式:

"{\"extAppid\": \"wx90d87655678517ee\",\"ext\":{\"id\":100}}"
复制代码

另外通过接口提交的ext_json会覆盖配置的ext.json中的对应信息,但在开发者工具无法获取接口提交的ext_json的信息,只能获取ext.json中信息,这点需要注意。

3.mpvue结合ext.json

目前最新版本的mpvue好像还不支持在main.js中添加ext.json的配置,所以若是需要使用它有以下两种方式:

  • 1.写一个插件,将src下的ext.json编译的dist目录下(mpvue编译后的小程序源码目录)
  • 2.直接在dist目录下创建一个ext.json文件 但记得要将extEnable属性设置为true。

4.用户小程序授权之后的解密算法(js版)

import crypto from 'crypto-browserify'

function WXBizDataCrypt (appId, sessionKey) { //小程序appid,用户登录利用code从接口获得的sessionKey
  this.appId = appId
  this.sessionKey = sessionKey
}

WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
  // base64 decode
  var sessionKey = new Buffer(this.sessionKey, 'base64')
  encryptedData = new Buffer(encryptedData, 'base64')
  iv = new Buffer(iv, 'base64')

  try {
     // 解密
    var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)
    // 设置自动 padding 为 true,删除填充补位
    decipher.setAutoPadding(true)
    var decoded = decipher.update(encryptedData, 'binary', 'utf8')
    decoded += decipher.final('utf8')
    decoded = JSON.parse(decoded)
  } catch (err) {
    console.log(err)
    throw new Error('Illegal Buffer')
  }
  if (decoded.watermark.appid !== this.appId) {
    throw new Error('Illegal Buffer')
  }

  return decoded
}

let DataCrypt = {
  getData (appId, sessionKey, encryptedData, iv) {
    var pc = new WXBizDataCrypt(appId, sessionKey)
    return pc.decryptData(encryptedData, iv)
  }
}

export default DataCrypt

使用方式:

import DataCrypt from "path/to/DataCrypt"

const data = DataCrypt.getData(...)

复制代码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值