<?php
/**
*CreatedbyPhpStorm.
*User:bin
*Date:15-1-16
*Time:上午9:48
*/
namespaceHome\Common;
//微信处理类
set_time_limit(30);
classWeixin{
//构造方法
static$qrcode_url="https://api.weixin.qq.com/cgi-bin/qrcode/create?";
static$token_url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";
static$qrcode_get_url="https://mp.weixin.qq.com/cgi-bin/showqrcode?";
//生成二维码
publicfunctiongetEwm($wechatid,$fqid,$type=1){
$wechat=M('Member_public')->where(array('id'=>$wechatid))->find();
$appid=$wechat['appid'];
$secret=$wechat['secret'];
$ACCESS_TOKEN=$this->getToken($appid,$secret);
$url=$this->getQrcodeurl($ACCESS_TOKEN,$fqid,1);
returnDownLoadQr($url,time());
}
protectedfunctiongetQrcodeurl($ACCESS_TOKEN,$fqid,$type=1){
$url=self::$qrcode_url.'access_token='.$ACCESS_TOKEN;
if($type==1){
//生成永久二维码
$qrcode='{"action_name":"QR_LIMIT_SCENE","action_info":{"scene":{"scene_id":'.$fqid.'}}}';
}else{
//生成临时二维码
$qrcode='{"expire_seconds":1800,"action_name":"QR_SCENE","action_info":{"scene":{"scene_id":'.$fqid.'}}}';
}
$result=$this->http_post_data($url,$qrcode);
$oo=json_decode($result[1]);
if(!$oo->ticket){
$this->ErrorLogger('getQrcodeurlfalied.ErrorInfo:getQrcodeurlgetfailed');
exit();
}
$url=self::$qrcode_get_url.'ticket='.$oo->ticket.'';
return$url;
}
protectedfunctiongetToken($appid,$secret){
$ACCESS_TOKEN=file_get_contents(self::$token_url."appid=$appid&secret=$secret");
$ACCESS_TOKEN=json_decode($ACCESS_TOKEN);
$ACCESS_TOKEN=$ACCESS_TOKEN->access_token;
return$ACCESS_TOKEN;
}
protectedfunctionhttp_post_data($url,$data_string){
$ch=curl_init();
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
'Content-Type:application/json;charset=utf-8',
'Content-Length:'.strlen($data_string))
);
ob_start();
curl_exec($ch);
if(curl_errno($ch)){
$this->ErrorLogger('curlfalied.ErrorInfo:'.curl_error($ch));
}
$return_content=ob_get_contents();
ob_end_clean();
$return_code=curl_getinfo($ch,CURLINFO_HTTP_CODE);
returnarray($return_code,$return_content);
}
//下载二维码到服务器
protectedfunctionDownLoadQr($url,$filestring){
if($url==""){
returnfalse;
}
$filename=$filestring.'.jpg';
ob_start();
readfile($url);
$img=ob_get_contents();
ob_end_clean();
$size=strlen($img);
$fp2=fopen('./Uploads/qrcode/'.$filename,"a");
if(fwrite($fp2,$img)===false){
$this->ErrorLogger('dolwloadimagefalied.ErrorInfo:无法写入图片');
exit();
}
fclose($fp2);
return'./Uploads/qrcode/'.$filename;
}
privatefunctionErrorLogger($errMsg){
$logger=fopen('./ErrorLog.txt','a+');
fwrite($logger,date('Y-m-dH:i:s')."ErrorInfo:".$errMsg."\r\n");
}
}