H5网页跳转打开微信小程序详解(含完整代码)

2023-11-01

图片

限制条件:

  1. 目前仅支持在微信内打开H5页面;

  2. 已认证的服务号,服务号绑定“JS接口安全域名”下的网页可使用此标签跳转任意合法合规的小程序;

  3. 已认证的非个人主体的小程序,使用小程序云开发的静态网页托管绑定的域名下的网页,可以使用此标签跳转任意合法合规的小程序。

 

 

 

01

 

绑定安全域名

 

登录微信公众平台进入【公众号设置】-->【功能设置】里设置好 “js接口安全域名”。

 

图片

 

02

 

IP白名单设置

登录微信公众平台进入【开发】-->【基本配置】,这里填写你服务器的IP

 

03

 

完整代码

后面直接伸手就给,已经给大家准备了完整的DEMO,填一下自己的信息就可以了。公众号回复『h5跳转小程序』,即可获取完整代码。遇到其他问题可以留言,看到了第一时间会回复大家。

 

图片

 

图片

 

<!--=========================================================公众号:被动睡后收入==========================================================-->
<!--==========================================================PHP --start==========================================================-->
<?php
// 微信 JS 接口签名校验工具: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
$appid = 'AppID'; //填入服务号AppID
$secret = 'AppSecret'; //填入服务号AppSecret

// 获取token
$token_data = file_get_contents('./wechat_token.txt');
if (!empty($token_data)) {
    $token_data = json_decode($token_data, true);
}
$time = time() - $token_data['time'];
if ($time > 3600) {
    $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
    $token_res = https_request($token_url);
    $token_res = json_decode($token_res, true);
    $token = $token_res['access_token'];
    $data = array(
        'time' => time(),
        'token' => $token
    );
    $res = file_put_contents('./wechat_token.txt', json_encode($data));
    if ($res) {
        echo '更新 token 成功';
    }
} else {
    $token = $token_data['token'];
}

// 获取ticket
$ticket_data = file_get_contents('./wechat_ticket.txt');
if (!empty($ticket_data)) {
    $ticket_data = json_decode($ticket_data, true);
}
$time = time() - $ticket_data['time'];
if ($time > 3600) {
    $ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$token}&type=jsapi";
    $ticket_res = https_request($ticket_url);
    $ticket_res = json_decode($ticket_res, true);
    $ticket = $ticket_res['ticket'];
    $data = array(
        'time' => time(),
        'ticket' => $ticket
    );
    $res = file_put_contents('./wechat_ticket.txt', json_encode($data));
    if ($res) {
        echo '更新 ticket 成功';
    }
} else {
    $ticket = $ticket_data['ticket'];
}

// 进行sha1签名
$timestamp = time();
$nonceStr = createNonceStr();

// 注意 URL 建议动态获取(也可以写死).
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // 调用JSSDK的页面地址

// $url = $_SERVER['HTTP_REFERER']; // 前后端分离的, 获取请求地址(此值不准确时可以通过其他方式解决)
$str = "jsapi_ticket={$ticket}&noncestr={$nonceStr}&timestamp={$timestamp}&url={$url}";
$sha_str = sha1($str);

function createNonceStr($length = 16)
{
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
        $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
}

/**
 * 模拟 http 请求
 * @param  String $url 请求网址
 * @param  Array $data 数据
 */
function https_request($url, $data = null)
{
    // curl 初始化
    $curl = curl_init();
    // curl 设置
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    // 判断 $data get  or post
    if (!empty($data)) {
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // 执行
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
}

?>
<!--==========================================================PHP --end==========================================================-->

<!--==========================================================HTML --start==========================================================-->
<html>
<head>
    <title>被动睡后收入-->微信公众号</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="viewport" content="width=device-width,initial-scale=0.5">
</head>
<body>
<div id="app">
    <wx-open-launch-weapp
            id="launch-btn"
            username="gh_xxx"  <!-- 需要跳转的小程序的原生id gh_开头 -->
            path="pages/index/index.html?uid=16" <!-- 需要跳转的小程序的路径以及参数 -->
    >
        <template>
            <style>
                .btn {
                    padding: 12px;
                    width: 10rem;
                    height: 10rem;
                }
            </style>
            <div style="text-align: center;align-items: center;margin: 8rem">
                <button class="btn">打开小程序</button>
            </div>
        </template>
    </wx-open-launch-weapp>
    <script>
        var btn = document.getElementById('launch-btn');
        btn.addEventListener('launch', function (e) {
            console.log('success');
        });
        btn.addEventListener('error', function (e) {
            console.log('fail', e.detail);
        });
    </script>
</div>
<script type="text/javascript" src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script type="text/javascript">
    wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: '<? echo $appid ?>', // 必填,公众号的唯一标识
        timestamp: <? echo $timestamp ?>, // 必填,生成签名的时间戳
        nonceStr: '<? echo $nonceStr ?>', // 必填,生成签名的随机串
        signature: '<? echo $sha_str ?>',// 必填,签名
        jsApiList: ['onMenuShareTimeline', 'scanQRCode'],// 必填,需要使用的JS接口列表,
        openTagList: ['wx-open-launch-weapp']
    });
    wx.ready(function () {
        console.log('接口配置成功');
    });
</script>
</body>
</html>

<!--==========================================================HTML --end==========================================================-->

 

查看APPID、原始ID、页面路径请详见文末更多推荐

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

H5网页跳转打开微信小程序详解(含完整代码) 的相关文章

  • 基于微信小程序实现智能班务管理系统演示【附项目源码+论文说明】

    基于微信小程序实现智能班务管理系统演示 摘要 随着学校规模的不断扩大 学生数量急剧增加 有关学生的各种信息也成倍增长 面对如此庞大的信息量 开发班级综合管理系统来提高学生管理工作的效率就成为必然 通过该系统 可以做到信息的规范管理 科学统计
  • 【小程序】-【

    swiper swiper item轮播图 swiper 是滑块视图容器 其中只可放置 swiper item 组件 部分常用属性如下 其余属性详见 官方文档
  • 【计算机毕设文章】模拟考试小程序

    摘 要 随着我国经济迅速发展 人们对手机的需求越来越大 各种手机软件也都在被广泛应用 但是对于手机进行数据信息管理 对于手机的各种软件也是备受用户的喜爱 模拟考试被用户普遍使用 为方便用户能够可以随时进行模拟考试的数据信息管理 特开发了基于
  • 【计算机毕设文章】微信阅读小程序的设计与实现

    毕 业 设 计 论 文 题目 微信阅读小程序的设计与实现 摘 要 由于APP软件在开发以及运营上面所需成本较高 而用户手机需要安装各种APP软件 因此占用用户过多的手机存储空间 导致用户手机运行缓慢 体验度比较差 进而导致用户会卸载非必要的
  • 【计算机毕设文章】微信点餐小程序

    微信点餐小程序 摘 要 随着社会的发展 社会的方方面面都在利用信息化时代的优势 互联网的优势和普及使得各种系统的开发成为必需 本文以实际运用为开发背景 运用软件工程原理和开发方法 它主要是采用java语言技术和mysql数据库来完成对系统的
  • 【计算机毕设文章】基于微信小程序的学生公寓电费信息管理系统

    基于微信小程序的学生公寓电费信息管理系统 摘 要 随着我国经济迅速发展 人们对手机的需求越来越大 各种手机软件也都在被广泛应用 但是对于手机进行数据信息管理 对于手机的各种软件也是备受用户的喜爱 微信小程序被用户普遍使用 为方便用户能够可以
  • 【计算机毕设文章】旅游出行必备商城小程序的设计与实现

    毕 业 设 计 论 文 题目 旅游出行必备商城小程序的设计与实现 摘 要 由于APP软件在开发以及运营上面所需成本较高 而用户手机需要安装各种APP软件 因此占用用户过多的手机存储空间 导致用户手机运行缓慢 体验度比较差 进而导致用户会卸载
  • 【计算机毕业设计】基于微信小程序的电子购物系统

    由于APP软件在开发以及运营上面所需成本较高 而用户手机需要安装各种APP软件 因此占用用户过多的手机存储空间 导致用户手机运行缓慢 体验度比较差 进而导致用户会卸载非必要的APP 倒逼管理者必须改变运营策略 随着微信小程序的出现 解决了用
  • 【计算机毕业设计】基于微信小程序的二手闲置交易市场系统

    随着计算机技术的成熟 互联网的建立 如今 PC平台上有许多关于二手闲置交易方面的应用程序 但由于使用时间和地点上的限制 用户在使用上存在着种种不方便 而开发一款基于微信小程序的二手闲置交易市场系统 能够有效地解决这个问题 本基于微信小程序的
  • 小程序项目基于微信点单小程序系统

    前言 本微信点单小程序是根据当前的实际情况开发的 在系统语言选择上我们使用的Java语言 数据库是小巧灵活的MySQL数据库 框架方便使用的是当前最主流的SPRING BOOT框架 本系统的开发可以极大的满足了人们在线点单的需求 微信点单小
  • 精品Nodejs实现的“音乐盒”小程序的设计与实现-音乐播放器歌曲

    含文档 PPT 源码等 精品Nodejs实现的 音乐盒 小程序的设计与实现 包运行成功 该项目含有源码 文档 PPT 配套开发软件 软件安装教程 项目发布教程 包运行成功 软件开发环境及开发工具 操作系统 Windows 10 Window
  • 小程序双向滑动组件双向slider滑动微信小程序组件slider组件

    使用说明 第一步 将zyslider和utils两个目录放在zjlist里面 如下图 第二步 在需要使用的页面json中引入组件 如下图 第三步 在wxml代码中写入以下代码 第四步 参数解析
  • 【工具库推荐】小程序一款阳历阴历(农历)日历组件

    展示 使用方法 组件目录如上图 调用如下图 第一步 在pages rl index json中设置引用这个日历组件 代码如下 第二步 在需要调用页面wxml文件中引用这个日历组件 并绑定相应的属性 如下图 属性解释 showDatePick
  • nodejs微信小程序+python+PHP的大学生社会实践申报系统-计算机毕业设计推荐

    系统主要包括首页 个人中心 项目分类管理 学生管理 教师管理 学生活动申报管理 社会实践活动管理 活动报名申请管理 系统管理等功能模块 根据需求分析制定模块并设计数据库结构 大学生社会实践申报系统的需求和管理上的不断提升 大学生社会实践申报
  • 一步步教你创建酒店预订小程序

    如果你想为你的酒店或旅馆创建一个预订小程序 这篇文章将为你提供详细的步骤和指南 我们将按照以下顺序进行 一 进入乔拓云网后台 首先 打开乔拓云网的官方网站 点击右上角的 登录 按钮 登录成功后 点击 轻应用小程序 进入设计小程序页面 3 在
  • 一步步教你创建酒店预订小程序

    如果你想为你的酒店或旅馆创建一个预订小程序 这篇文章将为你提供详细的步骤和指南 我们将按照以下顺序进行 一 进入乔拓云网后台 首先 打开乔拓云网的官方网站 点击右上角的 登录 按钮 登录成功后 点击 轻应用小程序 进入设计小程序页面 3 在
  • windows对微信及小程序抓包:Burp+Fiddler+Proxifier

    本文由掌控安全学院 zbs 投稿 话不多说 直接先上个效果图 新新的版本哈 好好的抓包哈 然后直接说我如何配置的 准备好三个工具 bp fiddler proxifier 也可以用其他的进行代理 bp proxifier正式课件有 fidd
  • 如何创建自己的小程序?零编程一键创建实战指南

    当今瞬息万变的数字世界中 拥有一个属于自己的小程序已成为企业与个人展示 服务和互动的重要途径 无需编码知识 通过便捷的云端可视化平台 也可以轻松创建一款符合自身需求且功能丰富的小程序 下面给大家分享如何创建自己的小程序 1 选择一个易用的小
  • 微信怎么申请小程序商城?一步步教你完成

    随着移动互联网的发展 越来越多的企业和个人开始关注微信小程序 微信小程序是一种不需要下载安装即可使用的应用 它实现了应用 触手可及 的梦想 用户扫一扫或者搜一下就能打开应用 其中 小程序商城因其便捷性和实用性 受到了众多商家的青睐 那么 如
  • 微信小程序|SSM微信小程序的学生选课系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • 转行学IT:零基础学什么技术好?

    最近在微博上看到一段话 他说 想要赚钱不惜命 IT是首选 我认为 如果真的对代码感兴趣 想赚钱 这个行业确实是个好的行业 而且现在经济形态不好 很多传统行业工作难找 工资也低 很多应届毕业生费尽心思找到的工作工资也少的可怜 转行学IT 零基
  • 基于光谱成像的柑橘黄龙病检测

    目录 前言 研究现状 室内检测 室外检测 移动地面传感器平台 多光谱 无人机 多光谱 讨论 参考文献 前言 柑橘黄龙病 又称绿化 是一种由病原菌介导的免疫疾病 因其危害性和快速传播的特点成为影响柑橘生长的最具破坏性的疾病 由于现阶段没有针对
  • 2023更新版大厂面经

    主要提供两个方向 一个是漏洞挖掘 一个是红队 面了之后 直观感受是 面试也是有套路可言的 这里的套路指的不是所谓的出题套路 而是涉及的技术栈 都是大同小益的 无非就是那么几样 java 域为主体 其他为辅助 虽然技术栈不变 但是面试的问题每
  • 国外11个高质量免费的3D素材网站-建筑设计/室内设计/效果图渲染

    Renderbus瑞云效果图云渲染小编小瑞又来给大家分享国内外效果图及云渲染行业的前沿资讯啦 今天给大家分享11个国外免费的3D素材网站 帮助建筑设计 室内设计 效果图渲染的小伙伴 在 Photoshop Revit Sketchup Au
  • 文件服务器登录格式,服务器公共库开发--读取ini文件格式的类

    created 2008 07 28 filename config h author Lichuang purpose 封装读取ini格式的配置文件操作 include config h include comdef h include
  • c++输出字符数组乱码_c++输出中文乱码解决方案

    问题的原因应该在cmd的编码和c 程序编码 源文件编码 的不同 cmd默认的是gbk编码 而我用的vs code默认是utf 8编码 因而在输出中文文本时会出现乱码 但我也遇到了一个比较怪异的情况 就是cmd和cpp文件编码都是gbk的情况
  • java8常用新特性

    该段代码复制后根据自己需求调整运行 import javax print DocFlavor import java util import java util stream Collectors public class Maim pub
  • 【STM32】HardFault_Handler问题解决的一种办法

    好久没写技术博客了 这次就把农历新年前遇到的问题在这里说一下吧 在用STM32F4写程序 调试时候会遇到程序在调试的时候死在某一段代码上 一直在一段代码上死循环 经过百度以后发现了一些造成这个错误的原因 STM32出现HardFault H
  • 最全解读】各种金融机构的产品分析(银行、证券、基金、信托...)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 目录 一 银行理财产品 1 现有理财业务监管规则 2 理财业务的模式 3 银基合作 二 证券公司 1 证券公司主要业务范围 2 证券公司资管产品分类 三 基金公司 1 基金
  • When allowCredentials is true, allowedOrigins cannot contain the special value “*“ since that cannot

    最近新写springboot 配置跨域配置文件后出现的问题 org springframework web util NestedServletException Request processing failed nested excep
  • 一证通查查询名下互联网账户

    全国互联网账户 一证通查 来啦 核验身份后一键在线查询名下所有关联号码以及注册 名下电话卡查询 https tb3 cn A6zcU6手机号绑定查询 https tb3 cn A3lhMk
  • Vue3.0脚手架安装项目(通过命令行)

    Vue3 0通过命令行来创建Vue脚手架项目 1 先安装node js https nodejs org en download 自行安装 查看node jsb版本 node version 2 全局安装脚手架 npm install g
  • 智能信息处理专业是干嘛的?

    摘要 主要是介绍智能信息处理专业是干嘛的 包括其定义 涉及的领域 学习的内容和算法 发展趋势 工作前景和相关学习资料 def 使用各种智能手段进行信息交换的过程 其中智能信手段包括人工智能 机器智能 计算机智能等技术 所涉及学科 智能信息处
  • linux中感叹号的作用,Linux - 感叹号

    在Linux命令行下令人惊叹的惊叹号 符号在 Linux 中不但可以用作否定符号 还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令 下面的所有命令都已经在 Bash Shell 中经过确切地检验 尽管我没有试过 但大多都不能
  • STM32--基本定时器&&通用定时器

    1 定时器概述 定时器分为基本定时器 通用定时器 高级定时器 例如 STM32F10x系列包含4个通用定时器 TIM2 TIM5但是STM32F103Rx系列只有3个通用定时器 TIM2 TIM4 这些通用定时器是完全独立的 不共享任何资源
  • 上传、下载huggingface仓库文件(模型、数据等)

    下载 例如 想要从huggingface hub下载llama 13b模型文件到本地 可以用如下命令 local dir就是你想要下载到的本地文件夹 from huggingface hub import snapshot download
  • MySQl的基本操作

    前言 MySQL是一种关联数据库管理系统 由于其体积小 速度快的特点 数据库CURD 他和前面的oracel的使用方法差不多 这里就不过多叙述 大概记录一下 创建数据库 创建一个名称为mydb1的数据库 默认为latin1 create d
  • Java-用户自定义异常

    Java 用户自定义异常 1 如何自定义异常 继承现有的异常父类 RuntimeException Exception 提供全局常量 serialVersionUID 提供重载的构造器 2 code举例 定义 package p8excep
  • 使用github生成在线前端项目链接

    作为一个前端小白 一开始是想面试的时候可以让HR直观地看到我的前端项目 然后就在网上找方法可以怎么解决我的这个需求 直至昨天 参考各位大佬的笔记和博客 断断续续 摸索了好几天 总算有个自己的网址 看到的方法大致如下 一 使用花生壳软件进行远
  • H5网页跳转打开微信小程序详解(含完整代码)

    限制条件 目前仅支持在微信内打开H5页面 已认证的服务号 服务号绑定 JS接口安全域名 下的网页可使用此标签跳转任意合法合规的小程序 已认证的非个人主体的小程序 使用小程序云开发的静态网页托管绑定的域名下的网页 可以使用此标签跳转任意合法合