当前位置: 首页 > news >正文

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

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(...)

复制代码

相关文章:

  • SSH配置免秘钥登录
  • 【VS】使用vs2017自带的诊断工具(Diagnostic Tools)诊断程序的内存问题
  • 浅谈Golang中select的用法
  • Ubantu 更新时间方法
  • [xdoj] 13011302 数字计数 数字计数的复仇
  • php面试题12(多态web服务器共享session的方法:将session存到数据库)($val=$data[$key];)...
  • nohup和后台运行,进程查看及终止
  • bash命令行初探
  • 转: 关于linux用户时间与系统时间的说明
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • day01.1 vmware虚拟机
  • VMware Vsphere 虚拟化
  • CentOS7切换到root用户和退回普通用户
  • BZOJ5289 洛谷4437:[HNOI/AHOI2018]排列——题解
  • mysql grant授权
  • 2019年如何成为全栈工程师?
  • JavaScript标准库系列——Math对象和Date对象(二)
  • javascript面向对象之创建对象
  • Vue组件定义
  • 代理模式
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 欢迎参加第二届中国游戏开发者大会
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • const的用法,特别是用在函数前面与后面的区别
  • 通过调用文摘列表API获取文摘
  • ​【已解决】npm install​卡主不动的情况
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #NOIP 2014#Day.2 T3 解方程
  • #pragma预处理命令
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (11)MATLAB PCA+SVM 人脸识别
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C#)一个最简单的链表类
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三)mysql_MYSQL(三)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .axf 转化 .bin文件 的方法
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET MVC之AOP
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET建议使用的大小写命名原则
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .ui文件相关
  • :not(:first-child)和:not(:last-child)的用法
  • [ C++ ] STL---string类的使用指南
  • [20161214]如何确定dbid.txt