订阅通知是一个用户主动订阅、服务号按需下发的通知能力。使用过程请遵守《微信公众平台服务协议》《微信公众平台运营规范》。 用户在前述场景主动订阅后,服务号可通过接口向用户发送订阅通知,如信用卡动账提醒、物流到货通知等。订阅通知分为一次性订阅和长期订阅,一次性订阅是指用户订阅一次,服务号可不限时间地下发一条对应的订阅通知;长期订阅是指用户订阅一次,服务号可长期多次下发通知,长期订阅通知仅向政务民生、医疗等公共服务领域开放。 微信订阅消息和微信模版消息的区别在于模版消息可以无视用户的主观意识,直接发给用户;而订阅消息则必须用户同意系统才能发给用户。这样避免了给用户带来的骚扰。 因为微信有打算使用订阅消息来取代模版消息,所以知识付费新增了订阅消息功能,知识付费系统可以选择使用模版消息还是订阅消息。下面我们就来看看知识付费是如何加订阅消息功能的。 通过微信文档,我们可以看到微信公众号的订阅消息是通过wx-open-subscribe标签来调起选择的。如下事例:
<wx-open-subscrib template="TenvU22BA1jCp4YHfYEpRuESXYReQyDuhs4vbdWA99I" id="subscribe-btn">
<script type="text/wxtag-template" slot="style">
<style>
.subscribe-btn {
color: #fff;
background-color: #07c160;
}
</style>
</script>
<script type="text/wxtag-template">
<button class="subscribe-btn">
一次性模版消息订阅
</button>
</script>
</wx-open-subscribe>
<script>
var btn = document.getElementById('subscribe-btn');
btn.addEventListener('success', function (e) {
console.log('success', e.detail);});
btn.addEventListener('error',function (e) {
console.log('fail', e.detail);
});
</script>
根据事例我们可以了解使用wx-open-subscribe标签给template属性传入你需要弹出的订阅消息模板ID即可,多个以英文逗号分隔。 知识付费是如何实现的呢? 首先是前端显示,在知识付费调起支付,选择微信支付然后调起微信订阅消息的弹窗,项目根目录中public/wap/first/zsff/components/payment下的index.html中我们加入订阅消息的标签,传入需要的模板ID。
<wx-open-subscribe
v-if="isWechat && templateId"
:template="templateId"
@success="onSuccess"
@error="onError"
>
<script type="text/wxtag-template" slot="style">
<style>
button {
display: block;
width: 100%;
height: 40px;
border-radius: 20px;
border: none;
background-color: #2c8eff;
font-family: inherit;
font-weight: normal;
font-size: 14px;
color: #fff;
}
</style>
</script>
<script type="text/wxtag-template">
<button>立即支付</button>
</script>
</wx-open-subscribe>
用户选择完成后执行订单功能,后台按照用户的选择结果发送相应的订阅消息。
知识付费根目录下extend/service中的RoutineTemplateService类中加有关于微信公众号订阅消息的全部接口,sendTemplate方法就是给用户发送订阅消息的方法,通过这个方法我们可以发送各种订阅消息。
知识付费根目录application\wap\model\routine中的RoutineTemplate类里是各个订阅消息的发送方法。如下是专题购买成功发送的订阅消息,其中$data中的所有索引要和微信公众号平台中加的订阅消息内容一致。
$data['character_string1']['value'] = $orderId;
$data['amount3']['value'] = $order['pay_price'];
$data['time2']['value'] = date('Y-m-d H:i:s',time());
$data['thing6']['value'] = '您购买的专题已支付成功!';
RoutineTemplate::sendOrderSuccess($data,$order['uid'],$site_url . Url::build('wap/special/grade_list'));
这样我们就实现了微信订阅消息功能了。
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star: http://github.crmeb.net/u/defu 不胜感激 !
|