H5跳转微信小程序,通过获取URL Scheme,实现短信跳转小程序,微信跳转小程序,邮件跳转小程序,外部链接跳转小程序

在这里插入图片描述

H5链接跳转小程序有2种方式:
第一种:通过微信官方提供的标签wx-open-launch-weapp,打开小程序
第二种:通过获取URL Scheme实现链接跳转小程序


一、wx-open-launch-weapp

官方文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#21

注意:

开放范围:针对非个人主体小程序开放。

1、缺点

1)、wx-open-launch-weapp是在微信浏览器内的H5页面跳转小程序
2)、已认证的服务号,服务号绑定“JS接口安全域名”下的网页可使用此标签跳转任意合法合规的小程序。
所以在使用上我选择了URL Scheme方式跳转小程序
在这里插入图片描述

代码:
<wx-open-launch-weapp
  id="launch-btn"
  appid="wx12345678"
  path="pages/home/index?user=123&action=abc"
>
  <script type="text/wxtag-template">
    <style>.btn { padding: 12px }</style>
    <button class="btn">打开小程序</button>
  </script>
</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>
在onload里进行签名验证
wx.config({
		  // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
		  // debug: true, 
		  // 必填,公众号的唯一标识
		  appId: data.data.appId,
		  // 必填,生成签名的时间戳
		  timestamp: data.data.timestamp,
		  // 必填,生成签名的随机串
		  nonceStr: data.data.nonceStr,
		  // 必填,签名
		  signature: data.data.signature,
		  // 必填,需要使用的JS接口列表,且任意填写
		  jsApiList: ['scanQRCode'],
		  // 可选,需要使用的开放标签列表,wx-open-launch-weapp 指H5跳转小程序 wx-open-launch-app 指H5跳转app
		  openTagList: ["wx-open-launch-weapp"],
		  wx.ready(function () {
		  var btn = document.getElementById('launch-btn');
		  // launch 用户点击跳转按钮并对确认弹窗进行操作后触发
		  btn.addEventListener('launch', function (e) {
			  console.log(e,'success');
		   });
		   // error 用户点击跳转按钮后出现错误
		   btn.addEventListener('error', function (e) {
			  console.log(e.detail,'fail');
		   });
	 });
	wx.error(function (res) {
		console.log(res, 'error');
	// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名
	});




二、URL Scheme(我是通过获取URL Scheme方法实现跳转小程序的)

官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/url-scheme.html

注意:

开放范围:针对非个人主体小程序开放。

1、获取URL Scheme

在2022年4月11日以前可以在小程序公众平台生成永久的URL Scheme
在这里插入图片描述
但是在2022年4月11日之后就不在支持生成URL Scheme
在这里插入图片描述

在这里插入图片描述
只能通过token去生成URL Scheme
1、通过小程序appid和secret密钥获取AccessToken
2、通过AccessToken获取URL Scheme(配置路径和参数)

完整代码

<template>
  <div class="container">
    <img class="logo" src="./nyLogo.png" alt="">
    <div class="yh-name">实惠商城</div>
    <div class="miniprogram"><img src="./miniprogram.svg" alt="">小程序</div>
    <van-button class="open-miniprogram-btn" color="#58BE6B" block type="primary" @click="goMiniProgram">获取</van-button>
  </div>
</template>

<script>
import {
  Button,
} from 'vant';
import axios from 'axios'

export default {
  name: "RegisterInfo",
  components: {
    [Button.name]: Button,
  },
  data() {

  },
  computed: {},
  mounted: function () {},
  watch: {
    'formData.cardType': function () {
      this.formData.cardno = ''
    }
  },
  methods: {
    goMiniProgram(){
      // 获取AccessToken: auth.getAccessToken
      axios({
        url: '/cgi-bin/token?grant_type=client_credential&appid=wx222222222222222222222&secret=22222222333333333444444',
        method: 'get'
      }).then(res => {
        // 获取URLscheme
        axios({
          url: `/wxa/generatescheme?access_token=${res.data.access_token}`,
          method: 'post',
          data: {
            "is_expire": true,
            "expire_time": new Date().getTime(),
            "jump_wxa": {
              //path为需要跳转的小程序路径
              "path": '/',
              //要打开的小程序版本。正式版为"release",体验版为"trial",开发版为"develop"。
              "env_version": 'trial',
              //参数跳转过去携带的参数,最大1024个字符,只支持数字,大小写英文以及部分特殊字符
              "query": ''
            }
          }
        }).then(ret => {
          if (ret.data.errcode === 0) {
            location.href = ret.data.openlink
          }
        })
      })
    }
  },
}
</script>

<style scoped lang="less">
html,body{
  height: 100%;
}
.container {
  height: 100%;
  padding: 0.32rem;
  text-align: center;
}
.container .logo{
  width: 1.5rem;
  height: 1.5rem;
  display: inline-block;
  margin-top: 30%;
}
.container .yh-name{
  font-size: 0.4rem;
  color: #333;
  padding: 0.2rem;
}
.container .miniprogram{
  font-size: 0.32rem;
  color: #999;
  padding: 0.2rem;
}
.container .miniprogram img{
  width: 0.32rem;
  height: 0.32rem;
}
.open-miniprogram-btn{
  width: 4rem;
  height: 0.8rem;
  background-color: #58BE6B;
  color: #fff;
  border: none;
  font-size: 0.32rem;
  margin: 40% auto 0;
}
</style>

由于appid和secret写在前端,存在暴露的情况,不安全,所以改到了后端获取token,获取URL Scheme

修改后代码如下:

调后端接口,获取URL Scheme,通过location.href实现跳转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实惠商城</title>
    <!--移动端适配-->
    <script>
        !function(){var a="@charset \"utf-8\";html{color:#000;background:#fff;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html *{outline:0;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}html,body{font-family:sans-serif}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{margin:0;padding:0}input,select,textarea{font-size:100%}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}abbr,acronym{border:0;font-variant:normal}del{text-decoration:line-through}address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:500}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:500}q:before,q:after{content:''}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}a:hover{text-decoration:underline}ins,a{text-decoration:none}",b=document.createElement("style");if(document.getElementsByTagName("head")[0].appendChild(b),b.styleSheet)b.styleSheet.disabled||(b.styleSheet.cssText=a);else try{b.innerHTML=a}catch(c){b.innerText=a}}();!function(a,b){function c(){var b=f.getBoundingClientRect().width;b/i>540&&(b=540*i);var c=b/10;f.style.fontSize=c+"px",k.rem=a.rem=c}var d,e=a.document,f=e.documentElement,g=e.querySelector('meta[name="viewport"]'),h=e.querySelector('meta[name="flexible"]'),i=0,j=0,k=b.flexible||(b.flexible={});if(g){console.warn("灏嗘牴鎹凡鏈夌殑meta鏍囩鏉ヨ缃缉鏀炬瘮渚 ");var l=g.getAttribute("content").match(/initial\-scale=([\d\.]+)/);l&&(j=parseFloat(l[1]),i=parseInt(1/j))}else if(h){var m=h.getAttribute("content");if(m){var n=m.match(/initial\-dpr=([\d\.]+)/),o=m.match(/maximum\-dpr=([\d\.]+)/);n&&(i=parseFloat(n[1]),j=parseFloat((1/i).toFixed(2))),o&&(i=parseFloat(o[1]),j=parseFloat((1/i).toFixed(2)))}}if(!i&&!j){var p=(a.navigator.appVersion.match(/android/gi),a.navigator.appVersion.match(/iphone/gi)),q=a.devicePixelRatio;i=p?q>=3&&(!i||i>=3)?3:q>=2&&(!i||i>=2)?2:1:1,j=1/i}if(f.setAttribute("data-dpr",i),!g)if(g=e.createElement("meta"),g.setAttribute("name","viewport"),g.setAttribute("content","initial-scale="+j+", maximum-scale="+j+", minimum-scale="+j+", user-scalable=no"),f.firstElementChild)f.firstElementChild.appendChild(g);else{var r=e.createElement("div");r.appendChild(g),e.write(r.innerHTML)}a.addEventListener("resize",function(){clearTimeout(d),d=setTimeout(c,300)},!1),a.addEventListener("pageshow",function(a){a.persisted&&(clearTimeout(d),d=setTimeout(c,300))},!1),"complete"===e.readyState?e.body.style.fontSize=12*i+"px":e.addEventListener("DOMContentLoaded",function(){e.body.style.fontSize=12*i+"px"},!1),c(),k.dpr=a.dpr=i,k.refreshRem=c,k.rem2px=function(a){var b=parseFloat(a)*this.rem;return"string"==typeof a&&a.match(/rem$/)&&(b+="px"),b},k.px2rem=function(a){var b=parseFloat(a)/this.rem;return"string"==typeof a&&a.match(/px$/)&&(b+="rem"),b}}(window,window.lib||(window.lib={}));
    </script>
    <script src="./axios.min.js"></script>

    <script src="jquery-2.2.4.min.js"></script>
    <style>
    </style>
</head>
<body>
<div class="container" id="result">
</div>
</body>

<script>
    $(function () {
        var urlStr = window.location.href.split('?')[1];
        var query = encodeURIComponent(urlStr);//携带参数
        var expire_time = new Date().getTime();
        axios({
            url: 'https://xxxxx/WxAgentWeb/IMServlet?flag=2&path=/pages/index/index&env_version=trial&query=' + query + '&expire_time=' + expire_time,
            method: 'get'
        }).then(ret => {
            var reqData = JSON.parse(ret.data.data);
            if ('0' == reqData.errcode) {
                location.href = reqData.openlink;
            } else {
                alert(reqData.errmsg);
            }
        }).catch(err => {
            alert(err);
        })
    });
</script>
</html>
smileAgain-lg
关注 关注
  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
H5页面跳转小程序的三种方式
qq_41939902的博客
02-10 2万+
H5跳转小程序的三种方法
swift:URL Scheme的使用
04-20
1.html打开APP 2.APP打开APP
微信小程序通过外链跳转网址打开小程序
m0_67273164的博客
03-08 3002
微信小程序短信或者其他地方通过地址跳转打开微信小程序有两种方法,一种是通过url scheme跳转打开,一种是通过url link跳转打开,都需要access_token,接下来就说说这两种方法
h5页面跳转微信小程序(最简单的方法-URL Scheme
12-21
H5页面跳转微信小程序的需求是普遍存在的。由于微信小程序是一种只能在微信内部访问的应用程序,而H5页面可以在任何浏览器中访问,因此需要通过跳转实现两者之间的衔接。 对于用户来说,H5页面跳转微信小程序可以提供更好的用户体验。用户可以在H5页面中浏览和选择商品、服务等内容,然后直接跳转微信小程序中进行购买、支付等操作,避免了在不同平台之间的切换和跳转,提高了使用效率和便捷性。 对于企业和开发者来说,H5页面跳转微信小程序可以带来更多的商业机会和价值。通过在H5页面中引导用户跳转微信小程序,可以增加用户的粘性和转化率,提高销售和收益。同时,微信小程序的开发和维护成本相对较低,可以降低企业的运营成本和门槛。 H5页面跳转微信小程序的需求是普遍存在的,可以带来更好的用户体验和企业价值。但需要注意的是,实现这一需求需要具备一定的技术能力和遵循相应的开发规范和要求。 微信内的网页如需打开小程序请使用微信开放标签-小程序跳转按钮,无公众号也可以直接使用小程序身份开发网页并免鉴权跳转小程序,见云开发静态网站跳转小程序。符合开放范围的小程序可以下发支持打开小程序短信 该功能基本覆盖当前用户正在使
明文scheme拉起此小程序
最新发布
spring_007_999的博客
04-20 888
明文scheme拉起此小程序方法示例
微信小程序 ---- 通过 URLSchemeURLLink 从短信邮件微信外网页等场景打开小程序
止于至善
01-04 5117
部分 URL Link 返回的 url_link,在QQ浏览器会被拦截!,因此目前我还是使用的 URL Scheme
通过H5链接微信端或者外部浏览器输入链接打开微信小程序
07-13
通过H5链接微信端或者外部浏览器输入链接打开微信小程序
h5页面跳转小程序-----明文URL Scheme
D5498543的博客
01-29 3338
仅需两步,就能实现h5跳转小程序,明文 URL Scheme,无需调用接口可自行拼接并且生成明文 Scheme
h5页面跳转微信小程序(最简单的方法|URL Scheme
热门推荐
肥晨开发的学习之路
12-21 1万+
用户可以在H5页面中浏览和选择商品、服务等内容,然后直接跳转微信小程序中进行购买、支付等操作,避免了在不同平台之间的切换和跳转,提高了使用效率和便捷性。微信内的网页如需打开小程序请使用微信开放标签-小程序跳转按钮,无公众号也可以直接使用小程序身份开发网页并免鉴权跳转小程序,见云开发静态网站跳转小程序。开发者无需调用平台接口,在MP平台->设置->隐私与安全->明文Scheme拉起此小程序声明后,可自行根据如下格式拼接appid和path等参数,作为明文 URL Scheme 链接。行业内幕,洞察先机。
H5页面跳转微信小程序
CaseyWei
06-29 3539
第一种是直接在需要跳转小程序小程序管理后台中通过工具直接生成, 该方法生成的URL Scheme不能实时指定跳转小程序的页面也不能向小程序传递参数。如果需要指定跳转小程序的页面或者需要向小程序传递参数, 则需要使用 服务端接口 的方法来获取URL Scheme。注意:该方法只开放给已认证的服务号或者小程序。wx-open-launch-weapp接口文档。服务端接口获取URL Scheme文档。的静态网站托管绑定的域名下的网页。后通过以下代码就可以实现跳转URL Scheme文档。
生成 小程序 URL Scheme
weixin_44646763的博客
09-29 4637
生成 小程序 URL Scheme,通过 Scheme 跳转小程序
生成普通的微信小程序二维码
bamboozjy的博客
06-08 5001
生成普通的带参数的微信小程序二维码打开小程序
微信小程序,公众号,H5等小的案例代码分享
01-27
源码目录说明jump.html示例代码,通过小程序URL Scheme可以在外部浏览器中唤起微信打开小程序页面,同时通过开放标签支持在微信浏览器内打开小程序。,使用云开发静态网站托管的网页,可以免鉴权跳转任意合法合规...
微信小程序第三方平台api (es6版)
01-26
微信小程序第三方平台api for es6功能列表数据分析权限管理代码模板管理代码管理域名设置多媒体(图片)客服消息附近的位置开放平台小程序插件跳转二维码小程序二维码基本设置模板消息体验者设置获取用户信息快速创建...
微信小程序模板消息填坑
03-29
前段时间研究了下微信模板消息:服务通知(开发api:...我在过程中遇到的keng,就是post传的 form_id(前提就是在微信后台已经添加了消息模板) form_id 表单提交场景下,为 submit 事件
iOS应用程序之间的几种跳转情况详解
01-05
一个程序要跳转到(打开)另外一个程序,需要将另外一个程序的Scheme添加到自己的应用程序白名单中(在info.plist中配置:LSApplicationQueriesSchemes,类型为数组,在数组中添加相应的Scheme)->ios9.0开始 跳转代码 ...
微信小程序获取urlscheme解决办法
weixin_46106723的博客
04-17 298
【代码】微信小程序获取urlscheme解决办法。
app跳转微信小程序,使用明文scheme拉起
weixin_48464215的博客
01-25 3194
需求:app内需跳转微信小程序某一页面,可携带参数提示
学习记录--生成微信url schema
Miss_Audrey的博客
08-31 779
学习记录URL Scheme
获取微信小程序url scheme
05-31
获取微信小程序url scheme的方法如下: 1. 打开微信小程序,在小程序页面右上角点击“...”打开小程序菜单。 2. 点击“关于XXX”,进入小程序的关于页面。 3. 在关于页面中,向下滑动页面,点击“应用信息”。 4. 在应用信息中,向下滑动页面,找到“常规设置”部分,点击“打开调试”。 5. 打开调试后,再次向下滑动页面,找到“常规设置”部分的“URL Scheme”选项,即可查看微信小程序url scheme。 请注意,不同的微信小程序url scheme可能不同,具体取决于开发者在开发小程序时所设置的url scheme

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • CSS 中几种常用的换行方法 25854
  • 小程序通过webView打开H5页面并传参(包含webView业务域名配置)、H5页面实现返回小程序并实现传参 12711
  • 【超详细前后端项目搭建】前端vue3+ts项目(引入ElementPlus、Axios)、后端springboot搭建(创建接口操作mysql数据库)实现前后端联调 11766
  • H5跳转微信小程序,通过获取URL Scheme,实现短信跳转小程序,微信跳转小程序,邮件跳转小程序,外部链接跳转小程序 11533
  • 监听H5浏览器返回事件,解决监听webviewH5返回事件,触发H5给小程序传参(亲测有效) 10662

最新评论

  • 超完整的mysql安装配置方法(包含idea和navicat连接mysql,并实现建表)

    DJ_hobo: 引用「ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘12345」 符号错了,需要英文的‘’引号

  • 在uniapp中配置和使用原生小程序组件的方法

    smileAgain-lg: 在哪个分包使用就在哪个分包的pages.json 对应模块的 style -> usingComponents 引入组件

  • 在uniapp中配置和使用原生小程序组件的方法

    抬头看云呐: 按照这个方式引用,模拟器还是报reslove moudle是什么原因啊,能方便告知么表情包

  • uniapp小程序自定义签名面板组件,小程序页面引用实现横屏签字(亲测有效)

    nizaigoujiaoma: 无法获取 Canvas 元素 报错这个 怎么解决啊

  • 【全方位对比】前端vue2、vue3、vue3语法糖三种写法

    Now?!: 生命周期那,写了两个beforeCreate

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 使用create-react-app脚手架创建react项目
  • Vue3中ref和reactive的区别
  • 【全方位对比】前端vue2、vue3、vue3语法糖三种写法
2023年59篇
2022年2篇

目录

目录

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smileAgain-lg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司合肥seo网站优化价格张掖品牌网站设计保定营销型网站建设推荐安顺设计公司网站丹竹头如何制作网站哪家好天门设计网站价格锦州营销网站哪家好龙华百度关键词包年推广报价扬州至尊标王公司福州百姓网标王推广汕尾企业网站建设推荐龙岗关键词排名哪家好常州网页设计公司襄樊网站seo优化价格杭州关键词按天计费哪家好海北企业网站制作公司绍兴优化价格张家界外贸网站设计哪家好坑梓网站关键词优化宜昌阿里店铺运营报价喀什外贸网站制作公司伊春百度竞价包年推广推荐孝感设计网站焦作网站搭建多少钱榆林seo网站优化大丰网站优化推广价格鸡西模板网站建设报价商洛设计网站哪家好贵港企业网站制作临汾至尊标王价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化