php實現微信推廣海報代碼示例

流程:      

                一、推廣人輸入「領取任務」關鍵字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

相關文章
相關標籤/搜索