支付寶小程序門店插件 協(xié)議·概述

2020-09-18 14:24 更新

概念說明

一個門店插件的定義包含插件類型、UI 規(guī)范、協(xié)議規(guī)范三個屬性。

  • 插件類型

插件類型定義了插件的業(yè)務(wù)屬性,比如 秒殺插件、拼團插件、預(yù)約插件等。每種類型的插件會由一或多個協(xié)議組成。門店主體小程序在喚起插件的時候會根據(jù)協(xié)議規(guī)范逐個調(diào)用協(xié)議 API。

  • UI 規(guī)范

指插件需要遵循的 UI 標準,標準由門店平臺定義。

  • 協(xié)議規(guī)范

協(xié)議規(guī)范是指插件實現(xiàn)時需要遵照的規(guī)范。

協(xié)議說明

協(xié)議實現(xiàn)

協(xié)議實現(xiàn)依賴插件的接口導(dǎo)出能力,插件可以在接口文件(在 plugin.json 配置文件中指定,詳情請參見 插件配置文件)中導(dǎo)出 js 接口,供插件的使用者調(diào)用,例如:

export default {
  events: {
    onInit: funciont(storeCtx) {
        // 插件初始化回調(diào)
        // todo
    }
  },
  methods: {
    attrApi: function() {
      // 獲取插件屬性api
      // todo
    }
  }
}

對于門店小程序來說,平臺定義了唯一的協(xié)議調(diào)用 this.props.onEmit。

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

因此插件實現(xiàn)者需要導(dǎo)出如下接口:

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

入?yún)⒄f明

  • storeCtx (按照規(guī)范自動注入,直接使用即可)

平臺自動注入門店上下文信息,包含如下屬性,插件開發(fā)者可以按需獲取。

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

主體小程序 APPID,插件開發(fā)者可以通過 my.getParentAppIdSync() 進行獲取。

  • param

調(diào)用參數(shù),協(xié)議調(diào)用需要其他參數(shù)(業(yè)務(wù)參數(shù))放在這個對象里面,由主體小程序調(diào)用時傳入。

調(diào)用示例

調(diào)用示例(官方門店小程序協(xié)議調(diào)用)

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

實現(xiàn)示例(三方開發(fā)者協(xié)議實現(xiàn))

export default {
  events: {
    onInit: function(storeCtx) {
        // 插件初始化回調(diào)
        // 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!')
    }
  }
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號