支付宝小程序门店插件 协议·概述
概念说明
一个门店插件的定义包含插件类型、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!')
}
}
}