这俩天根据客户 需求 微信商城 能生成自己的二维码 并且 需先关注公众号,扫码的用户显示出自己的上级
研究两天,发现微信二维码接口能实现这个功能 !思路: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);
$qrcode=@file_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类