L'interface PHP WeChat implémente la classe de génération de code QR

墨辰丷
Libérer: 2023-03-31 09:00:02
original
2473 Les gens l'ont consulté

Cet article présente principalement la classe de génération de code QR implémentée par l'interface PHP WeChat. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Cet article utilise l'interface WeChat pour générer des codes QR et donne directement des exemples de codes, comme suit :

<?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");
  }

}
Copier après la connexion

Résumé : Ce qui précède est le résumé de cet article Tout le contenu, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Explication détaillée de la fonction php pour le téléchargement de fichiers image

Technique PHP de mise en cache via le stockage de fichiers

Méthode PHP de création dynamique de code HTML basé sur un tableau

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal