PHP微信開(kāi)發(fā)之二維碼生成類
更新時(shí)間:2015年06月26日 10:49:34 投稿:junjie
這篇文章主要介紹了PHP微信開(kāi)發(fā)之二維碼生成類,本文使用微信接口實(shí)現(xiàn)二維碼的生成,并直接給出示例代碼,需要的朋友可以參考下
<?php
/**
* Created by PhpStorm.
* User: bin
* Date: 15-1-16
* Time: 上午9:48
*/
namespace Home\Common;
// 微信處理類
set_time_limit(30);
class Weixin{
//構(gòu)造方法
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{
//生成臨時(shí)二維碼
$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);
}
//下載二維碼到服務(wù)器
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: 無(wú)法寫入圖片');
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");
}
}
您可能感興趣的文章:
- php實(shí)現(xiàn)微信公眾平臺(tái)賬號(hào)自定義菜單類
- php微信公眾平臺(tái)開(kāi)發(fā)類實(shí)例
- php實(shí)現(xiàn)微信公眾平臺(tái)賬號(hào)自定義菜單類
- Java微信公眾平臺(tái)開(kāi)發(fā)(3) 接收消息的分類及實(shí)體的創(chuàng)建
- PHP封裝的微信公眾平臺(tái)接口開(kāi)發(fā)操作類完整示例
- Java微信公眾平臺(tái)開(kāi)發(fā)(4) 回復(fù)消息的分類及實(shí)體的創(chuàng)建
- 微信公眾號(hào)開(kāi)發(fā)之微信公共平臺(tái)消息回復(fù)類實(shí)例
- Java微信二次開(kāi)發(fā)(三) Java微信各類型消息封裝
- PHP 微信支付類 demo
- PHP微信API接口類
- 微信公眾平臺(tái)開(kāi)發(fā)教程⑥ 微信開(kāi)發(fā)集成類的使用圖文詳解
相關(guān)文章
php微信公眾平臺(tái)開(kāi)發(fā)(三)訂閱事件處理
這篇文章主要介紹了php微信公眾平臺(tái)開(kāi)發(fā)中的訂閱事件處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
CodeIgniter分頁(yè)類pagination使用方法示例
這篇文章主要介紹了CodeIgniter分頁(yè)類pagination使用方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了CodeIgniter框架中的分頁(yè)類pagination基本的配置與使用技巧,需要的朋友可以參考下2016-03-03
php時(shí)間戳格式化顯示友好的時(shí)間函數(shù)分享
在一些微博系統(tǒng)中經(jīng)常要將時(shí)間于現(xiàn)在時(shí)間相比顯示為多久以前發(fā)布的,如顯示為:剛剛、5秒前、5小時(shí)前、5天前..這種顯示非常的友好,那么我們?cè)趺从胮hp來(lái)實(shí)現(xiàn)呢,這就是本文探討的內(nèi)容,各位看官請(qǐng)仔細(xì)閱讀下文
2014-10-10
CI框架實(shí)現(xiàn)優(yōu)化文件上傳及多文件上傳的方法
這篇文章主要介紹了CI框架實(shí)現(xiàn)優(yōu)化文件上傳及多文件上傳的方法,結(jié)合實(shí)例形式詳細(xì)分析了CI框架優(yōu)化文件上傳及多文件上傳的實(shí)現(xiàn)思路與具體操作步驟,需要的朋友可以參考下
2017-01-01
ThinkPHP 連接Oracle數(shù)據(jù)庫(kù)的詳細(xì)教程[全]
最近收集了一些關(guān)于THinkPHP連接Oracle數(shù)據(jù)庫(kù)的問(wèn)題,有很多朋友按照連接mysql的方法來(lái)操作,導(dǎo)致有一些方法在Oreale中無(wú)法正常使用
2012-07-07
PHP使用GIFEncoder類生成gif動(dòng)態(tài)滾動(dòng)字幕
這篇文章主要介紹了PHP使用GIFEncoder類生成gif動(dòng)態(tài)滾動(dòng)字幕,文字滾動(dòng)分為兩種情況,一種為水平滾動(dòng),一種為垂直滾動(dòng),需要的朋友可以參考下
2014-07-07 
