外部链接跳转微信小程序

article/2025/10/8 22:13:44

外部链接跳转微信小程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zpcKl0T3-1621677958755)(image-20210416142912242.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LzC7TExH-1621677958761)(image-20210416143524736.png)]

测试用例

https://postpay-2g5hm2oxbbb721a4-1258211818.tcloudbaseapp.com/jump-mp.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJhVZSmJ-1621677958762)(image-20210416153801742.png)]

H5在微信端被打开

可以使用

 <div id="wechat-web-container" class="hidden"><p class="">点击以下按钮打开 “填入你的小程序名称”</p> <!-- replace --><!-- 跳转小程序的开放标签。文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html --><wx-open-launch-weapp id="launch-btn" username="小程序原始账号 ID(gh_ 开头的)" path="要跳转到的页面路径"> <!-- replace --><!-- path 需要手动加.html --><template><button style="width: 200px; height: 45px; text-align: center; font-size: 17px; display: block; margin: 0 auto; padding: 8px 24px; border: none; border-radius: 4px; background-color: #07c160; color:#fff;">打开小程序</button></template></wx-open-launch-weapp></div>

在非微信环境就需要使用

<div id="public-web-container" class="hidden"><p class="">正在打开 “填入你的小程序名称”...</p> <!-- replace --><a id="public-web-jump-button" href="javascript:" class="weui-btn weui-btn_primary weui-btn_loading" onclick="openWeapp()"><span id="public-web-jump-button-loading" class="weui-primary-loading weui-primary-loading_transparent"><i class="weui-primary-loading__dot"></i></span>打开小程序</a></div>
  1. 我们需要根据环境判断,第一是手机端还是pc端
  2. 是在微信的浏览器还是,手机外部的浏览器
//判断逻辑docReady(async function() {var ua = navigator.userAgent.toLowerCase()var isWXWork = ua.match(/wxwork/i) == 'wxwork'var isWeixin = !isWXWork && ua.match(/micromessenger/i) == 'micromessenger'var isMobile = falsevar isDesktop = falseif (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {isMobile = true} else {isDesktop = true}if (isWeixin) {//在微信浏览器打开,显示<wx-open-launch-weapp>元素var launchBtn = document.getElementById('launch-btn')launchBtn.addEventListener('ready', function (e) {console.log('开放标签 ready')})launchBtn.addEventListener('launch', function (e) {console.log('开放标签 success')})launchBtn.addEventListener('error', function (e) {console.log('开放标签 fail', e.detail)})//微信的api接口wx.config({debug: true, // 调试时可开启appId: '小程序 AppID', // <!-- replace -->timestamp: 0, // 必填,填任意数字即可nonceStr: 'nonceStr', // 必填,填任意非空字符串即可signature: 'signature', // 必填,填任意非空字符串即可jsApiList: ['chooseImage'], // 必填,随意一个接口即可 openTagList:['wx-open-launch-weapp'], // 填入打开小程序的开放标签名})} else if (isDesktop) {// 在 pc 上则给提示引导到手机端打开//显示请在手机端打开} else{//在手机外部浏览器打开的,调用跳转URL Scheme//这个就需要调起localhost.href="weixin://dl/business/?ticket=l92578fd8404e0d4e3e975f910fa43f3a"//元素的显示隐藏(忽略)var c = new cloud.Cloud({    //事情使用的是微信的云开发方法// 必填,表示是未登录模式identityless: true,// 资源方 AppIDresourceAppid: '小程序 AppID', // <!-- replace -->// 资源方环境 IDresourceEnv: '云开发环境 ID', // <!-- replace -->})await c.init()window.c = cvar buttonEl = document.getElementById('public-web-jump-button')var buttonLoadingEl = document.getElementById('public-web-jump-button-loading')try {// 页面开始就触发openWeapp函数await openWeapp(() => {//去除loading图标buttonEl.classList.remove('weui-btn_loading')//隐藏weui-btn_loding元素buttonLoadingEl.classList.add('hidden')})} catch (e) {buttonEl.classList.remove('weui-btn_loading')buttonLoadingEl.classList.add('hidden')throw e}}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oygFwPfv-1621677958774)(image-20210416153525648.png)]

外部跳转处理函数

 async function openWeapp(onBeforeJump) {var c = window.cconst res = await c.callFunction({   //云开发name: 'public',data: {action: 'getUrlScheme',},})console.log(res);  //{errMsg: "cloud.callFunction:ok"//requestID: "46bd31f4-9e89-11eb-8a7e-525400549ebe"//result:{//errCode: 0//errMsg: "openapi.urlscheme.generate:ok"//openlink: "weixin://dl/business/?ticket=la0041f2cedf9630c9c7cc8c8715ac0c6"}//}console.warn(res)if (onBeforeJump) {onBeforeJump()}location.href = res.result.openlink   //"weixin://dl/business/?ticket=la0041f2cedf9630c9c7cc8c8715ac0c6"}

总结

前端需要的获取的数据

微信客户端跳转小程序需要的(直接写死在标签上面)描述例子
username小程序原始账号 ID(gh_ 开头的)“gh_d43f693ca31f”
path要跳转到的页面路径“/page/component/index”
wx.config()描述例子
appId‘小程序 AppID’‘wxe5f52902cf4de896’
timestamp必填,填任意数字即可0
nonceStr必填,填任意非空字符串即可‘nonceStr’
signature必填,填任意非空字符串即可‘signature’
jsApiList必填,随意一个接口即可[‘chooseImage’]
外部浏览器跳转小程序需要=>URL Scheme描述例子
result.openlink调用location.href跳转方法实现跳转到微信小程序“weixin://dl/business/?ticket=la0041f2cedf9630c9c7cc8c8715ac0c6”

云开发(可以忽略,我们自己本来有服务) 根据上面示例

https://developers.weixin.qq.com/community/business/doc/000e26815e8de0db1ecae5a035b00d 云开发快速入门

  1. 创建并部署云函数public

  2. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BlMZiZpn-1621677958776)(image-20210416160646073.png)]

  3. index.js 写下云函数代码

    // 云函数入口文件
    const cloud = require('wx-server-sdk')cloud.init()// 云函数入口函数
    exports.main = async (event, context) => {const wxContext = cloud.getWXContext()switch (event.action) {case 'getUrlScheme': {return getUrlScheme()}}return 'action not found'
    }async function getUrlScheme() {return cloud.openapi.urlscheme.generate({jumpWxa: {path: '/page/component/index', // <!-- replace -->query: '',},// 如果想不过期则置为 false,并可以存到数据库isExpire: false,// 一分钟有效期expireTime: parseInt(Date.now() / 1000 + 60),})
    }
  4. 编写好了,右键public

    在这里插入图片描述

  5. 接下来最后一步
    把开始写的h5页面部署到云服务的静态网站里
    云开发 -> 更多 -> 静态网站 -> 文件管理 -> 上传文件(上传刚写好的h5)

在这里插入图片描述

  1. 上传好了,右方有个详情字样,点击后复制下载链接,并把该链接在手机的浏览器打开

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Nr2rPaNt.shtml

相关文章

小程序跳转外链

注意&#xff1a; 个人类型和海外类型的小程序不支持 web-view 标签 直接跳转显示如下页面 解决方案1&#xff1a; 将外链地址配置在微信公众的白名单中即可正常跳转 解决方案2&#xff1a; 新建一个 fbec_number_collection用web-view承载它以后就变成了小程序的路由跳…

uniapp开发小程序:使用webview 跳转外部链接

一、使用uniapp开发小程序时&#xff0c;要跳转外部链接&#xff0c;实现的效果如下&#xff1a; 二、实现的步骤&#xff1a; ①先在自己uniapp项目pages.json中建一个页面webview.vue {"path" : "pages/webview/webview","style" : …

微信小程序访问外部链接

<web-view></web-view> &#xff1a;承载网页的容器&#xff0c;会自动铺满整个小程序页面。 webview 中导航栏的标题是取的页面 <title> 标签的内容。 webview 中无法调起微信支付。 实现方法&#xff1a; 登录小程序管理后台配置业务域名&#xff0c;并且需…

微信小程序做页内跳转外部网络连接/<web-view>的使用(使用与企业小程序)

导读 需求&#xff1a; 在微信小程序中访问外部https网页&#xff0c;可做小程序中访问或者跳出到浏览器打开访问。 结果&#xff1a; 由于我做不了让小程序打开浏览器并访问指定的url&#xff0c;所以我做微信小程序页内访问指定的URL。 条件&#xff1a; 1、需要企业小程序…

android ssl验证、https验证

准备知识&#xff1a; Keytool工具的使用。 在用Android平台上使用SSL&#xff0c;第一步就是生成证书。 1、证书的生成 1.1生成服务器端的证书py keytool -genkey -alias test -keystore test.jks 1.2 将keystore中的cert导出来&#xff0c;用来生成客户端的验证证书 […

Java安全之SSL/TLS

在前面所讲到的一些安全技术手段如&#xff1a;消息摘要、加解密算法、数字签名和数据证书等&#xff0c;一般都不会由开发者直接地去使用&#xff0c;而是经过了一定的封装&#xff0c;甚至形成了某些安全协议&#xff0c;再暴露出一定的接口来供开发者使用。因为直接使用这些…

【ssl认证、证书】java中的ssl语法API说明(SSLContext)、与keytool 工具的联系

文章目录 1. 前言java中的ssl语法与keytool 工具的联系 2. SSLContext的体系2.1 KeyStore2.1.1 通过证书库文件创建&#xff1a;2.1.2 随机生成自签名证书库 2.2 KeyManager2.2.1 KeyManagerFactory工厂创建&#xff1a;2.2.2 自己创建一个密钥管理器数组&#xff1a; 2.3 Trus…

import sslssl._create_default_https_context = ssl._create_unverified_context

# 全局取消证书验证import ssl ssl._create_default_https_context ssl._create_unverified_context参考&#xff1a;urllib.error.URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]_彭世瑜的博客-CSDN博客报错urllib.error.URLError: <urlopen error [SSL: CERT…

HttpClient配置SSL绕过https证书

HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了&#xff0c;越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能&#xff0c;但是对于大部分应用程序来说&#xff0…

java SSLContext

1. 什么是SSLSocket JDK文档指出&#xff0c;SSLSocket扩展Socket并提供使用SSL或TLS协议的安全套接字。 这种套接字是正常的流套接字&#xff0c;但是它们在基础网络传输协议(如TCP)上添加了安全保护层。 具体安全方面的讨论见下一篇。本篇重点关注SSLSocket及相关几个类的使用…

SSLContext

1. 什么是SSLSocket JDK文档指出&#xff0c;SSLSocket扩展Socket并提供使用SSL或TLS协议的安全套接字。 这种套接字是正常的流套接字&#xff0c;但是它们在基础网络传输协议(如TCP)上添加了安全保护层。 具体安全方面的讨论见下一篇。本篇重点关注SSLSocket及相关几个类的使用…

Java SSLSocket的使用

1. 什么是SSLSocket JDK文档指出&#xff0c;SSLSocket扩展Socket并提供使用SSL或TLS协议的安全套接字。 这种套接字是正常的流套接字&#xff0c;但是它们在基础网络传输协议(如TCP)上添加了安全保护层。 具体安全方面的讨论见下一篇。本篇重点关注SSLSocket及相关几个类的…

java网络学习之 JSSE 介绍 包含sslcontext(15)

java 安全套接字扩展 是 在原有的socket之上 封装了一层SSL/TLS 这样的高级网络协议的实现,使得原有的socket 通讯变得安全。 1 SSL/TLS 协议介绍&#xff1a; SSL 是洋文“Secure Sockets Layer”的缩写&#xff0c;中文叫做“安全套接层”。为啥要发明 SSL 这个协议捏&…

java SSLContext创建

概述 HTTPS相对于HTTP多了SSL&#xff08;security sock layer&#xff09;&#xff0c;应用层将数据丢给TCP时&#xff0c;需要经过SSL层的加密处理&#xff1b;TCP层的数据丢给应用层时&#xff0c;需要经过SSL层的解密处理。因此网络中传输的都是加密后的数据&#xff0c;提…

【Jetpack】使用 Room Migration 升级数据库并导出 Schema 文件 ( Schema 文件简介 | 生成 Schema 文件配置 | 生成 Schema 文件过程 )

文章目录 一、Schema 文件简介二、生成 Schema 文件配置三、生成 Schema 文件过程1、数据库版本 1 - 首次运行应用2、数据库版本 1 升级至 数据库版本 2 - 第二次运行应用3、数据库版本 2 升级至 数据库版本 3 - 第三次运行应用 一、Schema 文件简介 使用 Room Migration 升级数…

数据库,schema,catalog三者的涵义(简单描述)

你是否经常见到schema&#xff0c;catalog这些单词&#xff0c;在数据库的背景下是什么意思呢&#xff1f; 两篇参考&#xff1a;http://www.iteye.com/problems/9738 及 http://luckybat.iteye.com/blog/259976 taopian (高级程序员) 2009-01-07 写道 schema是对一个数据库的结…

mysql中information_schema数据库

目录 1、information_schema说明 2、information_schema下的表 2.1 schemata表 2.2 tables表 2.3 columns表 2.4 statistics表 2.5、user_privileges表&#xff08;用户权限表&#xff09; 2.7 table_privileges表&#xff08;表权限表&#xff09; 2.8 column_privileges…

数据库中Schema和Database有什么区别

本文源自&#xff1a; 数据库中Schema和Database有什么区别 - 人生似烟的日志 - 网易博客 http://blog.163.com/baibai_zheng/blog/static/51980755201022125325689/ ------------------------------------------------------------------------------------------------------…

数据库的 Schema 变更实现

一、减少元数据变更的措施 元数据变更是数据库管理中不可避免的工作项&#xff0c;减少元数据变更次数可降低数据库维护和管理成本&#xff0c;减轻对业务的影响。这里我们可以优先考虑以下 3 点&#xff1a; 精细计划 在数据库设计和开发阶段&#xff0c;精细设计元数据结构…

数据库中的 Schema 变更实现

线上沙龙-技术流第 30 期营业啦 05月09日&#xff08;周二&#xff09;19:30 KaiwuDB - B站直播间 传统数据库操作 Schema 变更时&#xff0c;第一步便是锁表&#xff0c;需持续到 Schema 变更操作完成。这样的做法虽然实现简单&#xff0c;无需考虑事务并发带来的影响&#…