搜尋
首頁微信小程式微信開發微信開發用戶群的介紹

微信開發用戶群的介紹

Mar 22, 2017 pm 04:26 PM
微信開發

1:創建用戶組

   微信跟QQ一樣可以創建組名,刪除組名,修改組名,查詢組名,這些操作都是一系列的接口,只需要調用相關的接口,並以curl的形式進行發送,便可以獲得相關的結果

創建分組

一個公眾帳號,最多支持創建100個分組。

介面呼叫請求說明

http要求方式: POST(請使用https協定)https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN

POST資料格式:json

POST資料範例:{"group":{"name":"test"}}

參數說明

參數 說明

access_token 呼叫介面憑證

name 分組名字(30個字元以內)

傳回說明正常時的回傳JSON封包範例:

{

    "group": {

        "id": 107, 

        "name": "test"

 # } }

   下面是相關程式碼的實作

我們需要透過curl的形式將封包傳送過去,傳回的結果是一個StdClass形式的json數據,我們需要將stdClass進行轉換為陣列形式,所以我們創建一個func.php文件,後面的組的相關操作都基於這些函數

<?php  
       //设定appID 和secret
	   define ("APPID","wx70fe852945a945b6",true);
	   define ("SECRET",&#39;d05c2fc161d71c8317331a39044a7d93&#39;,true);
	   $APPID="wx70fe852945a945b6";
	   $SECRET="d05c2fc161d71c8317331a39044a7d93";
      function curl($url,$data=null)
	  {
		   //初始化
		   $curl=curl_init();
		   curl_setopt($curl, CURLOPT_URL, $url);//设置传输链接
           curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);//设置SSL凭证
           curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false );
           curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否显示在浏览器上
		   if(!empty($data))
		   {
			   //进行post数据
			   curl_setopt($curl,CURLOPT_POST,1);
			   curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
			   }
			$result=curl_exec($curl);//执行curl
			curl_close($curl);//关闭curl
			return $result;
		  }
		   function transition ($data)
	  {
		    if(is_object($data))
			{
				  $data=(array)$data;
				}
			if(is_array($data))
			{
				 foreach($data as $key=>$value)
				 {
					   $data[$key]=transition($value);
					 }
				}
				return $data;
		  }
		  //将多维数组转成字符串
		   function recount($result)
		{
			    if(is_array($result))
				{
			   foreach($result as $key=>$value)
			   {    
				  recount($value); 
				  return $value;
				   }
				  
				}
				
				
			}
		  //access_token链接地址
		  $access_token_url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$SECRET";
		 //获取access_token.将返回的json格式转成数组,返回一个数组形式的access_token
		 $access_token=(array)json_decode(curl($access_token_url));
		 $access_token=$access_token['access_token'];
		
?>

#利用上面的access_token我們便可以做我們想做的任何事了

首先我們進行群組的創建,我們將檔案命名為creategroup.php

     1  介面展示

看起來很簡單的HTML的程式碼,相信有HTML基礎的都能寫出

 那麼如何創建群組呢?很簡單,我們只需將創建群組的API連結提交過去就可以了

相關的程式碼

  <?php   echo &#39;<meta http-equiv="content-type" content="text/html; charset=utf-8">'; 
?>
nbsp;html>


<title>无标题文档</title>


      
         

新建分组

                                    
      alert('执行成功,三秒之后将自动跳回主页')";  //设置跳转回主页   echo "<script>setTimeout(window.navigate(\"getgroup.php\"),3000)</script>"; } else {echo "<script>alert(&#39;执行失败&#39;)</script>";} } create_group();   }      ?>

2:接下來是展示所有的群組名,我們先看看微信官方的文件

   查詢所有分組

介面呼叫請求說明

http請求方式: GET(請使用https協定)https://api.weixin.qq.com/ cgi-bin/groups/get?access_token=ACCESS_TOKEN

參數說明

參數 說明

access_token 呼叫介面憑證

#傳回說明正常時的回傳JSON封包範例:

{
    "groups": [
        {
            "id": 0, 
            "name": "未分组", 
            "count": 72596
        }, 
        {
            "id": 1, 
            "name": "黑名单", 
            "count": 36
        }, 
        {
            "id": 2, 
            "name": "星标组", 
            "count": 8
        }, 
        {
            "id": 104, 
            "name": "华东媒", 
            "count": 4
        }, 
        {
            "id": 106, 
            "name": "★不测试组★", 
            "count": 1
        }
    ]
}

參數說明

參數 說明

groups 公眾平台分組資訊清單

id ​​分組id,由微信指派

##name 分組名字,UTF8編碼

count 分組內使用者數量

錯誤時的JSON封包範例(此範例為AppID無效錯誤):

    官方文件對於傳回的json資料已經很明了,一個群組名稱裡邊包含了基本的信息,組id,組名以及組內的使用者數。我們無法直接將返回的json資料直接顯示到頁面上,那麼我們要如何解析json呢?微信給我們回傳的是一個stdclass類型的json,所以第一步我們需要將json轉為數組,php中有一個json_decode()函數,此函數能夠將json資料轉為stdclass的數組,而stdclass並不等於數組,所以我們還要講stdclass轉換成array形式,在func.php中transition()函數就有這樣的功能。

我們先看看頁面顯示樣子,看看我們透過curl從騰訊上取得的資料是什麼樣的

上圖我們建立了一個表,第一行是一個建立新組的功能,在以下的行中,我們能夠看到組編號,組名,以及組內人數。那麼這個是如何做到的呢?很簡單,當我們已經取得到返回回來的json資料之後,我們對json進行資料包裝,把json做成陣列形式。那麼如何實現數據包裝呢?也很簡單,我們不斷的呼叫解析函數,將它最終變成數組的形式,然後遍歷這個數組就行了。

展示原始碼:getGroup.php

 <body>
     <div id="box">
    <div id="group">
<?php 
      require "func.php";
  $groupurl="https://api.weixin.qq.com/cgi-bin/groups/get?access_token={$access_token}";
  $result=json_decode(curl($groupurl));//获取包装之后的数据,以数组的形式存储
  //$result=curl($groupurl);
   //将STDclass类型转为数组类型
  function G_transition ($data)
  {
    if(is_object($data))
{
  $data=(array)$data;
}
if(is_array($data))
{
 foreach($data as $key=>$value)
 {
   $data[$key]=G_transition($value);
 }
}
return $data;
  }
  $result=G_transition($result);  
  function G_recount($result)
{
    if(is_array($result))
{
   foreach($result as $key=>$value)
   {    
  G_recount($value); 
  return $value;
   }
}
}
$resultG=G_recount($result);
echo "<table border=\"1px dashed\" bordercolor=\"#FF3333\">";
     echo "<tr><th colspan=\"3\"><a href=\"createGroup.php\">创建一个新组</a></th></tr>";
 echo "<th>编号</th><th>组名</th><th>人数</th>";
for($i=0;$i<count($resultG);$i++)
{
  echo "<tr>";
 foreach ($resultG[$i] as $key=>$value)
   { 
  if($key==&#39;id&#39;)
  {
  echo "<td  align=\"center\"title=\"\">[$value]<a href=\"delete.php?num=$value\">删除</a><a href=\"modify.php?num=$value\">修改</a></td>";
  }
  else 
  {
        echo "<td> $value</td>";
  }
}
echo "</tr>";
}
echo "</table>";
?>
      </div>
      <hr/> 
       <div>
          <hr/>

  3:我們如何修改分組名稱

     修改分组名

接口调用请求说明

http请求方式: POST(请使用https协议)https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN

POST数据格式:json

POST数据例子:{"group":{"id":108,"name":"test2_modify2"}}

参数说明

参数 说明

access_token 调用接口凭证

id 分组id,由微信分配

name 分组名字(30个字符以内)

返回说明 正常时的返回JSON数据包示例:

{"errcode": 0, "errmsg": "ok"}

错误时的JSON数据包示例(该示例为AppID无效错误):

  官方文档提供了修改分组名的接口,所以我们可以做一个修改的链接和一个修改组的modify.php文件

   根据官方文档,我们需要通过组id才能进行修改,根据我们在创建组的时候传输过来的json数据中我们可以获取到组id,所有我们可以通过创建链接的方式,当点击链接的时候,会把组id以get的方式传送到modify文件中,而modify.php可以通过$_GET的形式接收组id.

   我们先写好这个传送组id的链接,

      for($i=0;$i<count($resultG);$i++)
{
  echo "<tr>";
 foreach ($resultG[$i] as $key=>$value)
   { 
  if($key==&#39;id&#39;)
  {
  echo "<td  align=\"center\"title=\"\">[$value]<a href=\"delete.php?num=$value\">删除</a><a href=\"modify.php?num=$value\">修改</a></td>";
  }
  else 
  {
        echo "<td> $value</td>";
  }
}
echo "</tr>";
}

代码中,我们对返回的数组进行遍历,如果发现key值是id,那么我们将值获取过来并且加入到链接尾部,注意get方式的写法

      echo "

[$value]删除修改 ";

跳转到modify.php页面后,我们进行相关的处理,在该页面上,我们仍然有一个HTML输入框

代码如下:

    <form action="#" method="post">
      <p>更新组名</p>
      <input type="hidden" name="num" value="<?php echo $_GET[&#39;num&#39;]?>">
      <input  type="text"id="modify" name="name">
      <input type="submit" value="修改" name="-1">
  </form>
<?php 
    //此程序用于修改标签组
function modify()
{     $num=$_POST[&#39;num&#39;];
      $name=$_POST[&#39;name&#39;];
  require "func.php";
  $modify_url="https://api.weixin.qq.com/cgi-bin/tags/update?access_token=$access_token";
  //post过去的数据
  $poststr="
         {
   \"tag\":
         {
  \"id\":\"$num\",
  \"name\":\"$name\"
 }
 }
  ";
  $result=(array)json_decode(curl($modify_url,$poststr));
  $result=$result[&#39;errmsg&#39;];
  if($result==&#39;ok&#39;)
  {
     echo "<script type=\"text/javascript\">
         alert(\"$result\");
      </script>";
//进行页面跳转
 echo "<script type=\"text/javascript\">
             setTimeout(window.location.href=\"getgroup.php\",3000);
    </script>";
  }
else
{
 echo "<script type=\"text/javascript\">
         alert(&#39;wrong&#39;);
      </script>";
}
}
if(isset($_POST[&#39;-1&#39;]))
{
modify();
}
?>

如果执行成功,那么会进行弹出提醒框,等待五秒后自动跳转回getGroup.php页面

4:删除组

   组名一般不允许删除,但是微信平台仍然给出了相关的删除接口

   注意本接口是删除一个用户分组,删除分组后,所有该分组内的用户自动进入默认分组。 接口调用请求说明

http请求方式: POST(请使用https协议)https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=ACCESS_TOKEN

POST数据格式:json

POST数据例子:{"group":{"id":108}}

参数说明

参数 说明

access_token 调用接口凭证

group 分组

id 分组的id

返回说明 正常时的返回JSON数据包示例:

通过传递的json数据,我们只需要将组id进行传递到delete.php页面并进行相关的删除操作即可

 代码显示:

    <?php 
    //该段程序用来删除组标签,成功之后会给予提示,并且跳转回getgroup.php页面
function delete()
{
$num=$_GET[&#39;num&#39;];//接收来自getgroup页面的编号
require "func.php";
$delete_url="https://api.weixin.qq.com/cgi-bin/tags/delete?access_token=$access_token";
$data=json_encode(array("tag"=>array("id"=>$num)));
//如果curl函数执行成功,那么会返回一个状态值
if($result=curl($delete_url,$data))
{
 echo "<script type=\"text/javascript\">alert(&#39;执行成功,三秒之后将自动跳回主页&#39;)</script>";
 //设置跳转回主页
  echo "<script type=\"text/javascript\">setTimeout(window.history.back(-1),8000)</script>";
}
else
{echo "<script type=\"text/javascript\">alert(&#39;执行失败&#39;)</script>";}
}
delete();
?>

5:对组成员进行批量移动

   有时候我们需要对组内的成员进行移动到其他的组里面,在这点上,微信平台也给出了相应的接口我们先看官方的文档说明

    批量移动用户分组

接口调用请求说明

http请求方式: POST(请使用https协议)https://api.weixin.qq.com/cgi-bin/groups/members/batchupdate?access_token=ACCESS_TOKEN

POST数据格式:json

POST数据例子:{"openid_list":["oDF3iYx0ro3_7jD4HFRDfrjdCM58","oDF3iY9FGSSRHom3B-0w5j4jlEyY"],"to_groupid":108}

参数说明

参数 说明

access_token 调用接口凭证

openid_list 用户唯一标识符openid的列表(size不能超过50)

to_groupid 分组id

返回说明 正常时的返回JSON数据包示例:

{"errcode": 0, "errmsg": "ok"}

 从传递的json数据可以看到,具有一个open_list和一个to_groupid,分别表示要移动的组成员的openid和将要移动的组id.那么我们如何开始移动呢?现在已基本清楚了,只需要把openid传递到open_list,将组id传递到to_groupid中,然后将包装好的json数据通过curl函数post过去.在批量分组之前,我们还要知道一件事,如何获取用户的相关信息,这个信息指的是用户微信上设置的性别,省份,国家,语言,所属组等等的相关信息,同样,微信提供了获取用户信息的接口,参照上述解决方法就可以获取到用户的相关的信息

以下是获取到的用户表

通过第一列的选择之后,在选择要分的组,点击移动就可以将用户移动到想要的组里面,下图是移动后的展示

所属组编号发生了变化

源代码展示

<form action="move.php" method="post">
          <table border="1px">
               <th>选择移动</th>
               <th>昵称</th>
               <th>性别</th>
               <th>语言</th>
               <th>所在城市</th>
               <th>省份</th>
               <th>国家</th>
               <th>头像</th>
               <th>加入时间</th>
               <th>备注名</th>
               <th>所属组</th>
               <th rowspan="10">
                     <?php 
    echo " <select name=\"group\">";
 $count=count($resultG);
 foreach($resultG as $key)//遍历包装好的json数据,已经转成了多维数组
 {
 echo "<option value=\"$key[id]\" >$key[name] </option>";                  $count--;  //获取组ID
 }
echo "</select>"; 
echo "<input type=\"submit\" name=\"-1\" value=\"移动\">";
?>
               </th>
              <?php 
       foreach($list[&#39;data&#39;] as $key)
   {
      //$list[&#39;data&#39;]是已经包装好的json数据,将原来的stdclass转为了多维数组
     // $result=count($key);
      //var_dump($result);
    foreach($key as $value)
{
 echo "<tr>";
   $info_url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$value&lang=zh_CN";
   $info=transition(json_decode(curl($info_url)));                              //var_dump($info);
   //echo "<hr>";
  //  global $userinfo;
//$userinfo=$info;
//var_dump($userinfo);
   foreach($info as $key=>$value)
   {
   //对表格进行相关的修饰,进行相关的判断
    switch($key)
{ 
  //如果是id,那么做成一个复选框
 case "openid":
     echo "<td align=\"center\">
 <input type=\"checkbox\" value=\"$value\"name=\"openid[]\"/>
      </td>";
     case "subscribe"://忽略相关的描述,不对这个字段生成列
 break;
 //如果是性别,性别值1代表男,0代表女,2代表并未填写
 case "sex":
      if($value==1)
  {
 echo "<td>男</td>"; }
  else if($value==0)
  {
 echo "<td>女</td>";  }
 else
   {
   echo "<td>暂未填写</td>"; }
  break;
 //如果是头像链接,那么生成一个50*50像素的图片
 case "headimgurl";
 echo "<td>
      <img  src=\"$value\" height=\"50px\"    style="max-width:90%"\50px\" alt="微信開發用戶群的介紹" >
       </td>";
 break;
 //以下是默认列
 case "nickname":
 case "language":
 case "city":
 case "province":
 case "country":
 case "subscribe_time":
 echo "<td>$value</td>";
 break;
 //如果remark的值为空,那么备注名是空值
 case "remark":
  if(empty($value))
  {
   echo "<td>暂无</td>";
  }
else
{
echo "<td>$value</td>";
}
break;
case "groupid":
      echo"<td>$value</td>";
  break;
}
   }
 echo "</tr>";
}
   }
  ?>
          </table>
        </form>
       </div>
       <hr / color=\"#9900CCd\">
   </div>
</body>
move.php的代码 
  <?php  
    //此程序用于移动分组
  $member=array();
 $member=$_POST[&#39;openid&#39;];//获取选中的openid
 $groupid=$_POST[&#39;group&#39;];//获取组id
require "func.php";
$move_url="https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=$access_token";
    for($i=0;$i<count($member);$i++)
{
  $poststr="{\"openid\":\"$member[$i]\",\"to_groupid\":$groupid}";
   $result=curl($move_url,$poststr);
}
$result=(array)json_decode($result);
if($result[&#39;errmsg&#39;]==&#39;ok&#39;)
{
 echo "
   <script type=\"text/javascript\">window.alert(&#39;移动成功&#39;)</script>
   <script type=\"text/javascript\">
    setTimeout(\"window.location.href=&#39;getgroup.php&#39;\",5000);
   </script>
 ";
}
?>


以上是微信開發用戶群的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器