支付宝小程序门店插件 协议·概述

2020-09-18 14:24 更新

概念说明

一个门店插件的定义包含插件类型、UI 规范、协议规范三个属性。

  • 插件类型

插件类型定义了插件的业务属性,比如 秒杀插件拼团插件、预约插件等。每种类型的插件会由一或多个协议组成。门店主体小程序在唤起插件的时候会根据协议规范逐个调用协议 API。

  • UI 规范

指插件需要遵循的 UI 标准,标准由门店平台定义。

  • 协议规范

协议规范是指插件实现时需要遵照的规范。

协议说明

协议实现

协议实现依赖插件的接口导出能力,插件可以在接口文件(在 plugin.json 配置文件中指定,详情请参见 插件配置文件)中导出 js 接口,供插件的使用者调用,例如:

export default {
  events: {
    onInit: funciont(storeCtx) {
        // 插件初始化回调
        // todo
    }
  },
  methods: {
    attrApi: function() {
      // 获取插件属性api
      // todo
    }
  }
}

对于门店小程序来说,平台定义了唯一的协议调用 this.props.onEmit

this.props.onEmit(this, apiName, param)

因此插件实现者需要导出如下接口:

export default {
  methods: {
    apiName: function(storeCtx, param) {
      console.log('invoke api success!')
    }
  }
}

入参说明

  • storeCtx (按照规范自动注入,直接使用即可)

平台自动注入门店上下文信息,包含如下属性,插件开发者可以按需获取。

{
  "pid": "2088xxxxxxxx",
  "storeId": "1000",
  "storeName": "同乐坊Z空间店"
}

主体小程序 APPID,插件开发者可以通过 my.getParentAppIdSync() 进行获取。

  • param

调用参数,协议调用需要其他参数(业务参数)放在这个对象里面,由主体小程序调用时传入。

调用示例

调用示例(官方门店小程序协议调用)

this.props.onEmit(this, "selectItems", { "size": 3 })

实现示例(三方开发者协议实现)

export default {
  events: {
    onInit: function(storeCtx) {
        // 插件初始化回调
        // todo
    }
  },
  methods: {
    // 组装用户选择的商品
    selectItems: function(storeCtx, param) {
      const { pid } = storeCtx;
      const { size } = param;
      console.log('select items success!')

      
      return new Promise(resolve => {
        asyncAction((result) => {
          resolve(result);
        });
      });
    },
    // 删除商品
    deleteItem: function(storeCtx, param) {
      console.log('delete item success!')
    }
  }
}
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号