1. 程式人生 > >微信新增圖文素材介面呼叫例項

微信新增圖文素材介面呼叫例項

以下基於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;
    }