我们作为服务商,开发小程序模板后,帮我们的子商户发布小程序。
第一个问题:
最近在小程序上加入了小程序直播功能,主要的代码:
1、app.json
"plugins": {"live-player-plugin": {"version": "1.0.4","provider": "wx2b03c6e691cd7370"} },
2、app.js
let livePlayer = requirePlugin('live-player-plugin')
现在的问题是,我们的子商户,有的已经有小程序直播的权限,有的没有。我们给没有直播权限的子商户发布含以上代码的模板时,会提示错误信息:
miniprogram has no permission to plugin[wx2b03c6e691cd7370] (因为商户没有直播权限,所以也没法授权给我们)
针对没有权限的商户,我们就必须在代码里把以上的代码全部注释,再次提交模板才能成功发布代码。也就是说针对直播的组件,我们就得有两套代码。
请问上述问题该如何解决?
第二个问题:
我们近期也对接了微信支付券功能,同样在代码上引入了插件,主要的代码:
1、app.json
"plugins": {"sendCoupon": {"version": "1.1.2","provider": "wxf3f436ba9bd4be7b"}},
"usingComponents": {"send-coupon": "plugin://sendCoupon/send-coupon"},
同样的问题,在子商户没有在公众号添加微信支付券这个插件的时候,我们发布的代码如果含有以上代码,也会提示错误信息:
miniprogram has no permission to plugin[wx2b03c6e691cd7370] ,我们总不能因为要发布代码,就联系之前的所有商户进公众号添加微信支付券吧?毕竟大部分商家可能不需要这个功能。这种情况下,再结合小程序直播的代码,我们可能得维护4套模板。(没直播没商家券的、有直播没商家券的、没直播有商家券的,有直播有商家券的)。
请问上述问题该如何解决?
1、app.json中去掉插件相关引入代码
2、上传小程序代码前获取商家已经开通的插件列表
https://api.weixin.qq.com/wxa/plugin?access_token= post参数{"action":"list"}
再判断是否已经开通相关插件,如直播插件的appid为wx2b03c6e691cd7370,那么可以判断返回的插件list字符串是否包含该appid。
如果有开通,则extJson中插入该插件的引用(plugins开始的这串)
{"ext":{"你自己定义的扩展参数":"扩展参数值","haveLive":1},"plugins": {"live-player-plugin": {"version": "1.0.16", "provider": "wx2b03c6e691cd7370"}},"recompile": true}
如果没有开通则extJosn为
{"ext":{"你自己定义的扩展参数":"扩展参数值","haveLive":0}}
3、上传代码时传入ext_json
https://api.weixin.qq.com/wxa/commit?access_token= post参数 {"template_id":模板ID,"ext_json":"2中返回的json字符串","user_version":"版本号","user_desc":"版本描述"}
4、在小程序中通过 wx.getExtConfig 获取参数 haveLive, 当为0时,表示没有开通直播插件,这时候需要隐藏所有可能出现直播相关的界面。不然小程序审核时会被驳回,要求类目要增加选择“社交 → 直播”类目(因为有直播相关功能,却没有开通小程序直播插件。在小程序中要使用直播功能,要么使用官方提供的小程序直播插件;要么设置类目为“社交 → 直播”后,使用其他途径进行直播)
第一个问题,试了好几次还是得两套。第二个我们暂时还没有接入支付劵,不清楚