概述

插件是小程序的一项能力,是用于支持三方开发者向主体小程序提供热插拔的轻量级方案。插件可以由独立于主体小程序的第三方进行开发,提供独特的能力,并在插件市场独立发布,供其他主体小程序购买和复用,扩展主体小程序,为用户提供更丰富的功能,而无需从0开始进行开发。

每个插件有插件ID(和小程序AppID同一命名空间),形态在功能和结构上和小程序类似,不同的是插件运行在主体小程序的上下文之中,对主体小程序的能力进行扩展。

目前插件主要聚焦于门店小程序的场景,用于三方开发者对各门店进行能力上的扩展,如电子发票、配送和预订等。

主体小程序和插件的区别

ID运行时AppID开发者消费者
主体小程序小程序AppID小程序AppID主体小程序开发者主体小程序用户
小程序插件插件ID(和小程序AppID共用同一命名空间)和主体小程序AppID绑定独立于主体小程序开发者主体小程序开发者和用户

插件与开放平台、商家及用户之间的关系

  • 在开发时,插件开发商需要和开放平台签约获得特色能力(如支付)

  • 商家购买插件后,在门店启用时,根据插件所需要获得的信息(如门店名称)对插件进行授权,这样插件在运行时可获取被授权的信息

  • 在用户使用过程中,唤起插件时,如果插件需要获取用户信息(如用户名称、最近消费金额和时间),需要用户授权

概述 - 图1

插件开发和使用涉及到的场景

场景1:小程序及小程序模板开发

  • 小程序和小程序模板(特别是后者)在开发时,需要明确是否支持插件热插拔,如果需要支持,需预留可插拔的位置,需要定义相关的参数传递处理逻辑,例如对于插件所需要的不同参数的获得与传递

  • 在发布时,需要明确自己将对插件暴露什么样的参数id、类型和描述,这样插件开发者可以通过这些约定来获得这些参数

场景2:插件开发

  • 插件的业务目标决定了它被唤起时需要获得主体程序什么样的信息,这个时候需要定义插件期待的信息参数id:例如对于电子发票小服务,它希望在唤起的时候能够获得主体小程序当前门店的名称

  • 另外对于插件所需要的功能包,需要和开放平台进行签约

场景3:插件的购买和启用

  • 商家在选择购买和启用插件的时候,如果插件需要获得商家小程序的信息,需显示出来并让商家进行明确的授权:例如对于电子发票插件,订购和启用时,会提示该插件需要在运行时获得当前门店的名称,这需要商家明确同意,否则不能购买和启用

  • 如果插件需要的信息在商家小程序中并不存在,则表明插件不适用于该商家,不能进行购买和启用

场景4:插件的使用

  • 用户可以在主体小程序唤起插件,例如在门店点击电子发票进行开票。插件如果在这个时候需要获得用户相关的信息如用户名称、当前门店消费金额和时间,需要用户明确授权

  • 对于商家已在购买和启用时所授权的信息如门店名称,主体小程序在唤起插件时会根据插件所需要的参数id传递过来相关的信息

  • 插件利用获得的用户信息和商家信息,运行相关业务逻辑对用户提供服务