微信小程序 服务通知推送 (发送模板消息)
先上图吧,别到时候看了半天 以为 不是你需要的文章哈
ok,如果符合要求的话 咱们就继续往下看 ,接下来 咱们按步骤一步一步的来哈
1.在微信公众平台里设置一个模板
添加个模板先 ,如果 没有模板 在页面切换下 tab选择 一个 合适的模板 ,然后选择下合适的字段 添加下,切换到公共模板库选择模板和字段,选择好确定后就可以了,然后有了模板后,在我的模板里选择你创建的模板 查看详情
应该是这样一个页面哈,有了这些 就可以下一步了
2.前端调起授权,别告诉我你们公司没前端,没前端的话 ,那你就吧我这段代码粘贴到小程序里吧,有前端的 话 他应该懂的
setPhoto:function(){
wx.requestSubscribeMessage({
tmplIds: ['5aoiQO173x-B1RyN8d0d4lpgNtOl_qms4d8d'],
success (res) {
console.log(res);
},
fail (fail) {
console.log(fail);
}
})
},
把这段给前端用哈,然后下一步
3.后端进行推送
/**微信小程序 推送相册完成或失败的信息***/ static function PushCompleteMsg($title='',$begin_time='',$end_time='',$between='',$remark='',$open_id,$urls) { self::GetAccessTokens(); $url ='https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='.Yii::$app->redis->get('access_token');
//这里是个大坑 注意我数组里的 key值,要保证和模板里的每个值都一样,如果不明白 和我上面的图片里的值对应下 你就知道怎么传了哈
$data = array( 'thing1'=>array('value'=>$title), 'date4'=>array('value'=>$begin_time), 'date5'=>array('value'=>$end_time), 'time6'=>array('value'=>$between), 'thing3'=>array('value'=>$remark) ); if(empty($urls)){ $datas = array( 'touser' =>$open_id, 'template_id' =>'5aoiQO17范德萨发范德萨发范德萨发', 'miniprogram_state' =>'trial', //这个是版本 体验版 正式版啥的 这个你们定 'lang' => 'zh_CN', 'data' => $data ); }else{ $datas = array( 'touser' =>$open_id, 'template_id' =>'5aoiQO173x-B打发大水', 'page' =>$urls, //这个是连接地址有的 需要进入小程序查看详情就加上这个参数 ,这个地址是小程序前端地址哦 'miniprogram_state' =>'trial', 'path' =>$url, 'lang' => 'zh_CN', 'data' => $data ); } //最后请求第三方就可以了哈 $header = array("Content-Type:multipart/x-www-form-urlencoded"); $response = Utils::curlPost($url,$datas,5,$header,'json'); $res = json_decode($response,true); print_r($res);die; }
/**
* 传入数组进行HTTP POST请求
*/
static function curlPost($url, $post_data = array(), $timeout = 5, $header = "", $data_type = "") {
$header = empty($header) ? '' : $header;
//支持json数据数据提交
if($data_type == 'json'){
$post_string = json_encode($post_data);
}elseif($data_type == 'array') {
$post_string = $post_data;
}elseif(is_array($post_data)){
$post_string = http_build_query($post_data, '', '&');
}
$ch = curl_init(); // 启动一个CURL会话
curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查 // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
//curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
//curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
//curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($ch, CURLOPT_POST, true); // 发送一个常规的Post请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); // Post提交的数据包
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // 设置超时限制防止死循环
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
//curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //模拟的header头
$result = curl_exec($ch);
// 打印请求的header信息
//$a = curl_getinfo($ch);
//var_dump($a);
curl_close($ch);
return $result;
}
可以了么 有问题叫我哈