微信开发教程之推广海报代码示例

速达科技| 阅读:159 发表时间:2018-02-26 16:58:08 小程序开发

摘要: 主要是为了统计通过扫推广海报进行关注的粉丝数

流程:      

1、推广人输入“领取任务”关键字

2、服务端发送推广海报(内容:带推广人参数的二维码、推广人头像)

3、推广人进行推广

4、粉丝通过扫海报中二维码进行关注

5、 关注成功,服务端记录推广人邀请的粉丝数

代码实现:

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、给推广人发送海报代码示例

$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、用户关注事件,修改推广人邀请粉丝数代码示例

if (preg_match('|^qrscene_invite_(.*+)$|', $eventKey, $matches)) {
    $sceneStr = $matches[1];//值为推广人的openid
    //修根据openid数据库取相应推广邀请数据,重而进行数据修改,具体代码省略
}

总结:这样就实现了小程序开发过程中可以统计推广人的邀请粉丝数。此示例只支持一级推广。

本文由速达科技发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。