PHP微信开发之二维码生成类
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?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");
}
}
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/php/10055.shtml
相关文章
热门TAG
命令 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 技巧 权重 服务器 网站流量 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows 蜘蛛 搜索引擎 网站收录 JSP 实例解析最新文章
-
PHP的伪随机数与真随机数
时间:2021-01-04
-
php实现的日历程序
时间:2020-12-29
-
PHP实现链式操作的核心思
时间:2020-12-29
-
PHP中把错误日志保存在系
时间:2020-12-29
-
Destoon启用https 后台登录不
时间:2020-12-23
-
2019年最好用的10个php开发
时间:2020-12-23
-
10个免费的PHP编辑器/开发
时间:2020-12-23
-
什么是PHP?其优势有哪些
时间:2020-12-23
热门文章
-
2019年最好用的10个php开发工具推荐
时间:2020-12-23
-
PHP的伪随机数与真随机数详解
时间:2021-01-04
-
PHP中把错误日志保存在系统日志中(Win
时间:2020-12-29
-
Destoon启用https 后台登录不了
时间:2020-12-23
-
php实现的日历程序
时间:2020-12-29
-
PHP实现链式操作的核心思想
时间:2020-12-29
-
php工作前景怎么样
时间:2020-12-19
-
10个免费的PHP编辑器/开发工具推荐
时间:2020-12-23
-
什么是PHP?其优势有哪些?
时间:2020-12-23
-
值得关注的十大高效PHP开发工具
时间:2020-12-23
