一、推廣人輸入「領取任務」關鍵字web
二、服務端發送推廣海報(內容:帶推廣人蔘數的二維碼、推廣人頭像)數據庫
三、推廣人進行推廣json
四、粉絲經過掃海報中二維碼進行關注api
五、 關注成功,服務端記錄推廣人邀請的粉絲數緩存
1,生成帶有參數二維碼和推廣人頭像的海報的示例:微信
$openid = 'XXXXXXX';推廣人加密後的微信號 if(empty($openid)) return false; //原海報的地址 $poster_path = './share20161209.jpg'; //生成帶推廣人蔘數的永久二維碼 $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=XXXX"; $data = [ 'action_name' => 'QR_LIMIT_STR_SCENE', 'action_info' => [ 'scene' => ['scene_str' => 'invite_'.$openid], ], ]; $data = json_encode($data); //經過curl post請求 $result = $this->http_post($result); $result = json_decode($result); $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(); ob_end_clean (); //縮放二維碼大小爲須要的大小,並將二維碼加入到海報中 $thumb = imagecreatetruecolor(300, 300);//建立一個300x300圖片,返回生成的資源句柄 //獲取源文件資源句柄。接收參數爲圖片流,返回句柄 $source = imagecreatefromstring($qr_content); //將源文件剪切所有域並縮小放到目標圖片上,前兩個爲資源句柄 imagecopyresampled($thumb, $source, 0, 0, 0, 0, 300, 300, 430, 430); //建立圖片的實例,接收參數爲圖片 $dst_qr = @imagecreatefromstring(file_get_contents($poster_path)); //加水印 imagecopy($dst_qr, $thumb, 225, 556, 0, 0, 300, 300); //銷燬 imagedestroy($thumb); ob_start();//啓用輸出緩存,暫時將要輸出的內容緩存起來 imagejpeg($dst_qr, NULL, 100);//輸出 $poster = ob_get_contents();//獲取剛纔獲取的緩存 ob_end_clean();//清空緩存 imagedestroy($dst_qr); //獲取頭像,直接訪問微信的獲取用戶接口,具體代碼代碼省略 $user_info = $api->getUserinfo($openid); //$dst_icon,替換頭像,方法和二維碼大體相同,會將替換好的海報保存在臨時文件中。具體代碼此處省略 $tmp_path = __DIR__."/../../../web/subscribe/images/$openid.jpg"; imagejpeg($dst_icon, $tmp_path); imagedestroy($dst_icon); //將替換好的海報,新增到臨時素材 $post_data['media'] = curl_file_create($tmp_path); $url = "http://api.weixin.qq.com/cgi-bin/media/upload?access_token=xxxx&type=image"; $result = json_decode(self::_httpPost($url, $post_data)); if($result) { //刪除臨時文件 unlink($tmp_path); return $result->media_id; }
2, 給推廣人發送海報代碼示例curl
$media_id = ‘上傳到臨時素材的m媒體ID’ $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> </xml>"; $result = sprintf($textTpl, $fromusernam, $tousername, time(), 'image', $media_id); echo $result;
3, 用戶關注事件,修改推廣人邀請粉絲數代碼示例post
if (preg_match('|^qrscene_invite_(.*+)$|', $eventKey, $matches)) { $sceneStr = $matches[1];//值爲推廣人的openid //修根據openid數據庫取相應推廣邀請數據,重而進行數據修改,具體代碼省略 }
總結:這樣就實現了一個簡單能夠統計推廣人的邀請粉絲數。此示例只支持一級推廣。this