PHP实现生成小程序二维码带参数进入指定页面

2023-10-27

1.需求场景

1.小程序一定要是发布的小程序。2.记得把业务域名加上。

场景:需要在网页上生成小程序的二维码图片,微信扫码之后带参数进入指定的小程序页面

小程序在扫描二维码跳转的指定页面中,在onload里面接收参数。

注意scene是后台返回的,不是特定的参数名,不清楚的可以在扫描二维码之后进入的页面打印option查看。

获取到参数值之后需要用到decodeURIComponent进行解密,解密后的格式一般是 a=b&c=d的格式。

可以尝试以下方法截取:

onLoad(option){
    let queryAll = decodeURIComponent(option.scene)
    var a = queryAll.split('&')
    var obj = new Object
    for(let i in a){
        var b = a[i].split('=')
     obj[b[0]] = b[1]
}
console.log(obj);

 2.代码及说明

扫二维码对应模拟小程序入口场景中扫码进入小程序。可以路径传参和scene传参。然后再指定要跳转的页面路径。下面是单php文件,直接运行做演示用的。这里我走的路径传参。生成的图片在同路径uploads目录下,记得提前创建好这个目录哦~

<?php
	header("Content-Type: text/html; charset=utf-8");
	function test($code){  //code为参数
	    	$appid = 'xxx';
	    	$secret = 'xxxx';
	    	$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
	        //开启session
	        session_start(); 
	        // 保存2小时 
	        $lifeTime = 2 * 3600; 
	        setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
	        // echo $url;
	        $access_token = $_SESSION['access_token'];
	        if(empty($access_token)){
	            $access_token_data = getJson($url);
	            $access_token = $access_token_data['access_token'];
	            $_SESSION['access_token'] = $access_token;
	        }
	        if(!empty($access_token)){
	            $url = 'https://api.weixin.qq.com/wxa/getwxacode?access_token='.$access_token;
	            $data['path'] = 'pages/data/data?id='.$code;
	            $data['scene'] = 'type=qrcode';//(string类型,必须是数字)
	            $data['width'] = 430;
	            $result = curlPost($url,$data,'POST');
	            // p($result);
				$filename = md5($code);  //文件名
	            $ret = file_put_contents('./uploads/'.$filename.'.png', $result, true);
				$path='./uploads/'.$filename.'.png';
				var_dump($path);
	            echo '成功';
	        }else{
	            echo 'string';
	        }
	 }
	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;  
	}  
	test(12);
?>

运行效果:so easy

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP实现生成小程序二维码带参数进入指定页面 的相关文章

  • 重定向后丢失会话变量

    用户填写用户名和密码 如果正确 页面会加载一些信息 例如user id到会话变量 该脚本制作了一个header Location 重定向 不知何故 下一页无法识别会话 怎么会 重定向到同一个域 并且所有页面都有session start 我
  • 当错误较多时,Laravel 不会显示错误。这是 Bug?

    重复的https github com laravel framework issues 31123 https github com laravel framework issues 31123 Laravel 版本 6 8 0 6 10
  • 用于分页的php示例脚本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以建议一个好的分页 php 脚本 其中人们想要分页显示数据库中的大量项目 以下链接可以帮助您
  • 如何在Web服务中传递URL

    我想将此 URL 作为网址中的值传递http localhost h2orn php verify php email emails hash hash但是 我只能在 符号之前传递 我想传递所有 URL 我正在使用java网络服务 代码在这
  • Laravel 5 与 SAML 2 和现有 IDP 集成

    我使用 Laravel 5 我正在尝试将 SAML 2 0 与其集成 我找到了这个包 https github com aacotroneo laravel saml2 https github com aacotroneo laravel
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • FPDF - 内嵌粗体文本

    我正在尝试从 PHP 创建 PDF 出于法律原因 我们需要将免责声明的一部分设为粗体 并且需要概述免责声明 我当前的代码使用 if isset POST optout POST optout yes pdf gt Ln 5 pdf gt S
  • 适用于 Windows 的 PHP 支持的 GUI 应用程序

    我知道 PHP 是一种解释性语言 对于基于 Web 的事物来说 不是为在实际操作系统上运行 GUI 应用程序而设计的 但是有没有办法呢 基本上 是否有一个框架 系统允许我创建 本机 基本上是二进制文件 exe 看起来像带有本机控件和所有内容
  • PHP 中的正则表达式:找到第一个匹配的字符串

    我想在非常长的文本中找到第一个匹配的字符串 我知道我可以使用 preg grep 并获取返回数组的第一个元素 但是 如果我只需要第一场比赛 或者我知道提前只有一场比赛 那么这样做效率不高 有什么建议吗 预匹配 http www php ne
  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • Yii2 DropDownList Onchange 更改自动完成小部件“源”属性?

    我已经尝试过这个 yii2 依赖的自动完成小部件 https stackoverflow com questions 27025791 yii2 dependent autocomplete widget 但我不知道为什么它不起作用 这是我
  • 将秒转换为天、小时、分钟和秒

    我想转换一个变量 uptime这是秒 分为天 小时 分钟和秒 Example uptime 1640467 结果应该是 18 days 23 hours 41 minutes 这可以通过以下方式实现DateTime http php net
  • ZF2 工厂获取参数

    我有一个动态类别导航 在导航工厂中 我想从路线获取参数 我怎样才能做到这一点 在我看来 在我的 module php 中 public function getServiceConfig return array factories gt
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • 无法在 Centos 上安装 php-mysqli 扩展

    我正在尝试将 mysqli 扩展安装到 php yum install php mysqli 我收到下一个错误 Transaction Check Error file usr share mysql charsets Index xml
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是
  • 哪个 PHP 5 版本最常用?

    当我开发将在不同配置的客户端 Web 服务 通常使用共享托管 上使用的应用程序时 我应该假设大多数 Web 服务器都具有哪个 PHP 5 版本 例如 5 2 x 5 3 x 等 在所有使用 PHP 版本 5 的网站中 有 84 9 使用版本

随机推荐

  • deepin的踩坑问题与解决方案,以及使用分享(持续更新)

    笔者目前的电脑环境是Redmibook 14 AMD的锐龙版 R5 3700U 只有集成显卡 不同换环境下问题原因不一定相同 如驱动等兼容性问题 可以借鉴解决思路 但更多问题还是具有共性 Q1 u盘安装的时候 卡在蓝色背景图 无安装程序启动
  • e3 服务器虚拟机,e3 虚拟机

    e3 虚拟机 内容精选 换一换 Hypervisor能实现同一物理机上不同虚拟机之间的资源隔离 避免虚拟机之间的数据窃取或恶意攻击 保证虚拟机的资源使用不受周边虚拟机的影响 用户使用虚拟机时 仅能访问属于自己的虚拟机的资源 如硬件 软件和数
  • 【Ethernet】以太网卡LAN8720A分析和使用

    文章目录 1 LAN8720A简介 2 PHYAD 0 PHY地址配置 3 MODE 2 0 Mode配置 4 nINTSEL nINT REFCLKO配置 5 REGOFF 配置内部 1 2V电压源 6 SMI MDC MDIO 总线接口
  • android studio jdk se 8,java - Is JDK 1.8 fully supported by Android Studio? - Stack Overflow

    Actually you get all sorts of crazy Gradle errors when trying to build Android Studio projects with Java 8 like 2016 04
  • C++避坑——most vexing parse问题

    1 坑 的问题是什么 先看一段代码 class Functor public void operator std cout lt lt 我是线程的初始函数 lt lt std endl int main std thread t Funct
  • 第六章:认识Java的API-使用Java函数库

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第六章 认识Java的API 使用Java函数库 Java内置有数百个类 如果你知道如何从统称Java API的Java的函数库中查找所需功能 那就不用再造轮子了 核
  • 检测属性

    点上面关注免费学习前端知识 JavaScript对象可以看做属性的集合 我们经常会检测集合中成员的所属关系 判断某个属性是否存在于某个对象中 可以通过in运算符 hasOwnPreperty 和propertyIsEnumerable 方法
  • HTML常见标签总结

    目录 1 标题标签 2 段落标签 3 字体修饰标签 4 图片标签 5 超链接标签 6 表格标签 7 列表标签 8 表单标签 9 下拉菜单 10 多行文本框 1 标题标签 一级标题是 h1 h1 中间填上标题的内容 一共可以设置六级标题 数字
  • 【Git笔记】添加暂存区与提交本地库

    本文以提交 hello txt 为例 在开始之前普及一个快捷方式 在 Linux 中 文本复制为 esc gt yy 粘贴为 d 查看本地库状态 git status 当文本只停留在工作区时 本地状态如下 添加暂存区 git add hel
  • Naviact无法连接到MySQL数据库

    无法连接到MySQL数据库 省流版 服务器没有开MySQL的端口 之所以还要写一篇文章 是因为开端口只需要一分钟 而根据各种现象与线索推断出没有开端口则需要三个小时 问题背景 在服务器上安装了Linux虚拟机 然后在虚拟机上安装MySQL
  • 文本分类之模型初探

    这里写自定义目录标题 简说回归模型 逻辑回归模型介绍 逻辑回归模型应用 简说回归模型 回归模型是对统计关系进行定量描述的数学模型 研究的是因变量和自变量之间的关系 研究回归模型要用到回归方法 常见的回归方法有线性回归 逻辑回归 多项式回归等
  • C语言编写一个简单的选择题答题系统

    上个星期 我们老师给我们布置了一道非常变态的作业题 开始一看只有一道题 欣喜若狂 以为老师终于大发慈悲了一回 结果点开一看 长这样 顿时就傻了眼 对于一个刚接触C语言一两个月的小白来说 不能说不会做 只能说看不懂 哭笑 哭笑 但是经过几天的
  • html,css初学

    安装VSCODE 插件 live server html support html 然后为了更好地理解 请逐步输入 并及时查看效果 div class box h1 非顶级程序员 h1 h2 hhh h2 img src tes div
  • Git/Ctags/Vim/GDB基础笔记

    gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Git基础知识 gt gt gt gt gt gt gt gt gt gt g
  • linux rootfs.img的制作

    cramfs是只读压缩的文件系统 文件系统类型可以是ext2 ext3 什么的 cramfs和romfs只是一个文件系统类型 ramdisk相当于一块硬盘空间 可以理解为在内存中虚拟出一块硬盘来 所以它上面就可以有你linux支持的各种文件
  • Linux内核笔记005 - 越界访问内存,Linux内核处理过程

    本文转自网络文章 内容均为非盈利 版权归原作者所有 转载此文章仅为个人收藏 分享知识 如有侵权 马上删除 原文作者 jmpcall 专栏地址 https zhuanlan kanxue com user 815036 htm 1 几个重要的
  • 期货开户市场有多种赚钱方法

    你永远都不会成为市场专家 但这没关系 许多人认为 为了在市场上赚钱 需要成为市场专家 但是市场太复杂了 在任何给定时间点都有太多因素在起作用 没有人可以跟踪所有信息并成功交易 没有人可以成为市场专家 就是为什么当你问任何长期从事该行业的经验
  • Csharp:asp.net CheckBoxList databind

  • python -- 图像识别练习

    usr bin env python from PIL import Image import pytesseract url img denggao jpeg image Image open url image image conver
  • PHP实现生成小程序二维码带参数进入指定页面

    1 需求场景 1 小程序一定要是发布的小程序 2 记得把业务域名加上 场景 需要在网页上生成小程序的二维码图片 微信扫码之后带参数进入指定的小程序页面 小程序在扫描二维码跳转的指定页面中 在onload里面接收参数 注意scene是后台返回