首頁 微信小程式 微信開發 微信公眾平台開發-群發訊息

微信公眾平台開發-群發訊息

Feb 20, 2017 pm 02:44 PM
微信大眾平台

本文主要介紹微信公眾平台開發群發信息,這裡整理了詳細的資料來說明微信公共平台群發信息的流程,有需要的小伙伴可以參考下

1、目的

  完成在微信公眾號中群發訊息。這裡只是完成簡單的文字發送。也可以發送語音圖片等,只是發送數據格式不同而已,下面有鏈接,可以查詢數據類型的數據發送格式。

2、群發簡訊的流程

  1. 取得測試公眾帳號(有帳號的可以不用測試帳號,不過正式的帳號限制比較多)

  2. 用戶關注上面的公眾帳號

  3. 透過appid和appsecret取得我們的access_token

    *​​&*
  4. 透過access_token群發送簡訊


3、取得測試公眾帳號+ 追蹤公眾號碼

1)、公眾測驗帳號取得

  訪問上面的連接,選擇“接口測試號碼申請”獲得直接打開http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index透過微信客戶端掃碼登入即可登入。

  登入即可取得一個測試公眾帳號的資訊。主要有appId和appsecret兩個參數,這將唯一標示一個公眾號,並且需要將他們作為參數來獲取使用者的資訊。 、

微信公眾平台開發-群發訊息

2)、設定介面資訊

這一步可以參考微信存取說明,該頁提供一個php的實例下載,很簡單基本上修改一下自訂的TOKEN就好了,然後把驗證頁面放到自己的伺服器上。

       提供我做的例子:

        準備資源:

        網域+空間(我的是sae空間驗證+萬網網域名稱)、僅使用萬網網域名稱)、僅有驗證檔案

        網域所指向的空間根目錄我建立了一個wx_sample.php

wx_sample.php

<?php
/**
 * wechat php test
 */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
 public function valid()
 {
  $echoStr = $_GET["echostr"];

  //valid signature , option
  if($this->checkSignature()){
   echo $echoStr;
   exit;
  }
 }

 public function responseMsg()
 {
  //get post data, May be due to the different environments
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

   //extract post data
  if (!empty($postStr)){
    /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
     the best way is to check the validity of xml by yourself */
    libxml_disable_entity_loader(true);
     $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "<xml>
       <ToUserName><![CDATA[%s]]></ToUserName>
       <FromUserName><![CDATA[%s]]></FromUserName>
       <CreateTime>%s</CreateTime>
       <MsgType><![CDATA[%s]]></MsgType>
       <Content><![CDATA[%s]]></Content>
       <FuncFlag>0</FuncFlag>
       </xml>";    
    if(!empty( $keyword ))
    {
      $msgType = "text";
     $contentStr = "Welcome to wechat world!";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
     echo $resultStr;
    }else{
     echo "Input something...";
    }

  }else {
   echo "";
   exit;
  }
 }
  
 private function checkSignature()
 {
  // you must define TOKEN by yourself
  if (!defined("TOKEN")) {
   throw new Exception(‘TOKEN is not defined!‘);
  }
  
  $signature = $_GET["signature"];
  $timestamp = $_GET["timestamp"];
  $nonce = $_GET["nonce"];
    
  $token = TOKEN;
  $tmpArr = array($token, $timestamp, $nonce);
  // use SORT_STRING rule
  sort($tmpArr, SORT_STRING);
  $tmpStr = implode( $tmpArr );
  $tmpStr = sha1( $tmpStr );
  
  if( $tmpStr == $signature ){
   return true;
  }else{
   return false;
  }
 }
}

?>
登入後複製

 然後填寫設定資訊Token (一定要與上面的wx_sample.php中的token一致)、URL(wx_sample.php的位址)

微信公眾平台開發-群發訊息

 然後提交就可以了

  如果提示失敗,請檢查Token與URL【如果是自己的網域和空間,請備案; 百度sae、新浪sae的需要自己申請而且認證通過(就是自己拍一個手握證件照上傳,很簡單的最短2天就o了),這一步驟必須】

 3)設定JS介面安全網域

  填這個網域是一定不要帶protocol的,比如說http://www.sagosoft. com/;  這樣是不對的,這是URL不是網域

  網域應該是類似www.sagosoft.com這樣的【否則在微信js-sdk接入時會提示invalid url domain】

微信公眾平台開發-群發訊息

4)關注公眾號

  用戶只有關注了這個公眾號了,才能通過打開有公眾號信息的鏈接去授權第三方登錄,並獲取用戶信息的操作。故我們還需要用我們的微信關注微信號,操作如下:

  還是剛剛那個登錄成功後跳轉的頁面,我們可以看到,該頁面有一個二維碼,我們可以通過掃描該二維碼進行關注,關注成功在右邊的「用戶列表」會多一個用戶的信息。如下圖所示:


微信公眾平台開發-群發訊息

5)配置回呼函數

我們在微信客戶端訪問第三方網頁(即我們自己的網頁)的時候,我們可以透過微信網頁授權機制,我們不僅要有前面獲取到的appid和appsecret還需要有當用戶授權之後,回調的域名設置,即用戶授權後,頁面會跳到哪裡。具體的配置如下:

  還是在剛剛的頁面,有一個“網頁授權獲取用戶基本信息”,點擊後面的修改

微信公眾平台開發-群發訊息

填寫回呼的域名:

  域名是上面配置的根域名,假如你上面“接口配置信息” 填寫的url 為zcr.sinaaappc.com/wx_sample.php,這裡只要填寫zcr.sinaaappc .com  就可以了。

微信公眾平台開發-群發訊息

  如果你的網址沒有被列入過黑名單,就會在頂部出現

微信公眾平台開發-群發訊息

微信公眾平台開發-群發訊息

注意:

1、這裡填寫的是域名(是一個字串),而不是URL,因此請勿加http://等協議頭;
2、授權回呼域名配置規格為全域名,例如需要網頁授權的域名為:www.qq.com,配置以後此域名下面的頁面http://www.qq.com/music.html 、  http://www.qq .com/login.html 都可以進行OAuth2.0鑑定。但ttp://pay.qq.com  、http://music.qq.com 、 http://qq.com無法進行OAuth2.0鑑權

  到這裡,我們就完成了公眾號測試帳號的取得和配置,已經用戶關注微信公眾號。

4、透過appid和appsecret取得我們的access_token*​​&*

  access_token是公眾號的全域唯一票據,公眾號呼叫各介面時都需使用access_token。開發者需要進行妥善保存。 access_token的儲存至少要保留512個字元空間。 access_token的有效期限目前為2小時,需定時刷新,重複取得將導致上次取得的access_token失效。

取得方法:

http請求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

參數說明


參數是否必須說明grant_type是取得access_token填入client_credentialappid是第三方使用者唯一憑證secret是第三方使用者唯一憑證金鑰,即appsecret
回傳說明

正常情況下,微信會傳回下述JSON封包給公眾號碼:

{"access_token":"ACCESS_TOKEN","expires_in" :7200} 


參數說明access_token取得的憑證expires_in

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

例子:

获取access_token:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx41cb8dbd827a16e9&secret=d4624c36b6795d1d99dcf0547af5443d

返回数据:

{
 "access_token": "qR5UK2vMf5aTHV8e-uB10FZW0caTZm_1kbkUe4OPK2ILVvNaoa7pLzYWqLUAmx6Sjq1E7pKHrVAtuG0_1MPkqmDfOkm2750kaLWNk59DS-iDOpjjxompJtXa3WhbN5FKRWNhADAVAR",
 "expires_in": 7200
}
登入後複製

5、通过access_token群发短信

  在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。

请注意:

1、对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个分组;
2、对于认证服务号虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败;
3、具备微信支付权限的公众号,在使用群发接口上传、群发图文消息类型时,可使用标签加入外链;
4、开发者可以使用预览接口校对消息样式和排版,通过预览接口可发送编辑好的消息给指定用户校验效果。

1)根据分组进行群发【订阅号与服务号认证后均可用】

调用接口:

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN 在body添加如下数据(以JSON格式数据发送)——发送其他格式数据,只需要改里面参数信息即可,具体可查看微信官方文档:

参数说明:


*​​&*憑證有效時間,單位:秒
参数是否必须说明
filter用于设定图文消息的接收者
is_to_all用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据group_id发送给指定群组的用户
group_id群发到的分组的group_id,参加用户管理中用户分组接口,若is_to_all值为true,可不填写group_id
mpnews用于设定即将发送的图文消息
media_id用于群发的消息的media_id
msgtype群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video,卡券为wxcard
title消息的标题
description消息的描述
thumb_media_id视频缩略图的媒体ID

例子:发送给所有人

url:

https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=KBoNONaJZ4-KhafQVJoQ6VBX0F-bls7nAsJBn8Fy7GLwav4Be1lRJcob1RHH6wW35IxxFwkJnZfnc-On9EQITg3oxEWUw7O2YyVW9naDknu6PQX9fnSmQcr8ojTK8Ug-HDTcAAABXN

发送的json数据:发送给所有人

返回数据:

参数意义:

参数说明
type媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),图文消息为news
errcode错误码
errmsg错误信息
msg_id消息发送任务的ID
msg_data_id消息的数据ID,该字段只有在群发图文消息时,才会出现。可以用于在图文分析数据接口中,获取到对应的图文消息的数据,是图文分析数据接口中的msgid字段中的前半部分,详见图文分析数据接口中的msgid字段的介绍。

错误码及其以及查询:

使用postman模拟https请求发送如下图所示:

微信公眾平台開發-群發訊息

2)根据OpenID列表群发【订阅号不可用,服务号认证后可用】

发送的http请求url:(注意:和上面的不同)

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN

数据格式:

其中 OPENID1和OPENID2是我们要发送的微信用户openId(用户的唯一标示)。

例子:

发送"oF3PcsnsrMiJzEwalZZbAfWQpxCI","oF3PcshH1CUIhR_WYau6swUiPzlw" 两个用户。

内容为:hello from boxer.欢迎来到百度

url:

https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=wRyTbnsiu18ssEhMPLf4bDfeT-Bt6e6tgR4CQGVLBipRcyJPkdAKPYfM6-qkKuHUN8uRKJh6Xvm0OuAdFgqOo8Ru8hoDxl-cGc9bh-ezJb2ZUcJSnQk2s416zI8kbEOfOGYdAFARJB

json数据:

{
 "touser":[
 "oF3PcsnsrMiJzEwalZZbAfWQpxCI",
 "oF3PcshH1CUIhR_WYau6swUiPzlw"
 ],
 "msgtype": "text",
 "text": { "content": "hello from boxer.<a href=‘http://www.php.cn/‘>欢迎希沃学院</a>"}
}
登入後複製

返回数据:

{
 "errcode": 0,
 "errmsg": "send job submission success",
 "msg_id": 3147483654
}
登入後複製

使用postman模拟发送请求如下:

微信公眾平台開發-群發訊息

微信号接收到的内容:

微信公眾平台開發-群發訊息


更多微信公眾平台開發-群發訊息相关文章请关注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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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