php微信开发之二维码生成类
来源: 阅读:810 次 日期:2015-08-13 15:50:58
温馨提示: 小编为您整理了“php微信开发之二维码生成类”,方便广大网友查阅!

这篇文章主要介绍了php微信开发之二维码生成类,本文使用微信接口实现二维码的生成,并直接给出示例代码,需要的朋友可以参考下

?

/**

* created by phpstorm.

* user: bin

* date: 15-1-16

* time: 上午9:48

*/

namespace home\common;

// 微信处理类

set_time_limit(30);

class weixin{

//构造方法

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?";

//生成二维码

public function getewm($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);

return downloadqr($url,time());

}

protected function getqrcodeurl($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('getqrcodeurl falied. error info: getqrcodeurl get failed');

exit();

}

$url = self::$qrcode_get_url.'ticket='.$oo->ticket.'';

return $url;

}

protected function gettoken($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;

}

protected function http_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('curl falied. error info: '.curl_error($ch));

}

$return_content = ob_get_contents();

ob_end_clean();

$return_code = curl_getinfo($ch, curlinfo_http_code);

return array($return_code, $return_content);

}

//下载二维码到服务器

protected function downloadqr($url,$filestring){

if($url == ""){

return false;

}

$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('dolwload image falied. error info: 无法写入图片');

exit();

}

fclose($fp2);

return './uploads/qrcode/'.$filename;

}

private function errorlogger($errmsg){

$logger = fopen('./errorlog.txt', 'a+');

fwrite($logger, date('y-m-d h:i:s')." error info : ".$errmsg."\r\n");

}

}

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map