php微信公眾平台開發之微信群發資訊執行個體分享

來源:互聯網
上載者:User
這篇文章主要為大家詳細介紹了php公眾平台開發之群發資訊,具有一定的參考價值,感興趣的小夥伴們可以參考一下

1、目的

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

2、群發簡訊的流程

擷取測試公眾帳號(有帳號的可以不用測試帳號,不過正式的帳號限制比較多)使用者關註上面的公眾帳號通過appid和appsecret擷取我們的access_token通過access_token群發簡訊

3、擷取測試公眾帳號 + 關注公眾號

1)、公眾測試帳號擷取

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

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

2)、配置介面資訊

這一步可以參照接入說明,該頁提供一個php的執行個體下載,很簡單基本上修改一下自訂的TOKEN就好了,然後把驗證頁面放到自己的伺服器上。

這裡我提供我做的一個例子:

準備資源:

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

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

wx_sample.php

<?php/*** wechat php test*///define your tokendefine("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($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 dataif (!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 yourselfif (!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 rulesort($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鑒權。但http://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

參數說明:


返回說明

正常情況下,會返回下述JSON資料包給公眾號:

複製代碼 代碼如下:

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

錯誤時會返回錯誤碼等資訊,JSON資料包樣本如下(該樣本為AppID無效錯誤):


複製代碼 代碼如下:

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

例子:

擷取access_token:

複製代碼 代碼如下:

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

返回資料:


{"access_token": "qR5UK2vMf5aTHV8e-uB10FZW0caTZm_1kbkUe4OPK2ILVvNaoa7pLzYWqLUAmx6Sjq1E7pKHrVAtuG0_1MPkqmDfOkm2750kaLWNk59DS-iDOpjjxompJtXa3WhbN5FKRWNhADAVAR","expires_in": 7200}

5、通過access_token群發簡訊

  在公眾平台網站上,為訂閱號提供了每天一條的群發許可權,為服務號提供每月(自然月)4條的群發許可權。而對於某些具備開發能力的公眾號運營者,可以通過進階群發介面,實現更靈活的群發能力。

請注意:

1、對於認證訂閱號,群發介面每天可成功調用1次,此次群發可選擇發送給全部使用者或某個分組;
2、對於認證服務號雖然開發人員使用進階群發介面的每日調用限制為100次,但是使用者每月只能接收4條,無論在公眾平台網站上,還是使用介面群發,使用者每月只能接收4條群發訊息,多於4條的群發將對該使用者發送失敗;
3、具備支付許可權的公眾號,在使用群發介面上傳、群發圖文訊息類型時,可使用<a>標籤加入外鏈;
4、開發人員可以使用預覽介面校對訊息樣式和排版,通過預覽介面可發送編輯好的訊息給指定使用者校正效果。

1)根據分組進行群發【訂閱號與服務號認證後均可用】

調用介面:

複製代碼 代碼如下:

http請求方式: POSThttps://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN

在body添加如下資料(以JSON格式資料發送)——發送其他格式資料,只需要改裡面參數資訊即可,具體可查看官方文檔:


{"filter":{"is_to_all":false,"group_id":2},"text":{"content":"CONTENT"},"msgtype":"text"}

參數說明:

例子:發送給所有人

url:

複製代碼 代碼如下:

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

發送的json資料:發送給所有人


{"filter":{"is_to_all":true},"text":{"content":"CONTENT"},"msgtype":"text"}

返回資料:

{"errcode": 0,"errmsg": "send job submission success","msg_id": 1000000003}

參數意義:

錯誤碼及其以及查詢:

全域錯誤碼解析

使用postman類比https請求發送如所示:

2)根據OpenID列表群發【訂閱號不可用,服務號認證後可用】

發送的http請求url:(注意:和上面的不同)


複製代碼 代碼如下:

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

資料格式:


複製代碼 代碼如下:

{"touser":["OPENID1","OPENID2"],"msgtype": "text","text": { "content": "hello from boxer."}}

其中OPENID1和OPENID2是我們要發送的使用者openId(使用者的唯一標示)。

例子:

發送"oF3PcsnsrMiJzEwalZZbAfWQpxCI","oF3PcshH1CUIhR_WYau6swUiPzlw" 兩個使用者。

內容為:hello from boxer.<a href='www.baidu.com'>歡迎來到百度</a>

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.seewoedu.com/'>歡迎希沃學院</a>"}}


返回資料:


{"errcode": 0,"errmsg": "send job submission success","msg_id": 3147483654}


使用postman類比發送請求如下:

號接收到的內容:

致謝:感謝您的閱讀!

總結:以上就是本篇文的全部內容,希望能對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.