实现步骤:
1.先在前端获取fromid,openid
2.将fromid,openid存入对应用户的数据库
3.下来就是写模板消息,查询对应用户的fromid和openid,将key值对应写上
4.获取access_token,保存时间7200
5.调用模板方法即可
6.模板需要在公众号里边设置,每项就是一个key
前端:
<form bindsubmit="submitForm" report-submit > <button class="m-publicBtn" wx:if="{{isPreview}}" class="save_btn" bindtap='onTapPublish' form-type="submit">发布</button> </form> js获取fromid存数据库 // 存储fromId submitForm:function(e){ console.log(e) var formid = e.detail.formId; var userId = wx.getStorageSync('user_id'); wxb.Post('/api/automatic.Msg/formId', { formid: formid, userId: userId }, function (data) { }); }, 模板消息代码: /* author:咔咔 address:陕西西安 wechat:fangkangfk */ // 模板消息 public function temMsg() { $userId = $this->request->param('userId'); $user = new AutomaticModel(); $userData = $user->where([ 'id'=>$userId ])->find(); $formid = $userData['fromId'] ; //进入小程序的页面 $page = 'pages/index/index'; //openid $openid = $userData['openid']; if(!$openid||!$formid)die('failed!'); if($userData['examine'] == 2){ $key1 = '审核成功';//发送的消息 }else{ $key1 = '审核失败';//发送的消息 } $key2 = date('Y-m-d H-i-s',time()); $key3 = '13020733815'; $access_token = $this->returnAssKey(); $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$access_token; $data = array(//这里一定要按照微信给的格式 "touser"=>$openid, "template_id"=>'模板id', "page"=>"pages/index/index", "form_id"=>$formid, "data"=>array( "keyword1"=>array( "value"=>$key1, "color"=>"#173177" ), "keyword2"=>array( "value"=>$key2, "color"=>"#173177" ), "keyword3"=>array( "value"=>$key3, "color"=>"#173177" ), ), ); $res = $this->postCurl($url,$data,'json');//将data数组转换为json数据 // if($res){ // echo json_encode(array('state'=>4,'msg'=>$res)); // }else{ // echo json_encode(array('state'=>5,'msg'=>$res)); // } } public function returnAsskey(){ $appid = '小程序id'; $secret = '秘钥'; $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret.''; $ass_key = $this->curl_get($url); $a1 = $ass_key->access_token; return $a1; } public function postCurl($url,$data,$type) { if($type == 'json'){ $data = json_encode($data);//对数组进行json编码 $header= array("Content-type: application/json;charset=UTF-8","Accept: application/json","Cache-Control: no-cache", "Pragma: no-cache"); } $curl = curl_init(); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false); if(!empty($data)){ curl_setopt($curl,CURLOPT_POSTFIELDS,$data); } curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_HTTPHEADER,$header); $res = curl_exec($curl); if(curl_errno($curl)){ echo 'Error+'.curl_error($curl); } curl_close($curl); return $res; } public function curl_get($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); $err = curl_error($curl); curl_close($curl); return json_decode($data);//对数据进行json解码 }
审核成功失败或者失败调用一下即可