登录  /  注册

PHP生成带参数的微信小程序的二维码

不言
发布: 2018-07-14 10:32:33
原创
8092人浏览过

这篇文章主要介绍了关于php生成带参数的微信小程序的二维码,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

微信小程序官方开放了3个创建二维码的接口,其中有一个是生成二维码的,还有一个是葵花状的小程序码,我这里就用php生成二维码。

首先要获取Access_token

这个请求起来也是很容易的,微信开发文档有请求接口:
要把自己的小程序的APPID和APPSECRET获取到

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
登录后复制

access_token只有2小时有效期,所以要缓存最好,避免重复请求

构建请求参数

82595235-5b48a5179b503_articlex[1].png

可以构建一个数组,然后转成json数据赋给一个变量

$param = json_encode(array("path"=>"pages/index/index?id=123","width"=> 150));
登录后复制

然后POST数据发送到微信服务器换取二维码

完整代码

 $_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、新建qrcode.php
2、拷贝上面代码进去
3、修改APPID和APPSECRET
4、访问qrcode.php

即可生成一个带参数的小程序二维码

3971639280-5b48a66542e0f_articlex[1].png

但是这个接口生成的是有LOGO的小程序二维码。
我们想要生成一个简简单单的,无LOGO的小程序二维码可以吗?
官方的是没有办法的,但是我们可以用第三方的接口生成普通的二维码的方式。

生成无LOGO二维码步骤

1、先解码,把刚才生成的小程序二维码解码,获得URL
2、把获得的URL用普通的二维码生成接口生成普通的无LOGO的二维码

1、解码

解码其实有很多的库我这里直接用了第三方的JSSDK解码,免费的,需要申请接口和appid和appkey

<h2>生成无LOGO二维码</h2>
nbsp;html&gt;

  
    <title>PHP生成微信小程序二维码</title>
    <meta>
    <meta>
    <script></script>
    <script></script>
    <script></script>
  
  
    <!--显示二维码-->
    <p></p>
    <p>
        <input>
        <br>
        <img  alt="PHP生成带参数的微信小程序的二维码" >
    </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 = &#39;xxxxxxx&#39;;//改为您自己的
    var api_key = &#39;xxxxxxxxx&#39;;//改为您自己的
    var timestamp = get_timestamp();
    var client = hprose.Client.create(&#39;http://hprose.wwei.cn/qrcode.html&#39;, [&#39;qrencode&#39;,&#39;qrdecode&#39;]);

    //解码
    $("#qrdecode").click(function(){
            var timestamp = get_timestamp();
            var imgurl = &#39;&#39;;//远程图片
            var imgdata =&#39;<?php echo $base64_image;?>&#39;;//本地图片,直接调用生成的官方小程序二维码,用于解码
            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(&#39;<img  src="&#39;+qrcodeapi+result.data.raw_text+&#39;"/ alt="PHP生成带参数的微信小程序的二维码" >&#39;);
                },function(e) {
                    console.error(e);
                });
            },
            function(e) {
                console.error(e);
            });
    });
    </script>
  
登录后复制

上面是通过js来实现的解码,解码还是调用了php生成的二维码的一个图片地址的

<?php  echo $base64_image;?>
登录后复制

上面是调用本地图片,所以需要结合php生成小程序二维码的代码使用这个解码程序。

解码后需要生成无LOGO的二维码,这个我只需要调用一个接口就行。
接口:http://qr.liantu.com/api.php?...

然后拼接解码后的url就可以生成一个二维码了。

4153609525-5b48a88a453dd_articlex[1].png

那么生成小程序码和生成无LOGO二维码的代码结合起来就是:

 $_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"=&gt;"pages/index/index?id=123","width"=&gt; 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;
  } 

?>

生成小程序官方二维码

PHP生成带参数的微信小程序的二维码"/>

生成无LOGO二维码

nbsp;html>        PHP生成微信小程序二维码               <script></script>     <script></script>     <script></script>           

    

                 
        PHP生成带参数的微信小程序的二维码     

    点击生成无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 = &#39;xxx&#39;;//改为您自己的 var api_key = &#39;xxx&#39;;//改为您自己的 (实际使用,建议在后台完成 signature 签名,以防暴露 api_key ,或定期更改) var timestamp = get_timestamp(); var client = hprose.Client.create(&#39;http://hprose.wwei.cn/qrcode.html&#39;, [&#39;qrencode&#39;,&#39;qrdecode&#39;]); //解码 $("#qrdecode").click(function(){ var timestamp = get_timestamp(); var imgurl = &#39;&#39;;//远程图片 var imgdata =&#39;<?php echo $base64_image;?>&#39;;//本地图片,直接调用生成的官方小程序二维码,用于解码 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(&#39;<img src="&#39;+qrcodeapi+result.data.raw_text+&#39;"/ alt="PHP生成带参数的微信小程序的二维码" >&#39;); },function(e) { console.error(e); }); }, function(e) { console.error(e); }); }); </script>   
登录后复制

但是解码需要用到的两个js库

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php大牛分享:php代码编写的规范,总结的很全

以上就是PHP生成带参数的微信小程序的二维码的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号