微信新增圖文素材介面呼叫例項
阿新 • • 發佈:2019-02-08
以下基於thinkphp 編寫,用的時候可稍微修改即可。流程為,前臺表單上傳->後臺資料判斷->上傳圖片素材[獲得圖片id]->上傳圖文素材->返回素材ID
注意,如果提示空資料,注意檢查json提交的表單資料,我就是少輸入了一個array導致一直空資料。
警告,該介面非人類的設計為一天只能呼叫10次,也就是不管你是否成功一天只能有十次新增圖文素材的機會。刪除圖文訊息也是一天只有10次。
//新增圖文素材 public function add(){ $access_token=$this->getAccessToken(); if (IS_POST){ //首先需單獨上傳永久圖片(獲取圖片ID/URL) if(empty($_POST['thumb_media_id'])){ $this->error('圖片不能為空'); }; $filepath=$_SERVER['DOCUMENT_ROOT'].$_POST['thumb_media_id']; //暫時預設前臺輸入的為根目錄路徑 $filedata = array("media" => "@".$filepath); $url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$access_token; $filedata = array( "media" => "@".$filepath, "type" => "image", ); $result = $this->https_request($url, $filedata); $result = json_decode($result, true); $result['media_id']=$result['media_id']; //處理資料防止空資料出現 $data['title']=$_POST['title']; $data['thumb_media_id']=$result['media_id']; $data['author']=$_POST['author']; $data['digest']=$_POST['digest']; $data['show_cover_pic']=(int)$_POST['show_cover_pic']; $data['content']=$_POST['content']; $data['content_source_url']=$_POST['content_source_url']; foreach ($data as $value){ if($value==""){ $this->error('帶 <font color="red">*</font> 的必須填'); } } //新增永久圖文素材 $url="https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=".$access_token; $data = array( "articles"=>array($data), );//這裡一定要注意 $data = json_encode($data,true); $result = $this->https_request($url,$data); $result = json_decode($result, true); dump($result); //返回 "media_id":MEDIA_ID QVqFyY4hY4_xpPf_lO2OG1fIslTDY4wzkgg72IOeoDo exit(); } $this->display(); } //https請求(支援GET和POST) protected function https_request($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); 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); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output; }