博主信息
拾一枝樱花的博客
博文
36
粉丝
0
评论
2
访问量
44512
积分:0
P豆:78

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

2021年11月02日 15:24:41阅读数:363博客 / 拾一枝樱花的博客/ php

<?php

header('content-type:text/html;charset=utf-8');

//配置APPID、APPSECRET

$APPID = "你的appid";

$APPSECRET = "你的APPSECRET";

if(!empty($_GET['id'])){

    $params = "?id=".$_GET['id'];

}else{

    $params = '';

}

//获取access_token

$access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET";

//缓存access_token

session_start();

$_SESSION['access_token'] = "";

$_SESSION['expires_in'] = 0;

$ACCESS_TOKEN = "";

if (!isset($_SESSION['access_token']) || (isset($_SESSION['expires_in']) && time() > $_SESSION['expires_in'])) {

    $json = httpRequest($access_token);

    $json = json_decode($json, true);

    $_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" => "lionfish_comshop/pages/index/index".$params, "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;

}

?>

<img src="<?php echo $base64_image; ?>"/>


版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • php解决办法:1、获取token;2、添加“base64_encode($res);”;3、获取;4、请求后台交互,并将传过去即可。
    中怎么创建页面?下面本篇文章给大家介绍一下在当前页面方法,希望对大家有所帮助!
    下载官网提供类库后,只需要使用phpqrcode.php就可以了,当然您PHP环境必须开启支持GD2。
    首先说明一下,支付主要逻辑集中在后端,前端只需携支付所需据请求后端接口然后根据返回结果做相应功失败处理即可。