PHP微信公衆號開發——羣發消息(完結)

**說明
1.文章和有道筆記幾乎內容相同,因此若是有人在有道上有幸看到同樣的文章,應該也是我寫的,除非是所有複製
2.內容會較長,故會拆分多篇文章講解
3.目前基本的羣發已記錄完結,若是後續有補充,會做說明**php


一.官方文檔
高級羣發接口
https://mp.weixin.qq.com/wiki...html


二.關於羣發接口
1.訂閱號天天能夠羣發消息一條,服務號每個月(天然月)四條的羣發權限。開發者模式下,能夠經過高級羣發接口,實現更靈活的羣發能力。
2.注意
● 對於認證訂閱號,羣發接口天天可成功調用1次,這次羣發可選擇發送給所有用戶或某個標籤;
● 對於認證服務號雖然開發者使用高級羣發接口的每日調用限制爲100次,可是用戶每個月只能接收4條,不管在公衆平臺網站上,仍是使用接口羣發,用戶每個月只能接收4條羣發消息,多於4條的羣發將對該用戶發送失敗;
● 具有微信支付權限的公衆號,在使用羣發接口上傳、羣發圖文消息類型時,可以使用a標籤加入外鏈;json

● 開發者可使用預覽接口校對消息樣式和排版,經過預覽接口可發送編輯好的消息給指定用戶校驗效果。
通俗的說就是
● 服務號一個月只能發四條消息,雖然一個月就四條 但它是即時呈現到客戶眼前 只要你打開微信就有一條未讀
● 訂閱號天天一條,但訂閱號全部的商家都在一塊兒顯示,並且不會主動提醒,須要你點開服務號才能夠看到
● 一條羣發消息裏,是能夠包括多條圖文消息。
● 羣發的消息不包括商家推送消息等其餘消息類型。
以下所示,爲京東的服務號消息界面。上面的是羣發消息,下面是發貨通知消息。
圖片描述api

這就是爲何有的人會疑惑,本身接受來自服務號的消息1個月不止4條,或者接受的消息怎麼有好幾條。
3.羣發圖文消息的過程
● 首先,預先將圖文消息中須要用到的圖片,使用上傳圖文消息內圖片接口,上傳成功並得到圖片URL
● 上傳圖文消息素材,須要用到圖片時,請使用上一步獲取的圖片URL
● 使用對用戶標籤的羣發,或對OpenID列表的羣發,將圖文消息羣發出去
● 在上述過程當中,若是須要,還能夠預覽圖文消息、查詢羣髮狀態,或刪除已羣發的消息等
4.羣發圖片、文本等其餘消息類型的過程
● 若是是羣發文本消息,則直接根據下面的接口說明進行羣發便可
● 若是是羣發圖片、視頻等消息,則須要預先經過素材管理接口準備好mediaID數組

5.關於羣發時使用is_to_all爲true使其進入公衆號在微信客戶端的歷史消息列表
● 使用is_to_all爲true且成功羣發,會使得這次羣發進入歷史消息列表。
● 爲防止異常,認證訂閱號在一天內,只能使用is_to_all爲true進行羣發一次,或者在公衆平臺官網羣發(無論本次羣發是對全體仍是對某個分組)一次。以免一天內有2條羣發進入歷史消息列表。
● 相似地,服務號在一個月內,使用is_to_all爲true羣發的次數,加上公衆平臺官網羣發(無論本次羣發是對全體仍是對某個分組)的次數,最多隻能是4次。
● 設置is_to_all爲false時是能夠屢次羣發的,但每一個用戶只會收到最多4條,且這些羣發不會進入歷史消息列表。服務器

注意
1.本接口中全部使用到media_id的地方,如今均可以使用素材管理中的永久素材media_id了。請但注意,使用同一個素材羣發出去的連接是同樣的,這意味着,刪除某一次羣發,會致使整個連接失效。
2.建議使用開發者模式的狀況下,先使用預覽接口,由於接口每日能夠調取100次。預覽達到預期效果後,才使用正式接口(openId列表羣發)。
6.附說明:getWxAccessToken和https_request分別是我代碼中關於獲取微信全局token和調用第三方接口的方法。微信


三.羣發消息接口——關於素材與接口
初學者很容易分不清楚開發文章當中,’素材管理‘與’消息管理-羣發接口‘中,一些操做步驟的區別和用途,本人當時也是饒了不少坑,各類搜索與詢問,故記錄下來,爲的就是往後可以幫助同行少繞彎路,以及本身往後的溫習。若有錯誤的地方,懇請不臨指教,謝謝。
1.官文連接
● 高級羣發
https://mp.weixin.qq.com/wiki...
● 素材管理
https://mp.weixin.qq.com/wiki...
2.關於素材
● 素材:在微信開發中,素材指的就是原始的媒體文件(如圖片、視頻、聲音等)以及圖文類型的文件
● 媒體文件是最基礎的素材,圖文素材等(好比含其餘媒體文件的文件素材)其餘素材須要獲取到基礎媒體文件素材,這個看具體也無需求
● 也就是說,你也能夠選擇在羣發消息的時候,發純文本素材
● 媒體素材經過接口上傳成功後,都會有一個媒體id,也就是media_id,這個媒體id用在以後須要調用的時候,是個關鍵。微信開發

注意

● 上傳圖片素材分兩種:返回URL和返回media_id
● 素材管理分兩大類:永久和臨時
3.臨時素材與永久素材
● 臨時素材
公衆號常常有須要用到一些臨時性的多媒體素材的場景,例如在使用接口特別是發送消息時,對多媒體文件、多媒體消息的獲取和調用等操做,是經過media_id來進行的。素材管理接口對全部認證的訂閱號和服務號開放。經過本接口,公衆號能夠新增臨時素材(即上傳臨時多媒體文件)。
請注意:
一、對於臨時素材,每一個素材(media_id)會在開發者上傳或粉絲髮送到微信服務器3天后自動刪除(因此用戶發送給開發者的素材,若開發者須要,應儘快下載到本地),以節省服務器資源。
二、media_id是可複用的。
三、素材的格式大小等要求與公衆平臺官網一致。具體是,圖片大小不超過2M,支持png/jpeg/jpg/gif格式,語音大小不超過5M,長度不超過60秒,支持mp3/amr格式
四、需使用https調用本接口。
● 永久素材
除了3天就會失效的臨時素材外,開發者有時須要永久保存一些素材,屆時就能夠經過本接口新增永久素材。
最近更新,永久圖片素材新增後,將帶有URL返回給開發者,開發者能夠在騰訊系域名內使用(騰訊系域名外使用,圖片將被屏蔽)。
請注意:
一、新增的永久素材也能夠在公衆平臺官網素材管理模塊中看到
二、永久素材的數量是有上限的,請謹慎新增。圖文消息素材和圖片素材的上限爲5000,其餘類型爲1000
三、素材的格式大小等要求與公衆平臺官網一致。具體是,圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式,語音大小不超過5M,長度不超過60秒,支持mp3/wma/wav/amr格式
四、調用該接口需https協議
注意
● 「永久素材」裏的「最近更新...」文字所說的返回URL,就是前面提到的上傳圖片素材種類之一:返回圖片URL框架

臨時素材與永久素材的不一樣之處

圖片描述

4.素材與羣發接口的結合使用(如下講解的素材均以永久素材來講明)
第一步:上傳圖片
前面有提過,上傳圖片素材分兩種,主要是返回參數的不一樣
a.返回media_id(其實能夠同時返回media_id和url)——文檔名:新增其餘類型永久素材curl

圖片描述
圖片描述

使用說明
● 傳入參數:全局token和類型type
● 返回:media_id和url
● 能夠根據業務邏輯需求,只返回media_id或者作判斷
● 注意:視頻素材的請求連接是不一樣的
● 使用:URL能夠直接放在羣發消息之圖文消息中的img標籤,media_id能夠用在圖文消息的封面圖片id。
b.只返回URL——文檔名:上傳圖文消息內的圖片獲取URL

圖片描述

使用說明
● 傳入參數:全局token
● 返回:url
● URL做用:放在圖文消息中使用(使用img標籤)。
c.總結:只返回URL和返回media_id的區別就在於使用地方的不一樣,固然返回media_id的方法也能夠返回URL。media_id用於羣發圖文消息的封面,url用在文本的Img標籤。
第二步:上傳圖文素材等文件素材
a.新增永久圖文素材

圖片描述
b.上傳圖文消息素材
因爲和上面的新增永久圖文素材差別不大,故這裏不作贅述,詳情見第七條。

簡單說明
● thumb_media_id:前面提到的上傳圖片返回media_id(也就是「新增其餘類型永久素材」)就是用在此處,做爲圖文消息的封面圖片。
● content:前面提到的上傳圖片2種類型,返回的URL就是用在此處的img標籤裏。
5.關於「上傳圖文消息素材」和「新增永久圖文素材」的區別
● 上傳圖文消息素材:等因而直接把圖文素材傳到微信的服務器,每次憑藉media_id獲取素材,而且不佔用素材庫
● 新增永久圖文素材:在開發者和微信服務器之間,多了一個素材庫。素材庫的素材有數量限制,可是能夠直接查看到。


四.羣發消息接口——第1步:上傳圖片(返回URL)
1.說明
● 功能:上傳圖文消息內的圖片獲取URL【訂閱號與服務號認證後都可用】
● 注意:本接口所上傳的圖片不佔用公衆號的素材庫中圖片數量的5000個的限制。圖片僅支持jpg/png格式,大小必須在1MB如下
● 官方文檔參考
圖片描述

2.代碼實現
a.思路
● 調用接口

https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

看到後面須要用token,就知道,確定也是須要獲取到全局的token,再組裝url。
● 參數說明
調用示例(使用curl命令,用FORM表單方式上傳一個圖片):
curl -F media=@test .jpg "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN"
從官文中能夠看出,圖片名(帶格式的圖片名)須要在media(表明媒體)以後,並加@符號。
這裏就涉及到CURL的知識:
curl上傳:文件的標識@+相對路徑
b.代碼實現
注:如下是個人代碼實現,你們能夠根據本身的項目去實際編寫

function addMaterial() {
        $access_token = $this->getWxAccessToken();    
        $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$access_token;
        $filename = '文件名,帶路徑';
        $data=array("media"=>'@'. $filename);
        print_R($data);
        $res=$this->https_request( $url ,'post', 'json', $data);
        dump($res); exit();
        return $res;
    }

● 說明
——方法爲了實現功能,寫的都比較直接。後續能夠對代碼進行改編,方法裏的參數可使用傳參的方式,這樣使用起來也比較靈活。
—— filename:文件名,相對於項目的入口文件,通常是根目錄的路徑。好比我編寫此代碼的時候用的是ThinkPHP框架,項目根目錄有個index.php入口文件,在根目錄有個Public,圖片是直接放在Public下的,因此上述的filename應該是Public/圖片名.格式,請你們根據本身實際圖片路徑去寫。
——print_r和dump是爲了看打印的結果,這個你們測試的時候可使用下,方便查看,無誤後去掉便可。


四.羣發消息接口——第1步:上傳素材(包括圖片、視頻、聲音等,返回URL和MediaId,推薦)
1.說明
● 新增的永久素材也能夠在公衆平臺官網素材管理模塊中看到
● 永久素材的數量是有上限的,請謹慎新增。圖文消息素材和圖片素材的上限爲5000,其餘類型爲1000
● 素材的格式大小等要求與公衆平臺官網一致。具體是,圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式,語音大小不超過5M,長度不超過60秒,支持mp3/wma/wav/amr格式
● 調用接口需https協議
● 官方文檔參考
圖片描述
● 注意:官方說明,視頻素材須要另一個表單,這裏暫不作說明。
● 經過POST表單來調用接口,表單id爲media,包含須要上傳的素材內容,有filename、filelength、content-type等信息
● 注意:圖片素材將進入公衆平臺官網素材管理模塊中的默認分組
2.代碼實現
a.思路
● 調用接口

https://api.weixin.qq.com/cgi-bin/material/add_material?        access_token=ACCESS_TOKEN&type=TYPE

看到後面須要用token,就知道,確定也是須要獲取到全局的token,再組裝url,此外type類型也須要指定。
● 官方關於類型等其餘參數說明以下
參數是否必須說明access_token是調用接口憑證type是媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb)media是form-data中媒體文件標識,有filename、filelength、content-type等信息

b.代碼實現
注:如下是個人代碼實現,你們能夠根據本身的項目去實際編寫

function addMaterial() {
        $access_token = $this->getWxAccessToken();
        $type='image';
        //https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE
        $url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$access_token."&type=".$type;
        $filename = '文件名';
        $data=array("media"=>'@'. $filename);
        $res=$this->https_request( $url ,'post', 'json', $data);
        return $res['media_id'];
    }

● 說明
——方法爲了實現功能,寫的都比較直接。後續能夠對代碼進行改編,方法裏的參數可使用傳參的方式,這樣使用起來也比較靈活。
—— filename:帶格式的文件名,相對於項目的入口文件,通常是根目錄的路徑。好比我編寫此代碼的時候用的是ThinkPHP框架,項目根目錄有個index.php入口文件,在根目錄有個Public,圖片是直接放在Public下的,因此上述的filename纔是如此格式,請你們根據本身實際圖片路徑去寫。
——type:傳入的媒體類型
——做用:返回的media_id用做新增圖文素材中的圖文消息封面素材id,url用做新增圖文素材中,content(圖文消息的具體內容)的img標籤。


六.羣發消息接口——第2步:上傳圖文之新增永久圖文素材

1.說明
● 接口
https://api.weixin.qq.com/cgi...

圖片描述

2.注意
● thumb_media_id:須要先上傳圖片素材,且圖文消息的封面圖片素材id必須是永久mediaID
● content:上傳圖片素材的2種方式,都有返回url,就是用在此處的img標籤中。
● 返回:media_id用於調用後面的羣發消息時使用
● 注意:圖文消息內容,將過濾外部的圖片連接
3.代碼實現

function addNews(){
        $access_token = $this->getWxAccessToken();
        $thumb_media_id=$this->addMaterial();
        $content_img=$this->addMaterialUrl();
        $url = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=".$access_token;
        $array = array(
                "articles" => array(                                /*若新增的是多圖文素材,則此處應還有幾段articles結構  */
                                 array(
                         "title"               => urlencode('最後一組測試——1'),
                                "thumb_media_id"      => $thumb_media_id,        //圖文消息的封面圖片素材id(必須是永久mediaID)
                                "author"              => urlencode('測試編輯1'),            //做者
                                "digest"             => urlencode('這是測試的摘要1'),            //圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空
                                "show_cover_pic"      => 1,            //是否顯示封面,0爲false,即不顯示,1爲true,即顯示
                                "content"             => urlencode("<h1>這是一個測試文章1</h1><br /><img src='{$content_img}' /><br /><div>測試下圖文素材的效果</div><br /><div>測試下圖文素材的效果</div>"),            //圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS
                                "content_source_url" => urlencode("http://www.地址")            //圖文消息的原文地址,即點擊「閱讀原文」後的URL
                        ),    
                        array(
                                "title"               => urlencode('最後一組測試——2'),
                                "thumb_media_id"      => $thumb_media_id,        //圖文消息的封面圖片素材id(必須是永久mediaID)
                                "author"              => urlencode('測試編輯2'),            //做者
                                "digest"             => urlencode('這是測試的摘要2'),            //圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空
                                "show_cover_pic"      => 1,            //是否顯示封面,0爲false,即不顯示,1爲true,即顯示
                                "content"             => urlencode("<h1>這是一個測試文章2</h1><br /><img src='{$content_img}' /><br /><div>測試下圖文素材的效果</div><br /><div>測試下圖文素材的效果</div>"),            //圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS
                                "content_source_url" => urlencode("http://www.地址")            //圖文消息的原文地址,即點擊「閱讀原文」後的URL
                        ),
               ),
               
        );
        $postJson = urldecode( json_encode( $array ) );
        //dump($postJson);
        $res=$this->https_request( $url ,'post', 'json', $postJson);
        //dump($res['media_id']);exit();
        return $res['media_id'];
        }

說明
● addMaterial():是我寫的新增其餘類型永久素材,裏面新增的是圖片。
● addMaterialUrl():是我寫的一個關於上傳圖片只返回URL的方法。雖然返回的只有URL,但也是個數組,因此,要麼在方法裏返回結果的時候,就取下標url返回,要麼調用的時候取下標url使用。
● urlencode和urldecode:由於後面POST的是一個JSON數組。若是JSON數據裏有中文,那麼須要用urlencode先轉,後面再用urldecode轉過來。
● 須要注意的是,個人html標記屬性用的是單引號,因此無需轉義。若是你使用了雙引號,須要用htmlspecialchars轉義,再用htmlspecialchars_decode轉回來。
● 請使用三維數組!!!看官方示例,若是以PHP寫數組的寫法來看,彷佛不熟悉的人都會寫成二維數組,可是這樣是沒法解析的,在articles裏,還有一層數組!!


七.羣發消息接口——第2步:上傳圖文之上傳圖文消息素材
1.說明
● 接口
https://api.weixin.qq.com/cgi...
● 官文說明

圖片描述
圖片描述
2.代碼實現

function uploadNews(){
        //1.獲取全局access_token
        $access_token = $this->getWxAccessToken();    
        $url = "https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=".$access_token;
        //2.組裝數據    
        $thumb_media_id=$this->addMaterial();
        $content_img=$this->addMaterialUrl();
        $array = array(
                "articles" => array(                                /*若新增的是多圖文素材,則此處應還有幾段articles結構  */
                        array(
                                "thumb_media_id"      => $thumb_media_id,        //圖文消息縮略圖的media_id,能夠在基礎支持-上傳多媒體文件接口中得到
                                "author"              => urlencode('編輯1'),            //做者
                                "title"               => urlencode('這是測試的標題——1'),
                                "content_source_url" => urlencode("http://www.地址"),            //圖文消息的原文地址,即點擊「閱讀原文」後的URL                                                        
                                "content"             => urlencode("<h1>這是一個測試文章——1</h1><br /><img src='{$content_img}' /><br /><div>測試下圖文素材的效果——1</div><br /><div>測試下圖文素材的效果——1</div>"),            //圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS
                                "digest"             => urlencode('這是測試的摘要1'),            //圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空
                                "show_cover_pic"      => 1            //是否顯示封面,0爲false,即不顯示,1爲true,即顯示
                         ),//第一個圖文文
                         array(
                                 "thumb_media_id"      => $thumb_media_id,        //圖文消息縮略圖的media_id,能夠在基礎支持-上傳多媒體文件接口中得到
                                 "author"              => urlencode('編輯2'),            //做者
                                 "title"               => urlencode('這是測試的標題——2'),
                                 "content_source_url" => urlencode("http://www.地址"),            //圖文消息的原文地址,即點擊「閱讀原文」後的URL
                                 "content"             => urlencode("<h1>這是一個測試文章——2</h1><br /><img src='{$content_img}' /><br /><div>測試下圖文素材的效果——1</div><br /><div>測試下圖文素材的效果——1</div>"),            //圖文消息的具體內容,支持HTML標籤,必須少於2萬字符,小於1M,且此處會去除JS
                                 "digest"             => urlencode('這是測試的摘要2'),            //圖文消息的摘要,僅有單圖文消息纔有摘要,多圖文此處爲空
                                 "show_cover_pic"      => 1            //是否顯示封面,0爲false,即不顯示,1爲true,即顯示
                         ),//第2個圖文
                ),
        );
        $postJson = urldecode( json_encode( $array ) );
        $res=$this->https_request( $url ,'post', 'json', $postJson);
        //dump($res);
        return $res['media_id'];
    }

說明
● $thumb_media_id和$content_img的獲取方法:均爲前文中提到的方法
● 注意:articles下的數組個數,取決於你要發送的圖文消息個數,但一次最多8個


八.羣發消息接口——第3步:預覽接口(非必須步驟,但建議保留)
1.意義:爲了防止開發者模式下,每個月發送4條消息的限制,從而致使不滿意消息的效果現象。
2.官方文檔

圖片描述

注意:雖然預覽接口調用的次數較多,可是天天有100次的限制,請注意!!!
3.代碼實現——純文本

function sendMsgAll(){
        //1.獲取全局access_token
        $access_token = $this->getWxAccessToken();

$openid="個人openid";

//2.組裝羣發預覽接口數據  array
        $url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=".$access_token;
        $array =array(        
                'touser'=> $openid,        //openid
                'text'  => array('content' => '雨紛紛,舊故里草木深'),                //文本內容
                'msgtype' => 'text'                                //格式
        );
        //3.將數組轉成json格式
        $postJson = json_encode ( $array );
        //4.調用第三方接口
        $res = $this->https_request( $url ,'post', 'json',$postJson);
        return $res;
    }

4.代碼實現——圖文

function sendMsgAllPreview(){
        //1.獲取全局access_token
        $access_token = $this->getWxAccessToken();    
        $openid="個人openid";
        $media_id=$this->addNews();
        //2.組裝羣發預覽接口數據  array
        $url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=".$access_token;
        $array = array(
                "touser" =>$openid,
                "mpnews"=>array("media_id"=>$media_id),
                "msgtype"=>"mpnews"
        );                 
        //3.將數組轉成json格式
        $postJson = json_encode ( $array );
        //4.調用第三方接口
        $res = $this->https_request( $url ,'post', 'json',$postJson);
        //dump($res); 
        return $res;
    }

說明
● $openid:此處由於是作預覽,只須要一個ID,獲取有不少種方法。好比以前獲取用戶信息的時候,能夠獲取到openid,或者是測試號的id均可以,只要是合法的openid。
● mpnews:媒體id。須要你以前有上傳過圖文消息的素材,得到素材的id。
疑問:我預覽接口是成功的,返回是0,可是沒有官方示例的msg_id...難道改版了?知道的麻煩不吝賜教,謝謝。

圖片描述
圖片描述


九.羣發消息接口——第4步:根據標籤進行羣發
1.說明
● 接口
https://api.weixin.qq.com/cgi...
● 官方說明

圖片描述
圖片描述

2.代碼實現

//根據標籤進行羣發
    function sendAllByTag(){
        //1.獲取全局access_token
        $access_token = $this->getWxAccessToken();    
        $url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=".$access_token;
        //2.組裝數據
        $media_id=$this->addNews();
        $array=array(
                'filter' => array(            //用於設定圖文消息的接收者
                    'is_to_all' => true,            //是否向所有用戶發送,值爲true或false,選擇true該消息羣發給全部用戶,選擇false可根據tag_id發送給指定羣組的用戶
                    'tag_id'     =>'',            //羣發到的標籤的tag_id,參加用戶管理中用戶分組接口,若is_to_all值爲true,可不填寫tag_id
                ),
                'mpnews' => array(            //用於設定即將發送的圖文消息
                    'media_id'  => $media_id,            //用於羣發的消息的media_id
                ),
                'msgtype'=> 'mpnews',                //羣發的消息類型,圖文消息爲mpnews,文本消息爲text,語音爲voice,音樂爲music,圖片爲image,視頻爲video,卡券爲wxcard
        );
        $postJson = json_encode( $array );
        $res=$this->https_request( $url ,'post', 'json', $postJson);
        //dump($res);
        return $res;
    }

注意 ● 認證後的服務號每月就4次羣發消息機會!!!請謹慎...建議使用前先使用預覽接口先發給本身的帳號測試看看效果,再用正式的接口。 ● 附帶個疑問:不知道爲何,上傳圖文消息素材獲取不到最後的id,一直報錯40007,可是新增永久圖文素材的一直是正確的。鬧心,查了很久也查不出來。40007不合法的媒體文件id

相關文章
相關標籤/搜索