Home >Backend Development >PHP Tutorial >Detailed explanation of the group message function of PHP WeChat public account template

Detailed explanation of the group message function of PHP WeChat public account template

墨辰丷
墨辰丷Original
2018-05-29 09:29:364220browse

This article mainly introduces in detail the WeChat public account template message mass sending php code example, which has certain reference value. Interested friends can refer to it

WeChat template messages can only be sent to If a person wants to send a group message, he needs to loop through php and send it in sequence.

Note that if the template message is intermittent and unstable, your access_token token update cache may not be timely and expired. You can check it according to the log file. It is recommended to update it every 300 seconds. Otherwise it will be very annoying. .

The template id needs to be obtained by setting the industry in the public account.

 <?php 
 //使用方法.直接在页面的逻辑中增加fahuo_wechat();即可.函数要事先引用. 
 function fahuo_wechat($shopid){ 
      if(_cfg("sendmobile")){ 
      $thisdb = System::load_sys_class("model"); 
      $access= getAccessToken();//模板id api等 
     
    $access_token=$access[&#39;access_token&#39;]; 
    $template_id = $access[&#39;template_id&#39;]; 
    $sql = "select * from `@#_member_go_record` where `shopid`=&#39;$shopid&#39; and status = &#39;已付款,未发货,未完成&#39;"; 
    $row = $thisdb->GetList($sql); 
     
    $postUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$access_token"; 
    foreach($row as $k=>$v){ 
    $uid=$v[&#39;uid&#39;]; 
    $member_band = $thisdb->GetOne("SELECT b_code,b_data FROM `@#_member_band` WHERE `b_uid` = &#39;$uid&#39; and b_data!=&#39;&#39; "); 
        //if(empty($member_band)){return false;} 
        //return $row ; 
      if(!empty($member_band[&#39;b_data&#39;])){ 
 
$url=WEB_PATH."/mobile/user/buyDetail/".$shopid; 
$mobile=$v[&#39;company_money&#39;]; 
      $data = array( 
 
        "touser" => $member_band[&#39;b_code&#39;],//一次只发一个人 
 
        "template_id"=>$template_id, 
 
        "url"=>$url,  
//回调 
        "data" => array( 
 
          &#39;first&#39; =>array( 
 
            "value"=>"您好,".$v[&#39;username&#39;].",您的牌局已组建成功。", 
 
            "color"=>"#888", 
 
            ), 
 
          "keyword1"=>array( 
 
            "value"=>$v[&#39;shopname&#39;], 
 
            "color"=>"#888", 
 
            ), 
//echo date(&#39;Y-m-d H:i:s&#39;,$itemlist[0][&#39;q_end_time&#39;]) 
          "keyword2"=>array( 
 
            "value"=>date(&#39;Y-m-d H:i:s&#39;,$v[&#39;time&#39;]), 
 
            "color"=>"#888", 
 
            ), 
 
          "keyword3"=>array( 
 
            "value"=>"20分钟", 
 
            "color"=>"#888", 
 
            ), 
 
          "keyword4"=>array( 
 
            "value"=>round($v[&#39;moneycount&#39;])."金豆", 
 
            "color"=>"#888", 
 
            ), 
 
          "keyword5"=>array( 
 
            "value"=>"待定", 
 
            "color"=>"#888", 
 
            ), 
 
          "remark"=>array( 
 
            "value"=>" 点击查看详情", 
 
            "color"=>"#054ff7", 
 
            ), 
 
        ), 
 
      ); 
  https_request($postUrl,json_encode($data),$mobile);//发货通知的内容.发给微信服务器   
    } 
       
       
    //发送的发货提示的字符串组合成功.准备发送.  
         
   
    } 
    } 
  } 
    //微信发货准备 
    
   function getAccessToken() { 
  // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 
  $path = G_CACHES.&#39;access_token.json&#39;;   
   
  $data = json_decode(file_get_contents($path),true); 
  //print_r($data);exit; 
  if ($data[&#39;expire_time&#39;] < time()) {//过期时间小于当前时间,说明过期,需要更新 
    $appid=$data[&#39;appid&#39;]; 
    $appsecret=$data[&#39;appsecret&#39;]; 
   $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; 
   $json=getCurl($url); 
   $data= json_decode($json,true); 
   //print_r($res);exit; 
   $access_token = $data[&#39;access_token&#39;]; 
   if ($access_token) { 
      $thisdb = System::load_sys_class("model"); 
    $wechat= $thisdb->GetOne("select * from `@#_wechat_config` where id = 1");// 获取appid 
     
    $data[&#39;expire_time&#39;] = time() + 300;//5分钟更新一次.一天请求微信500多次,不超过2000次的限额就行.  
    //这里的300最好不要设置的过大.否则会经常提示令牌过期,没法发消息.官方说2小时过期.其实是骗人的.远远达不到. 
    $data[&#39;access_token&#39;] = $access_token; 
    $data[&#39;template_id&#39;]=$wechat[&#39;template_id&#39;]; 
    $data[&#39;appid&#39;]=$wechat[&#39;appid&#39;]; 
    $data[&#39;appsecret&#39;]=$wechat[&#39;appsecret&#39;]; 
    $fp = fopen($path, "w"); 
    fwrite($fp, json_encode($data)); 
    fclose($fp); 
   } 
  }  
  return $data; 
 } 
  function https_request($url,$data = null,$mobile=&#39;&#39;){ 
 
    $curl = curl_init();//初始化一个CURL会话 
 
    curl_setopt($curl, CURLOPT_URL, $url);//这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项 
 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); 
 
    if (!empty($data)){ 
 
      curl_setopt($curl, CURLOPT_POST, 1); 
 
      curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
     //传递一个作为HTTP “POST”操作的所有数据的字符串。 
 
    } 
 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    //讲curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 
 
    $output = curl_exec($curl); 
 
    if(!strstr($output,":0"))
  //如果微信发信后的回执中不包含:0,说明一定是没发送成功.所以要把不成功的放在日志中.方便找原因. 
{ 
$path1 = G_CACHES.&#39;access_token2.json&#39;;//access_token2.json为日志保存目录,请对应修改. 
 file_put_contents($path1, $output,FILE_APPEND);//FILE_APPEND表示用追加的方式保存日志 
} 
 
    if(strstr($output,"40003")&&$mobile)//如果是40003说明,,客户没关注我们,发信息提醒他. 
{ 
_sendmobile($mobile,&#39;请关注我们的公众号.否则收不到微信约牌通知,谢谢。&#39;);// 
} 
  
    curl_close($curl); 
 
    return json_decode($output); 
 
  } 
   
      //判断用户名是否是普通管理员 
 function is_gly($name){ 
if(strstr($name,"gly")) 
{ 
  return true; 
} 
else 
{ 
  return false; 
} 
  }

The above is the entire content of this article. I hope it will be helpful to everyone. Learning helps.


Related recommendations:

php method to implement WeChat simulated login, obtain user list and group sending message function

thinkphp5 and swoole asynchronous mailGroup sendingImplementation method

##thinkphp5 and swoole use SMTP to achieve asynchronous mail Examples of emailbulk

The above is the detailed content of Detailed explanation of the group message function of PHP WeChat public account template. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn