首页 >后端开发 >php教程 >PHP微信接口实现二维码生成类

PHP微信接口实现二维码生成类

墨辰丷
墨辰丷原创
2018-06-09 13:47:162497浏览

本篇文章主要介绍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(&#39;Member_public&#39;)->where(array(&#39;id&#39;=> $wechatid))->find();
    $appid = $wechat[&#39;appid&#39;];
    $secret = $wechat[&#39;secret&#39;];
    $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.&#39;access_token=&#39;.$ACCESS_TOKEN;
    if($type == 1){
      //生成永久二维码
      $qrcode= &#39;{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": &#39;.$fqid.&#39;}}}&#39;;
    }else{
      //生成临时二维码
      $qrcode = &#39;{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": &#39;.$fqid.&#39;}}}&#39;;
    }
    $result = $this->http_post_data($url,$qrcode);
    $oo = json_decode($result[1]);
    if(!$oo->ticket){
      $this->ErrorLogger(&#39;getQrcodeurl falied. Error Info: getQrcodeurl get failed&#39;);
      exit();
    }
    $url = self::$qrcode_get_url.&#39;ticket=&#39;.$oo->ticket.&#39;&#39;;
    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(
        &#39;Content-Type: application/json; charset=utf-8&#39;,
        &#39;Content-Length: &#39; . strlen($data_string))
    );
    ob_start();
    curl_exec($ch);
    if (curl_errno($ch)) {
      $this->ErrorLogger(&#39;curl falied. Error Info: &#39;.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.&#39;.jpg&#39;;
    ob_start();
    readfile($url);
    $img=ob_get_contents();
    ob_end_clean();
    $size=strlen($img);
    $fp2=fopen(&#39;./Uploads/qrcode/&#39;.$filename,"a");
    if(fwrite($fp2,$img) === false){
      $this->ErrorLogger(&#39;dolwload image falied. Error Info: 无法写入图片&#39;);
      exit();
    }
    fclose($fp2);
    return &#39;./Uploads/qrcode/&#39;.$filename;
  }

  private function ErrorLogger($errMsg){
    $logger = fopen(&#39;./ErrorLog.txt&#39;, &#39;a+&#39;);
    fwrite($logger, date(&#39;Y-m-d H:i:s&#39;)." Error Info : ".$errMsg."\r\n");
  }

}

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php针对上传图片文件的功能详解

php通过文件存储来实现缓存的技巧

php根据数组动态创建html代码的的方法

以上是PHP微信接口实现二维码生成类的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn