PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > ThinkPhp教程 > 正文

    Thinkphp 微信公众平台开发-模板消息

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:使用thinkphp开发微信公众平台,今天在做模板消息功能,把自己封装好的类分享给大家开发模板消息,即如何用程序发送模板消息功能,分为以下...
    使用thinkphp开发微信公众平台,今天在做模板消息功能,把自己封装好的类分享给大家
    开发模板消息,即如何用程序发送模板消息功能,分为以下三个部分:
    1.申请模板消息权限 【这里不讲解】
    2.开发模板消息SDK
    3.构造模板消息体并发送

    开发模板消息SDK

    模板消息也是使用access token作为授权来发送。

    在thinkphp  Common\Lib里新建一个WeiXin.class.php类,代码如下:

    1. <?php 
    2.  
    3. namespace Common\Lib; 
    4.  
    5. class WeiXin{ 
    6.      public $appid
    7.      public $appsecret
    8.      public  $access_token
    9.       
    10.       public function __construct(){ 
    11.        $config = C("THINK_SDK_WXOAUTH"); 
    12.          
    13.          $this->appid = $config['APP_KEY']; 
    14.          $this->appsecret = $config['APP_SECRET']; 
    15.         //判断access_token是否存在,不存在重新获取 
    16.          if(session('access_token_bd')){ 
    17.               $this->access_token =  session('access_token_bd'); 
    18.          }else
    19.               $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret; 
    20.               $res = json_decode($this->http_request($url),true); 
    21.               $this->access_token = $res['access_token']; 
    22.               session(array('name'=>'access_token_bd','value'=>$this->access_token,'expire'=>7200));//保存access_token  
    23.          } 
    24.      
    25.           
    26.           
    27.           
    28.       } 
    29.        
    30.       //发送模板消息 
    31.       public function send_template_message($data){ 
    32.                 
    33.          
    34.               $url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->access_token; 
    35.               $res=$this->http_request($url,$data); 
    36.               return $res
    37.               return json_decode($res,true); 
    38.       } 
    39.  
    40.      
    41.     public function template($uid,$template_id,$data,$url,$topcolor){ 
    42.          
    43.        $member=M('member')->where(array('id'=>$uid))->find(); 
    44.        $openid=$member['openid']; //根据用户id获取数据库保存的openid
    45.         switch($template_id){ 
    46.            case 1: 
    47.            $tpl="PTaLGaNTX96ygKhzdaSV3b5sMeR639vtnJcjK830pfI";//客户预约通知 
    48.            break
    49.            case 2: 
    50.            $tpl="dy2JfGwROKwiLps0jUUXzq9v5hOkBWduFbA3ph5CTrQ";//预约成功提醒 
    51.            break
    52.            case 3: 
    53.            $tpl="esK5kFS8BHx6EiDJ2mkszKsijTU5TJKDyEEuqEessHY";//任务通知 
    54.            break
    55.            case 4: 
    56.            $tpl="mtklmdaJ2TCWOS8Taoxjm15bVFRa0Rj5GtdVqvPlLq0";//订单完成通知 
    57.            break
    58.            case 5: 
    59.            $tpl="pF0szsKuAh2u7ziqH3Im0GscRwrXaUNwXGrUNZKYHy8";//任务完成通知 
    60.            break
    61.            case 2: 
    62.            $tpl="pXFC-Lc4TgiAl-nQWMMbD7eLoi25SIWgSU3IXrcKcmw";//订单待支付提醒 
    63.            break
    64.            default
    65.             $tpl = ''
    66.             break
    67.             
    68.         } 
    69.         if(!$tpl){ 
    70.           return ''
    71.         } 
    72.         $template=array('touser'     =>$openid
    73.                         'template_id'=>$tpl
    74.                         'url'        =>$url
    75.                         'topcolor'   =>$topcolor
    76.                         'data'       =>$data 
    77.                  ); 
    78.      
    79.      
    80.     return $template
    81.      
    82.     } 
    83.      
    84.      
    85.      
    86.      
    87.     protected function http_request($url,$data=null){ 
    88.       $curl = curl_init(); 
    89.       curl_setopt($curl,CURLOPT_URL,$url); 
    90.       curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE); 
    91.       curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE); 
    92.       if(!emptyempty($data)){ 
    93.          curl_setopt($curl,CURLOPT_POST,1); 
    94.          curl_setopt($curl,CURLOPT_POSTFIELDS,$data); 
    95.       } 
    96.       curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); 
    97.       $output = curl_exec($curl); 
    98.       curl_close($curl); 
    99.       return $output
    100.    
    101.   } 
    102.  
    103.  
    104.    


    构造模板消息体并发送

     

    1. $uid=get_cookie('uid');//获取用户id 
    2.                  $data= array('first'  => array('value'=>urlencode("测试数据"),'color'=>''), 
    3.                               'keyword1' => array('value'=>urlencode("王三"),'color'=>''), 
    4.                               'keyword2' => array('value'=>"15250735030",'color'=>''), 
    5.                               'keyword3' => array('value'=>"2016-8-26",'color'=>''), 
    6.                               'keyword4' => array('value'=>urlencode("预约拉货"),'color'=>''), 
    7.                               'remark'   => array('value'=>urlencode("感谢选择我们"),'color'=>''),                   
    8.                         ); 
    9.                  $wxtlp = new \Common\Lib\WeiXin(); 
    10.                  $template = $wxtlp->template($uid,1,$data); 
    11.                  $res=$wxtlp->send_template_message(urldecode(json_encode($template))); 
    12.                  $data=json_decode($res,true); 
    13.                  print_r($data);exit; 

    在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

        {
               "errcode":0,
               "errmsg":"ok",
               "template_id":"Doclyl5uP7Aciu-qZ7mJNPtWkbkYnWBWVja26EGbNyk"
           }

     

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-83-5054-1.html
    相关热词搜索: