修改下以前的记录
小程序的订阅消息和模板消息通用,不过小程序的订阅消息必须有用户支付或点击之后才能使用,不能主动推送。
send_message(){
//订阅消息
uni.getSetting({
withSubscriptions: true,
success(res) {
console.log('success');
console.log(res);
//是否打开订阅消息开关
if (res.subscriptionsSetting.mainSwitch) {
if (res.subscriptionsSetting.itemSettings != null) {// 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权
console.log(res.subscriptionsSetting.itemSettings);
let moIdState = res.subscriptionsSetting.itemSettings; // 用户同意的消息模板id
console.log(typeof(moIdState));
// moIdState = JSON.parse(moIdState)
for(let key in moIdState){
console.log(key)
console.log(moIdState[key])
if (moIdState[key] === 'accept') {
console.log('接受了消息推送');
} else if (moIdState[key] === 'reject') {
console.log("拒绝消息推送");
} else if (moIdState[key] === 'ban') {
console.log("已被后台封禁");
}
}
console.log('moIdState--------'+moIdState)
} else {
uni.showModal({
title: '提示',
content: "授权开启服务通知",
success() {
uni.requestSubscribeMessage({
tmplIds: ['uUFS0kB-z3mo-BQYhulvMHZlYmirqIWqXOX8OdbXSho','Idv1S1aBYGgItR1JZ8x36BWgSP-5D8yj6HRPbchwqQg','u3IKQAf8hWCGvJOyJOOIVgVpSbFlD3EnGehWzC-Zv14'],
success(res) {
console.log(res);
},
fail(res) {
console.log(res)
}
})
},
fail() {
uni.showToast({
title: '开启失败',
icon: 'none'
})
}
})
}
} else {
console.log('未开启');
uni.showModal({
title: '提示',
content: "授权开启服务通知",
success() {
uni.requestSubscribeMessage({
tmplIds: ['uUFS0kB-z3mo-BQYhulvMHZlYmirqIWqXOX8OdbXSho','Idv1S1aBYGgItR1JZ8x36BWgSP-5D8yj6HRPbchwqQg','u3IKQAf8hWCGvJOyJOOIVgVpSbFlD3EnGehWzC-Zv14'],
success(res) {
console.log(res);
},
fail(res) {
console.log(res)
}
})
},
fail() {
uni.showToast({
title: '开启失败',
icon: 'none'
})
}
})
}
},
fail(res) {
console.log('获取setting失败'+res);
}
})
},
首先依然是获取accesstoken ,地址栏拼接参数用http_curl来获取,然后将openid和模板id和内容用post请求发送
public function getaccess_tonken()
{
$xcx_info=DB::name('xcx')->where('status',1)->find();
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$xcx_info['appid']."&secret=".$xcx_info['secret'];
//api接口
$content = $this->http_curl($url);
if (!empty($content['access_token'])) {
session('access_token',$content['access_token']);
}
return $content['access_token'];
}
public function sendwxmessage()
{
$param= $this->request->param();
// $access_token=session('access_token');
$openid='';//目标用户的openid
$templateId="";//订阅消息的模板id
$data=array(
'name1'=>array('value'=>'系统发布'),
'time2'=>array('value'=>date('Y-m-d H:i:s', time()) ),
'thing3'=>array('value'=>"您有新的案件消息",'color'=>'#333333'),
);
$access_token=$this->getaccess_tonken();
$url="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".$access_token;
$params1=array(
"touser"=>$openid,
"template_id"=>$templateId,
"data"=>$data
);
$json_template = json_encode($params1);
$params = $this->curl_post($url,urldecode($json_template));
$params = json_decode($params,true);
print_r($params);
if ($params['errcode']==0){
return '发送成功';
}else{
return '发送失败';
}
$this->success('请求成功!' );
}
public function http_curl($url){
//用curl传参
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//关闭ssl验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}
public function curl_post($url , $data=array()){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// POST数据
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}