Maison >développement back-end >tutoriel php >PHP génère un code QR pour l'applet WeChat avec des paramètres
Cet article présente principalement le code QR généré par PHP pour l'applet WeChat avec des paramètres. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Le WeChat. Le mini programme ouvre officiellement trois interfaces pour créer des codes QR, dont l'une est destinée à générer des codes QR et l'autre est un mini code de programme en forme de tournesol. J'utilise PHP pour générer des codes QR ici.
Cette demande est également très simple. La documentation de développement WeChat a une interface de requête :
Vous devez obtenir l'APPID. et APPSECRET de votre mini programme
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
access_token n'est valable que 2 heures, il est donc préférable de le mettre en cache pour éviter les requêtes répétées
Vous pouvez créer un tableau, puis le convertir en données json et l'attribuer à une variable
$param = json_encode(array("path"=>"pages/index/index?id=123","width"=> 150));
POSTEZ ensuite les données sur le serveur WeChat en échange d'un code QR
$_SESSION['expires_in'])) { $json = httpRequest( $access_token ); $json = json_decode($json,true); // var_dump($json); $_SESSION['access_token'] = $json['access_token']; $_SESSION['expires_in'] = time()+7200; $ACCESS_TOKEN = $json["access_token"]; } else{ $ACCESS_TOKEN = $_SESSION["access_token"]; } //构建请求二维码参数 //path是扫描二维码跳转的小程序路径,可以带参数?id=xxx //width是二维码宽度 $qcode ="https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN"; $param = json_encode(array("path"=>"pages/index/index?id=123","width"=> 150)); //POST参数 $result = httpRequest( $qcode, $param,"POST"); //生成二维码 file_put_contents("qrcode.png", $result); $base64_image ="data:image/jpeg;base64,".base64_encode( $result ); //把请求发送到微信服务器换取二维码 function httpRequest($url, $data='', $method='GET'){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_AUTOREFERER, 1); if($method=='POST') { curl_setopt($curl, CURLOPT_POST, 1); if ($data != '') { curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } } curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl); return $result; } ?>
1 Créez un nouveau qrcode.php
2 Copiez le code ci-dessus
Modifiez le. APPID et APPSECRET
4. Visitez qrcode.php
pour générer un code QR de mini programme avec des paramètres
Mais cette interface génère un mini programme QR code avec un LOGO.
Nous voulons générer un code QR simple pour un petit programme sans logo. Est-ce que ça va ?
Officiellement, il n'y a aucun moyen, mais nous pouvons utiliser une interface tierce pour générer des codes QR ordinaires.
1. Décodez d'abord, décodez le code QR du mini-programme qui vient d'être généré et obtenez l'URL
2. Utilisez le code QR ordinaire pour obtenir. l'URL L'interface de génération de code QR génère des codes QR ordinaires sans LOGO
En fait, il existe de nombreuses bibliothèques pour le décodage ici. est gratuit et nécessite une application, un appid et une clé d'application
<h2>生成无LOGO二维码</h2> nbsp;html> <title>PHP生成微信小程序二维码</title> <meta> <meta> <script></script> <script></script> <script></script> <!--显示二维码--> <p></p> <p> <input> <br> <img alt="PHP génère un code QR pour l'applet WeChat avec des paramètres" > </p> <a>点击生成无LOGO二维码</a> <script> var get_timestamp = function(){ var timestamp =0; timestamp = Date.parse(new Date());// 获取当前时间戳(以s为单位) timestamp = timestamp / 1000; return timestamp; }; //config,申请解码接口:http://www.wwei.cn/,免费 var api_id = 'xxxxxxx';//改为您自己的 var api_key = 'xxxxxxxxx';//改为您自己的 var timestamp = get_timestamp(); var client = hprose.Client.create('http://hprose.wwei.cn/qrcode.html', ['qrencode','qrdecode']); //解码 $("#qrdecode").click(function(){ var timestamp = get_timestamp(); var imgurl = '';//远程图片 var imgdata ='<?php echo $base64_image;?>';//本地图片,直接调用生成的官方小程序二维码,用于解码 var signature = md5(api_key + timestamp + imgurl + imgdata); client.ready(function(qrcode) { qrcode.qrdecode(api_id,signature,timestamp,imgurl,imgdata) .then(function(result) { if(result.status !=1){ alert(result.msg); return ; } //生成无LOGO二维码api接口 var qrcodeapi = "http://qr.liantu.com/api.php?text="; //拼接接口+解码url并输出为图片 $("#show_test").html('<img src="'+qrcodeapi+result.data.raw_text+'"/ alt="PHP génère un code QR pour l'applet WeChat avec des paramètres" >'); },function(e) { console.error(e); }); }, function(e) { console.error(e); }); }); </script>
Ce qui précède est le décodage implémenté via js. Le décodage appelle toujours une adresse d'image du code QR généré par php.
<?php echo $base64_image;?>
Ce qui précède est l'appel Images locales, vous devez donc utiliser ce programme de décodage en conjonction avec le code PHP pour générer le code QR du mini programme.
Après décodage, il faut générer un QR code sans logo. Pour cela, il me suffit d'appeler une interface.
Interface : http://qr.liantu.com/api.php?...
Ensuite, la combinaison de génération de code de mini-programme et de génération de code sans code QR LOGO est :
$_SESSION['expires_in'])) { $json = httpRequest( $access_token ); $json = json_decode($json,true); // var_dump($json); $_SESSION['access_token'] = $json['access_token']; $_SESSION['expires_in'] = time()+7200; $ACCESS_TOKEN = $json["access_token"]; } else{ $ACCESS_TOKEN = $_SESSION["access_token"]; } //构建请求二维码参数 //path是扫描二维码跳转的小程序路径,可以带参数?id=xxx //width是二维码宽度 $qcode ="https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN"; $param = json_encode(array("path"=>"pages/index/index?id=123","width"=> 150)); //POST参数 $result = httpRequest( $qcode, $param,"POST"); //生成二维码 file_put_contents("qrcode.png", $result); $base64_image ="data:image/jpeg;base64,".base64_encode( $result ); //把请求发送到微信服务器换取二维码 function httpRequest($url, $data='', $method='GET'){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_AUTOREFERER, 1); if($method=='POST') { curl_setopt($curl, CURLOPT_POST, 1); if ($data != '') { curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } } curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl); return $result; } ?>生成小程序官方二维码
"/>
生成无LOGO二维码
nbsp;html>PHP生成微信小程序二维码 <script></script> <script></script> <script></script>点击生成无LOGO二维码 <script> var get_timestamp = function(){ var timestamp =0; timestamp = Date.parse(new Date());// 获取当前时间戳(以s为单位) timestamp = timestamp / 1000; return timestamp; }; //config,申请解码接口:http://www.wwei.cn/,免费 var api_id = 'xxx';//改为您自己的 var api_key = 'xxx';//改为您自己的 (实际使用,建议在后台完成 signature 签名,以防暴露 api_key ,或定期更改) var timestamp = get_timestamp(); var client = hprose.Client.create('http://hprose.wwei.cn/qrcode.html', ['qrencode','qrdecode']); //解码 $("#qrdecode").click(function(){ var timestamp = get_timestamp(); var imgurl = '';//远程图片 var imgdata ='<?php echo $base64_image;?>';//本地图片,直接调用生成的官方小程序二维码,用于解码 var signature = md5(api_key + timestamp + imgurl + imgdata); client.ready(function(qrcode) { qrcode.qrdecode(api_id,signature,timestamp,imgurl,imgdata) .then(function(result) { if(result.status !=1){ alert(result.msg); return ; } //生成无LOGO二维码api接口 var qrcodeapi = "http://qr.liantu.com/api.php?text="; //拼接接口+解码url并输出为图片 $("#show_test").html('<img src="'+qrcodeapi+result.data.raw_text+'"/ alt="PHP génère un code QR pour l'applet WeChat avec des paramètres" >'); },function(e) { console.error(e); }); }, function(e) { console.error(e); }); }); </script>
Mais deux sont nécessaires pour décoder la bibliothèque js
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
expert php partagé : spécifications d'écriture de code PHP, un résumé complet
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!