PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序

简介: PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序

图片二维码生成

<?php
//二进制转图片image/png
    function burryToBase64($contents, $mime){
        $base64   = base64_encode($contents);
        return ('data:' . $mime . ';base64,' . $base64);
    }
 function getAccessToken(){
        $grant_type = 'client_credential';
        $appid = 'wx56dde2c282ad225b';
        $secret = 'ff76cf2da3af30fb6fcb421016ffd67e';
        $url='https://api.weixin.qq.com/cgi-bin/token?grant_type='.$grant_type.'&appid='.$appid.'&secret='.$secret;
        $accessToken = curlGet($url);
        return $accessToken['access_token'];
    }
    function curlGet($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output,true);
    }
  header("Content-Type: text/html; charset=utf-8");
  function index($code){  //code为参数
          // echo $url;
          $access_token = getAccessToken();
          if(!empty($access_token)){
              $url = 'https://api.weixin.qq.com/wxa/getwxacode?access_token='.$access_token;
              $data['path'] =  "/pages/index/index?url=https://dl.99tv.top/".$code;
              $data['scene'] = 'type=qrcode';//(string类型,必须是数字)
              $data['width'] = 430;
              $result = curlPost($url,$data,'POST');
             $image = burryToBase64($result,'image/png');
             $filename = md5($code);  //文件名
              $ret = file_put_contents('./uploads/'.$filename.'.png', $result, true);
        $path='./uploads/'.$filename.'.png';
                return $image;
          }else{
              echo '获取asstoken失败';
          }
   }
  function getJson($url,$data=array(),$method='GET'){
          $ch = curl_init();//1.初始化  
          curl_setopt($ch, CURLOPT_URL, $url);//2.请求地址  
          curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);//3.请求方式  
          //4.参数如下  
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
          if($method=="POST"){//5.post方式的时候添加数据  
              $data = json_encode($data);
              curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
          }  
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          $output = curl_exec($ch);
          curl_close($ch);
          return json_decode($output, true);
  }
  function curlPost($url,$data,$method){
          $ch = curl_init();   //1.初始化  
          curl_setopt($ch, CURLOPT_URL, $url); //2.请求地址  
          curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);//3.请求方式  
          //4.参数如下  
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//https  
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);  
          curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');//模拟浏览器  
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
          curl_setopt($ch, CURLOPT_AUTOREFERER, 1);  
              curl_setopt($ch, CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));//gzip解压内容  
              curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');  
          if($method=="POST"){//5.post方式的时候添加数据  
              $data = json_encode($data);
              curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
          }  
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
          $tmpInfo = curl_exec($ch);//6.执行  
          if (curl_errno($ch)) {//7.如果出错  
              return curl_error($ch);  
          }  
          curl_close($ch);//8.关闭  
          return $tmpInfo;  
  }  
  $result=index('zt');
  echo "<img src='$result'>"
?>


链接跳转

前端

<a href="<?php echo jump($value['tinyurl']);?>" style="color:white;font-size:20px;">打开小程序</a>

调用代码

<?php
header('Content-type: text/html; charset=utf-8');
//引用加密文件
//入口文件
//jump($id);
/**
 * 跳转小程序
 */
     function curlGet($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output,true);
    }
   function getAccessToken(){
        $grant_type = 'client_credential';
        $appid = 'wx56dde2c282ad225b';
        $secret = 'ff76cf2da3af30fb6fcb421016ffd67e';
        $url='https://api.weixin.qq.com/cgi-bin/token?grant_type='.$grant_type.'&appid='.$appid.'&secret='.$secret;
        $accessToken = curlGet($url);
        return $accessToken['access_token'];
    }
function jump($id)
{
     $access_token = getAccessToken();
    $url = 'https://api.weixin.qq.com/wxa/generatescheme?access_token=' . $access_token . '';
    $jump_wxa = [
        'path'          => '/pages/index/index',
        'query'         => "url=https://dl.99tv.top/$id",
        'env_version'   => 'trial'
    ];
    $params = [
        'jump_wxa'      => (object)$jump_wxa,
        'expire_type'   => 0,
        'expire_time'   => time() + 1000
    ];
    $res = curl_post($url, $params);
    $res = json_decode($res);
    //  var_dump($res);
    if ($res->errcode == 0) {
        return $res->openlink;
        // echo json_encode(['url' => $res->openlink, 'code' => 1]);
    }
}
function curl_get($url){
   $header = array(
       'Accept: application/json',
       'isOpenSecret: 1'
    );
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 超时设置,以秒为单位
    curl_setopt($curl, CURLOPT_TIMEOUT, 1);
    // 超时设置,以毫秒为单位
    // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
    // 设置请求头
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    //执行命令
    $data = curl_exec($curl);
    // 显示错误信息
    if (curl_error($curl)) {
        print "Error: " . curl_error($curl);
    } else {
        // 打印返回的内容
        // print_r($data);
        return $data;
        curl_close($curl);
    }
}
/**
 * 获取accessToken
 */
/**
 * @param string $url post请求地址
 * @param array $params
 * @return mixed
 */
function curl_post($url, array $params = array())
{
    $data_string = json_encode($params);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt(
        $ch,
        CURLOPT_HTTPHEADER,
        array(
            'Content-Type: application/json'
        )
    );
    $data = curl_exec($ch);
    curl_close($ch);
    return ($data);
}


相关文章
ly~
|
3月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
84 6
|
3月前
|
JavaScript 前端开发 安全
php学习笔记-普通表单参数提交获取及页面的重定向和一个登录小demo-day05
本文介绍了PHP中普通表单参数的提交获取、页面重定向的方法,并通过一个登录示例演示了表单参数的封装和页面跳转处理。
|
19天前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
4天前
|
移动开发 小程序 PHP
校园圈子论坛系统采取的PHP语音和uni账号开发的小程序APP公众号H5是否只需要4800元?是的,就是只需要4800元
关于校园圈子论坛系统采用PHP语言和uni-app开发的小程序、APP、公众号和H5是否仅需4800元这个问题,实际上很难给出一个确定的答案。这个价格可能受到多种因素的影响
|
25天前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
37 5
|
25天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
39 3
|
25天前
|
存储 SQL 数据处理
PHP中如何高效地处理大规模数据的排序?
在PHP中处理大规模数据排序时,选择合适的方法至关重要。对于内存内可以处理的数据,可以直接使用PHP内置排序函数;对于超出内存限制的数据,可以考虑分块处理、外部排序或利用数据库的排序功能。根据具体应用场景和数据规模,选择最佳的排序策略,确保排序操作高效且稳定。
22 2
|
1月前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
55 3
|
1月前
|
关系型数据库 MySQL 数据库连接
13 PHP数据的获取
路老师在知乎上分享了PHP语言的知识,帮助大家入门和深入理解PHP。本文介绍了从结果集中获取一行数据作为对象(`mysqli_fetch_object()`)、获取一行作为枚举数组(`mysqli_fetch_row()`)、获取查询结果集中的记录数(`mysqli_num_rows()`)、释放内存(`mysqli_free_result()`)以及关闭数据库连接(`mysqli_close()`)的方法,并提供了具体示例代码。
30 3
|
1月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。