站内搜索

微信通过某个事件推送消息

在model里新建CustomServiceModel 为微信接口

<?phpnamespace Home/Model;use Think/Model;class CustomServiceModel extends Model {// protected $tableName = 'wxmenu_statistics';private static $wxInterFace;public function Service($uid,$json){$Model = D('Token');$access_token = $Model->getToken();$url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$access_token;$this->getHttpResponsePOST($url,$json);}//获取微信凭证 ACCESS_TOKENpublic function getACCESS_TOKEN($uid){$interface = M('wxinterface','wxmenu');$data = $interface->getInterfacebyUid($uid);$AppId = $data[0]['AppId'];$AppSecret = $data[0]['AppSecret'];$ctime = $data[0]['ctime'];if(time()-$ctime<7200){$ACCESS_TOKEN = $data[0]['token'];}else{$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$AppId."&secret=".$AppSecret;$info = $interface->getHttpResponseGET($url);$arr = json_decode($info,$assoc=true);$ACCESS_TOKEN = $arr['access_token'];$data[0]['token'] = $ACCESS_TOKEN;$data[0]['ctime'] = time();$interface->save($data[0]);}return $ACCESS_TOKEN;}/** 远程获取数据,GET模式* 注意:* 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了* 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'//cacert.pem'* @param $url 指定URL完整路径地址* @param $cacert_url 指定当前工作目录绝对路径* return 远程输出的数据*/public function getHttpResponseGET($url) {$curl = curl_init($url);//curl_setopt($curl, CURLOPT_URL, $url);//curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, CURL_SSLVERSION_TLSv1);//SSL证书认证curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);//不认证curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果$responseText = curl_exec($curl);//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容curl_close($curl);return $responseText;}/*** 远程获取数据,POST模式* 注意:* 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了* 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'//cacert.pem'* @param $url 指定URL完整路径地址* @param $cacert_url 指定当前工作目录绝对路径* @param $para 请求的数据* @param $input_charset 编码格式。默认值:空值* return 远程输出的数据*/function getHttpResponsePOST($url, $para, $input_charset = '') {if (trim($input_charset) != '') {$url = $url."_input_charset=".$input_charset;}$curl = curl_init($url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, CURL_SSLVERSION_TLSv1);//SSL证书认证//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//SSL证书认证curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);//严格认证curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果curl_setopt($curl,CURLOPT_POST,true); // post传输数据curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据$responseText = curl_exec($curl);//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容curl_close($curl);return $responseText;}}?>//---TOkenmodel 获取token<?php namespace Home/Model;use Think/Model;class TokenModel extends Model{public function getToken(){$data['uid']=330;$arr = $this->table('wxm_wxmenu_interface')->where($data)->find();//file_put_contents("g.txt",$arr['token'],FILE_APPEND);return $arr['token'];}public function setToken($token){$to['token']=$token;$arr= $this->table('wxm_wxmenu_interface')->where('uid=330')->save($to);//file_put_contents("s.txt",$token,FILE_APPEND);return true;} }?>//---然后在需要使用的action里面新增方法//文本回复public function msgReturn($openid,$array){$json = '{"touser":"'.strval($openid).'","msgtype":"text","text":{"content":"'.$array['content'].'"}}';//调用客服接口$uid=330;D("CustomService")->Service($uid,$json);}//最后在需要使用的地方调用此接口//修改未审核状态 //-----赵信------//public function modn(){$data['xid']=$_GET['xid'];$data['bstate']=$_GET['bstate'];$data['update_time'] = time();$customer=M("Customer");$member = M('members');$cus = $customer->where('xid='.$data['xid'])->find();$m_data = $member->where('oid='.$cus['oid'])->find();$c=$customer->save($data);if($c){if($data['bstate']==5){$array['content'] ="您推荐的客户“".$cus['xname']."”已被确认审核通过";$this->msgReturn($m_data['openid'], $array);}else if($data['bstate']==3){$array['content'] ="您推荐的客户“".$cus['xname']."”已被确认已被推荐";$this->msgReturn($m_data['openid'], $array);}else if($data['bstate']==4){$array['content'] ="您推荐的客户“".$cus['xname']."”已被确认为已成交客户";$this->msgReturn($m_data['openid'], $array);}}$this->redirect("success_customer");}

以上就是微信通过某个事件推送消息的内容,

  • 上一篇:微信单图文、多图文推送、列表中排序
  • 下一篇:php微信公众号开发(2)百度BAE搭建和数据库使用