微信小程插件开发合集

版本支持

  • 插件从小程序基础库版本 2.1.0 开始支持页面。
  • 自基础库版本 2.2.2 开始,在插件自身的页面中,插件还可以调用 wx.navigateTo 来进行页面跳转, url 格式与使用 navigator 组件时相仿。
  • 从小程序基础库版本 2.4.0 开始,支持插件所有者小程序跳转到自己的功能页。

导读

首先看几个学习地址,用于方便理解小程序插件的能力。

  • 查找小程序插件 :官方插件查找地址,截止2018-11-16还不到两页的插件。
  • 小程序插件功能介绍 :主要用于理解小程序插件的定位和功能。个人类型小程序不能申请,其他类型都可以申请插件功能,一个小程序只能提供一个插件,其他小程序可以申请使用小程序,
  • 小程序插件开发:开发教程。

开始开发

创建项目要在代码片段中的新建,选择插件

开发注意事项

插件请求签名

插件在使用 wx.request 等 API 发送网络请求时,将会额外携带一个签名 HostSign ,用于验证请求来源于小程序插件。这个签名位于请求头中,形如:

1
X-WECHAT-HOSTSIGN: {"noncestr":"NONCESTR", "timestamp":"TIMESTAMP", "signature":"SIGNATURE"}

其中, NONCESTR 是一个随机字符串, TIMESTAMP 是生成这个随机字符串和 SIGNATURE 的 UNIX 时间戳。它们是用于计算签名 SIGNATRUE 的参数,签名算法为:

1
SIGNATURE = sha1([APPID, NONCESTR, TIMESTAMP, TOKEN].sort().join(''))

插件内跳转

- 在插件页面内如果是导航组件,可以使用相对路径
- 插件执行页面跳转的时候,可以使用 navigator 组件。当插件跳转到自身页面时, url 应设置为这样的形式:plugin-private://PLUGIN_APPID/PATH/TO/PAGE 。需要跳转到其他插件时,也可以这样设置 url 。
- 自基础库版本 2.2.2 开始,在插件自身的页面中,插件还可以调用 wx.navigateTo 来进行页面跳转, url 格式与使用 navigator 组件时相仿。

插件开放配置

> 向第三方小程序开放的所有自定义组件、页面和 js 接口都必须在插件配置文件 plugin.json 列出,格式如下:
1
2
3
4
5
6
7
8
9
{
"publicComponents": {
"hello-component": "components/hello-component"
},
"pages": {
"hello-page": "pages/hello-page"
},
"main": "index.js"
}

插件的限制

  1. 插件调用 API 的限制

wx.loginwx.requestPayment 在插件中不能使用,但可以通过插件功能页来 获得用户信息 和 进行支付

  1. 插件使用组件的限制

在插件开发中,以下组件不能在插件页面中使用:

  • 开放能力(open-type)为以下之一的 button:
    • contact(打开客服会话)
    • getPhoneNumber(获取用户手机号)
    • getUserInfo(获取用户信息)
    • open-data
    • web-view
  • 以下组件的使用对基础库版本有要求:
    • navigator 需要基础库版本 2.1.0
    • live-player 和 live-pusher 需要基础库版本 2.3.0

插件的功能页

引用:要使用插件功能页,需要先激活功能页特性,配置对应的功能页函数,再使用 <functional-page-navigator> 组件跳转到插件功能页,从而实现对应的功能。

从小程序基础库版本 2.4.0 开始,支持插件所有者小程序跳转到自己的功能页。

注意使用 <functional-page-navigator> 组件跳转到插件功能页的方式,仅在插件的自定义组件中有效,如果在插件页面跳转会在小程序控制台提示下图的错误

08

真机开发步骤

  1. 先预览打开插件所有者小程序
  2. 插件项目将插件中 <functional-page-navigator> 中的 version 属性设置为 develop
  3. 预览并打开插件

注意:上线前将插件中 <functional-page-navigator> 中的 version 属性设置为 release

用户信息功能页

自基础库版本 2.3.1 起,用户在这个功能页中授权之后,插件就可以直接调用 wx.login 和 wx.getUserInfo 。无需再次进入功能页获取用户信息。
name=”loginAndGetUserInfo”

支付功能页

支付功能页
插件使用支付功能,需要进行额外的权限申请,申请位置位于管理后台的“小程序插件 -> 基本设置 -> 支付能力”设置项中。
name=”requestPayment”

收货地址功能页

自基础库版本 2.4.0 开始支持。
name=”chooseAddress”