人在家中坐,班从天上来
一直以来,微信Api一直很强势。这次也不例外。
既然模板消息不能使用了,那只能加班改为订阅消息。
一、微信公众平台部分
1.1 要想使用微信订阅号功能,首先你要在微信公众平台申请开启订阅号功能。
1.2 开通成功后,添加订阅模板。这里的模板id是用来推送消息的。
模板添加完成以后,微信公众平台的操作就已经完成了。
二、前端部分
微信订阅号的前端部分是很简单的,只需要用户也必须用户触发点击操作以后,调用一个接口就行了
wxml
<view class="reservation-btn" bindtap="reservationBtnClik">立即预订</view>
js
//预定
reservationBtnClik(){
let that=this;
wx.requestSubscribeMessage({
tmplIds: ['ra8YQ4iPXXUH-QyEo7qQAJTCg1p4qCwCtoD9PxgVR2Q'],
success(res) {
console.log(res);
if (res.errMsg =="requestSubscribeMessage:ok"){
that.reservationBtnClik1();
}
},
fail(err) {
console.log(err);
}
})
},
至此,前端部分已经完成。不过这里需要注意的是,一次点击最多有三个模板id
后台
后台和模板消息大体一样
//测试订阅号消息
if($type == 'subscribeMessage'){
$main_data = [
'character_string1' => ['value' => 'r123456'],
'thing2' => ['value' => 'r123456'],
'name3' => ['value' => '十个以内的纯汉字'],
'number5' => ['value' => '110'],
'thing6' => ['value' => 'r123456']
];
$url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='.$access_token;
$data = array(
'touser' => $userModel->getOpenid(),
'template_id' =>'ra8YQ4iPXXUH-QyEo7qQAJTCg1p4qCwCtoD9PxgVR2Q',
'page' => 'pages/orderDetail/orderDetail?order_no='.$order_info['order_no'],
'data' => $main_data
);
}
$content = json_encode($data, JSON_UNESCAPED_UNICODE);
log_info('请求链接为:'.$url);
log_info('请求参数为:'.$content);
$res = _curl_post($url, $content);
注意:这里比较坑的是,模板消息一定要严格按照微信公众平台要求的字段的类型填写。否则就是47003
例如character_string1就代表,你只能填写数字、字母、符号;不能填写汉字。
此外,还需要特别注意的是。和模板消息不同的是,微信订阅号消息用户虽然点击同意一次,但是可以多次推送。不像模板消息中的formid一旦使用就不能再次推送了。所以后台一定要做好推送的限制,避免频繁重复推送。