• 技术文章 >后端开发 >php教程

    PHP微信开发之二维码生成类,php生成_PHP教程

    2016-07-13 09:48:23原创402

    PHP微信开发之二维码生成类,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");
      }
    
    }

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1022788.htmlTechArticlePHP微信开发之二维码生成类,php生成 php/** * Created by PhpStorm. * User: bin * Date: 15-1-16 * Time: 上午9:48 */namespace Home\Common;// 微信处理类set_time_lim...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 微信开发 二维码 生成 二维码
    上一篇:织梦dedecms|自定义属性,织梦dedecms自定义_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php对称加解密的5个问答小结• 想请问一下印证的有关问题• php 之 cookie 跟 session 简单解读(笔记) • 注册信息添加到数据库,该怎么处理 • 麻烦帮我看看这个该怎么正则匹配
    1/1

    PHP中文网