最近weiphp 二次开真的有点累,漏洞百出。代码维护代价有点高。

<?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.cnblogs.com/bin-pureLife/p/4228076.html

微信开发之 二维码生成类库相关推荐

  1. 使用PHP二维码生成类库PHP QR Code生成个人名片

    PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成名片,官网提供了下载和多个演示demo,查看地址:http://phpqrcode.sourceforge.net/.<?ph ...

  2. 微信小程序二维码生成工具,后端二维码生成工具类。

    微信小程序开发二维码生成工具类 前言 业务背景 设计思路 具体实现 接下来我们进行工具的改造 前言 或许这是你搜寻的第n篇文章来解决你项目中的问题,虽然我不能去替你完全适配你的业务需求,但是我可以给你 ...

  3. jquery-qrcode客户端二维码生成类库扩展--融入自定义Logo图片

    淘宝就不多说了,全球最大的中文假货销售平台(尽管淘宝没有打出全球中文等字样,可是其必须当之无愧).百度,当当等厚颜无耻之徒的明智之举就在于此,老外做的再大也很少会有直接支持中文的,因此他们都会在其名称 ...

  4. 微信支付链接二维码生成

    1.进入composer官方网站,搜索phpqrcode安装包 composer命令安装 composer require aferrandini/phpqrcode 生成二维码图片的公共方法: // ...

  5. java开发微信小程序——二维码生成

    https://blog.csdn.net/persistencegoing/article/details/84376427 工具类: public class TwoCode {         ...

  6. 微信小程序参数二维码生成朋友圈分享图片

    前言 小程序目前无法分享到微信朋友圈,可朋友圈是一个非常重要的传播途径,所以得想办法把这个资源利用起来 微信小程序支持通过扫描/长按识别二维码或小程序码图片的方式进入一个小程序首页或小程序中某个特定页 ...

  7. 实现微信公众号二维码生成

    效果: 路径: https://open.weixin.qq.com/qr/code?username=需要生成二维码的公众号&style=1 style=1为二维码样式,可选择其他 转载于: ...

  8. springboot实现微信小程序二维码生成

    一.微信小程序创建 先要去微信公众平台注册一个小程序,每个小程序都有相应的AppID(小程序ID)和AppSecret(小程序密钥),它们是获取ACCESS_TOKEN所需要的.微信公众平台地址: h ...

  9. HBuilder webApp开发(十三)二维码扫描

    好久没有写<HBuilder webApp App开发>这个专栏了.这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo. 以前做原生开发的时候,关于二维码扫 ...

最新文章

  1. LTE PUCCH F2 TX/RX汇总
  2. react 组件遍历】_从 Context 源码实现谈 React 性能优化
  3. python网络编程——IO多路复用之epoll
  4. linux命令行输入下一行但不运行命令
  5. 今日份凡尔赛培训满分了没?
  6. 管理 windows server 2003 的远程连接
  7. linux centos7磁盘分区扩容,centos7 xfs文件系统的磁盘扩容
  8. (详解)11年真题:求两个序列合并后的的中位数
  9. 在Session中放HashMap在Jsp中用JSTL遍历方法
  10. 【NetBeans IDE 8.2链接MySQL数据库教程】
  11. js登录设置cookie
  12. 社科研究方法汇总(含SPSS教程、Maxdea、实验法、社会网络分析法、统计调查法、访谈法)
  13. linux文件被锁定,Linux下锁定系统重要文件,防止篡改
  14. 一文搞懂SPI通信协议
  15. STM32单片机驱动步进电机—简单篇
  16. mysql从指定条数开始查询_mysql数据库指定条数数据查询的主要方法
  17. 下载英文图书的几个网站
  18. css基础知识 -- 颜色渐变
  19. 信奥题库(OI题库)8月月赛T1题解 幂次数
  20. python pprint模块详解

热门文章

  1. phpexcel 导出循环增加列数_基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (补充篇)...
  2. jenkins docker 自动部署 构建_jenkins+docker+vue项目的自动部署环境
  3. CF思维联系--CodeForces - 218C E - Ice Skating (并查集)
  4. 数学--数论--四大定理之威尔逊定理
  5. 网络流--最大流--Dinic模板矩阵版(当前弧优化+非当前弧优化)
  6. 洛谷P1122 最大子树和 树形DP初步
  7. python数据分析入门
  8. 数据结构-队列之循环队列
  9. 在Virtualbox下为Ubuntu16.04开机自动挂载共享目录的最佳方法
  10. 彻底搞定C指针-——第五篇:函数参数的传递