到插件市场申请权益中心插件,申请的应用选择消费者端应用。
申请 商家应用-权益中心插件权限包(提交工单申请,需要提供消费者端appid)。
校验入口:https://smf.taobao.com/investment/verify.htm
输入申请的消费者端应用的appID。
配置页面配置好需要展示的权益类型,券类型以及奖池类型后,点击完成配置。
请注意:
针对优惠券的权益配置部分,目前支持【店铺券-全网自动推广】 【商品券-全网自动推广】【店铺券-商家抽奖平台】 【店铺券-购物小程序专享券】 【商品券-购物小程序专享券】等渠道,其中全网自动推广渠道券为默认会在相应渠道透出的,所有消费者可见。其他渠道券为不会自动透出,发送给特定消费者才可见,其中推荐使用购物小程序专属渠道。
在商家端应用里提供权益插件的访问入口。
"plugins": {
"myPlugin": {
"version": "0.0.12",
"provider": "3000000002026202"
}
},
/*axml代码,跳转插件方式*/ 跳转到插件页面:
跳转方式1:
<view class="nav" onTap="navigateToPlugin">To Plugin Page (using my.navigate)</view>
跳转方式2:
<navigator url="plugin://myPlugin/orightindex-page" class="nav">To Plugin Page (using navigator)</navigator>
/*js代码*/
//引入插件
var plugin = requirePlugin("myPlugin");
//这个bridge用于和插件进行数据通信
const bridge = {
bizCode: "业务身份",
//此处输入想配置的业务身份(消费者端appid)
//这个方法用于获取插件中用户选择的奖池ID
getCheckBenefitID({ ename, poolID }) {
console.log(poolID, ename); //此处可以使用云数据库接口或者云函数接口获取ename,用于后续接口调用
}
}
Page({
data: {},
onLoad() { plugin.setBridge(bridge); },
onReady() { }, //这个方法用于跳转到插件页面
navigateToPlugin() {
my.navigateTo({ url: 'plugin://myPlugin/orightindex-page', });
}
});
IDE中生成对应的商家端预览码,商家账号登录PC千牛客户端中使用小程序,使用插件创建权益及奖池。
PC千牛预览: 点击查看。
勾选这个单选按钮后,会自动触发页面中的getCheckBenefitID方法,在这个方法中做逻辑处理,获取ename。
alibaba.benefit.draw
抽奖奖池,进入链接查看详细接口文档:点击查看。
Tips:
①(ename)奖池ename在勾选奖池时可以获得。
② 该接口需获取到C端用户的授权才能使用,需要在配套的C端手淘商家应用内调用my.authorize获取scope.benefitSend,由用户授权,之后调用alibaba.benefit.draw才能抽奖成功。
消费者端应用代码:
1.初始化云sdk, 请参考文档: 点击查看。
2.用户授权,接口调用。
/*axml代码*/
<view> <button size="default" type="primary" onTap="draw">draw</button> </view>
/*js代码*/
const { cloud } = getApp();
Page({
data: {},
onLoad(query) {
// 页面加载 // 先进行用户授权,scopes为 scope.benefitSend
my.authorize({
scopes:'scope.benefitSend',
success:res=>{
my.alert({ title:'success', content:JSON.stringify(res) })
}
})
},
async draw(){
try {
const result = await cloud.topApi.invoke({
api: 'alibaba.benefit.draw',
data:{'ename':'传入插件中获取的奖池ename','app_name':'promotioncenter-消费者端appid'}
});
my.alert({ content: 'success ' + JSON.stringify(result) });
} catch (e) { my.alert({ content: 'error ' + e.message }) }
}
});