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

互联网 16-12-30
在model里新建CustomServiceModel 为微信接口
<?php    namespace 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_TOKEN    public 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中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:微信单图文、多图文推送、列表中排序

相关资讯