请选择 进入手机版 | 继续访问电脑版

乐趣微盟

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 206|回复: 0

php实现微信推广海报代码示例

[复制链接]

298

主题

314

帖子

1206

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1206
发表于 2018-8-23 21:12:45 | 显示全部楼层 |阅读模式
摘要: 主要是为了统计通过扫推广海报进行关注的粉丝数
流程:      
                1、推广人输入“领取任务”关键字

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

                 3、推广人进行推广

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

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

代码实现:
        1,生成带有参数二维码和推广人头像的海报的示例:
  1.     $openid = 'XXXXXXX';推广人加密后的微信号
  2.     if(empty($openid)) return false;
  3.     //原海报的地址
  4.     $poster_path = './share20161209.jpg';

  5.     //生成带推广人参数的永久二维码
  6.     $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=XXXX";
  7.     $data = [
  8.         'action_name' => 'QR_LIMIT_STR_SCENE',
  9.         'action_info' => [
  10.             'scene' => ['scene_str' => 'invite_'.$openid],
  11.         ],
  12.     ];
  13.     $data = json_encode($data);
  14.    
  15.     //通过curl post请求
  16.     $result = $this->http_post($result);
  17.     $result = json_decode($result);
  18.    
  19.     $url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($result['ticket']);
  20.     $ch = curl_init ();
  21.     curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, 'GET');
  22.     curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
  23.     curl_setopt ($ch, CURLOPT_URL, $url);
  24.     ob_start ();
  25.     curl_exec ($ch);
  26.     $qr_content = ob_get_contents();
  27.     ob_end_clean ();

  28.     //缩放二维码大小为需要的大小,并将二维码加入到海报中
  29.     $thumb = imagecreatetruecolor(300, 300);//创建一个300x300图片,返回生成的资源句柄
  30.     //获取源文件资源句柄。接收参数为图片流,返回句柄
  31.     $source = imagecreatefromstring($qr_content);

  32.     //将源文件剪切全部域并缩小放到目标图片上,前两个为资源句柄
  33.     imagecopyresampled($thumb, $source, 0, 0, 0, 0, 300, 300, 430, 430);

  34.     //创建图片的实例,接收参数为图片
  35.     $dst_qr = @imagecreatefromstring(file_get_contents($poster_path));

  36.     //加水印
  37.     imagecopy($dst_qr, $thumb, 225, 556, 0, 0, 300, 300);

  38.     //销毁
  39.     imagedestroy($thumb);

  40.     ob_start();//启用输出缓存,暂时将要输出的内容缓存起来
  41.     imagejpeg($dst_qr, NULL, 100);//输出
  42.     $poster = ob_get_contents();//获取刚才获取的缓存
  43.     ob_end_clean();//清空缓存
  44.     imagedestroy($dst_qr);

  45.     //获取头像,直接访问微信的获取用户接口,具体代码代码省略
  46.     $user_info = $api->getUserinfo($openid);

  47.     //$dst_icon,替换头像,方法和二维码大致相同,会将替换好的海报保存在临时文件中。具体代码此处省略
  48.     $tmp_path = __DIR__."/../../../web/subscribe/images/$openid.jpg";
  49.     imagejpeg($dst_icon, $tmp_path);
  50.     imagedestroy($dst_icon);

  51.     //将替换好的海报,新增到临时素材
  52.     $post_data['media'] = curl_file_create($tmp_path);
  53.     $url = "http://api.weixin.qq.com/cgi-bin/media/upload?access_token=xxxx&type=image";

  54.     $result = json_decode(self::_httpPost($url, $post_data));
  55.     if($result) {
  56.         //删除临时文件
  57.         unlink($tmp_path);
  58.         return $result->media_id;
  59.     }
复制代码
2, 给推广人发送海报代码示例
  1. $media_id = ‘上传到临时素材的m媒体ID’
  2. $textTpl = "<xml>
  3.         <ToUserName><![CDATA[%s]]></ToUserName>
  4.     <FromUserName><![CDATA[%s]]></FromUserName>
  5.         <CreateTime>%s</CreateTime>
  6.         <MsgType><![CDATA[%s]]></MsgType>
  7.     <Image>
  8.         <MediaId><![CDATA[%s]]></MediaId>
  9.         </Image>
  10. </xml>";

  11. $result = sprintf($textTpl, $fromusernam, $tousername, time(), 'image', $media_id);
  12. echo $result;
复制代码
3, 用户关注事件,修改推广人邀请粉丝数代码示例
  1. if (preg_match('|^qrscene_invite_(.*+)$|', $eventKey, $matches)) {
  2.                 $sceneStr = $matches[1];//值为推广人的openid
  3.         //修根据openid数据库取相应推广邀请数据,重而进行数据修改,具体代码省略
  4. }
复制代码
总结:这样就实现了一个简单可以统计推广人的邀请粉丝数。此示例只支持一级推广。

回复

使用道具 举报


QQ|Archiver|手机版|小黑屋|乐趣微盟 ( 青ICP备11000010号-2 )

GMT+8, 2018-11-22 02:25 , Processed in 0.133832 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表