1. 程式人生 > >微信二維碼海報推廣示例

微信二維碼海報推廣示例

這倆天根據客戶 需求  微信商城 能生成自己的二維碼 並且 需先關注公眾號,掃碼的使用者顯示出自己的上級

研究兩天,發現微信二維碼介面能實現這個功能 !
思路:1.生成微信永久二位碼 具體看微信公眾文件
    http://mp.weixin.qq.com/wiki/18/167e7d94df85d8389df6c94a7a8f78ba.html
      2.獲取生成的二維碼 建立縮圖  


    3.將二維碼縮圖 放到海報上面(微信小頭像 也是這個思路)


    4.將生成好圖片 上傳到微信素材 具體見微信文件


      http://mp.weixin.qq.com/wiki/15/2d353966323806a202cd2deaafe8e557.html


    5將返回的media_id 通過Xml傳送給使用者
這樣一個生成海報的的示例完成了 下面為部分程式碼
/* 
    @$poster_path  海報路徑
    @$openid       當前使用者openid
    @$qrcode_path  生成的目錄
   */
  public function  Create_img($poster_path,$qrcode_path="./qrcode_temp/",$openid){
    if($openid){
        $this->Check_dir($poster_path);
        [email protected]_get_contents($qrcode_path.$openid.".jpg");
        if(!$qrcode){
            $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->getAccessToken();
            $data = [
                'action_name' => 'QR_LIMIT_STR_SCENE',
                'action_info' => [
                    'scene' => ['scene_str' => 'invite_'.$openid],
                ],
            ];
            //通過curl post請求
            $result = $this->curlPost($url,json_encode($data));
            $url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($result->ticket);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_URL, $url);
            ob_start();
            curl_exec($ch);
            $qr_content = ob_get_contents();
            header('Content-type: image/jpg');
            ob_end_clean();
           //縮放二維碼大小為需要的大小,並將二維碼加入到海報中
            $thumb = imagecreatetruecolor(200, 200);
            
            //獲取原始檔資源控制代碼。接收引數為圖片流,返回控制代碼
            $source = imagecreatefromstring($qr_content);
            //將原始檔剪下全部域並縮小放到目標圖片上,前兩個為資源控制代碼
            imagecopyresampled($thumb, $source, 0, 0, 0, 0, 200, 200, 430, 430);
            //建立圖片的例項,接收引數為圖片
            $dst_qr = @imagecreatefromstring(file_get_contents($poster_path));
            //加水印
            imagecopy($dst_qr,$thumb, 320, 50, 0, 0, 200, 200);
            //銷燬
            imagedestroy($thumb);
                
            ob_start();//啟用輸出快取,暫時將要輸出的內容快取起來
            imagejpeg($dst_qr,$qrcode_path.$openid.".jpg",90);//輸出
            $poster = ob_get_contents();//獲取剛才獲取的快取
            ob_end_clean();//清空快取
            imagedestroy($dst_qr);
            $post_data['media'] = '@'.$qrcode_path.$openid.".jpg";
             $result=$this->uploadMedia($this->getAccessToken(),"image",$post_data);
            if($result) {
               $media_id=$result->media_id;
            }
        }else{
            $post_data['media'] = '@'.$qrcode_path.$openid.".jpg";
            $result=$this->uploadMedia($this->getAccessToken(),"image",$post_data);
            if($result) {
               $media_id=$result->media_id;
            }
        }
        return  $media_id;
    }
  }
//上傳到微信臨時素材方法
  public function uploadMedia($accessToken,$type='image',$mediaArr){
   $url="http://api.weixin.qq.com/cgi-bin/media/upload?access_token=".$accessToken."&type=".$type;
   $doPost=$this->curlPost($url,$mediaArr);
   return $doPost;
  }
//注意php5.5 curl上傳需 new \CURLFile類