到插件市场申请权益中心插件,申请的应用选择消费者端应用。
申请 商家应用-权益中心插件权限包(提交工单申请,需要提供消费者端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 }) } } });