HTML实现微信小程序跳转全指南,附代码示例和开发注意事项

这篇具有很好参考价值的文章主要介绍了HTML实现微信小程序跳转全指南,附代码示例和开发注意事项。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

由于微信官方限制了URL Scheme跳转,本文实现的是html跳转微信小程序,仅限微信内部调转。如果需要外部跳转微信小程序,可使用urlscheme.generate,后端获取openlink官方文档。短信、网页场景的话建议使用openlink。


提示:以下是本篇文章正文内容,下面案例可供参考

一、开发前准备

1.拥有一个认证的微信公众号(是公众号不是订阅号)
2.公众号关联()微信小程序(关联方法可以登录微信公众平台查找)
3.配置IP白名单(也在微信公众平台);
4.配置js安全域名(也在微信公众平台,需要把一个文件放在你的本地服务上,其实也可以写一个request。具体流程百度一下)

二、前端

1.官方文档链接: 点击这里

代码如下(示例):

<wx-open-launch-weapp 
				id="launch-btn" 
				username="gh_*****" 
				path="pages/home/home">
				<template>
					<!-- 样式方法 -->
					<style> 
					</style>
					<div class="btn-card"><h5 class="btn">打开小程序</h5></div>
			</template>
			</wx-open-launch-weapp>导入<script typet="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script><


说明一下:建议看官方文档(虽然文档垃圾一bi)。
1.标签是微信的所以我们要引入jwei-xin-1.6.0.js
2.username是小程序原始id,gh_开头的(点你的小程序-更多资料,就可以就看到了
3.template里放的是打开小程序的那个按钮,这里有个巨坑!按钮不显示的问题:要先wx.config签名验证成功它才会显示出来,所以我们要在onload里进行签名验证。如果你是云开发的话,就不需要签名了。

2.签名wx.config

代码如下(示例):

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可以在这里更新签名
					});


1.这个就是签名了,可以用ajax请求后台拿到timestamp,nonceStr,signature,
2.拿到signature后可以在微信官方验证一下链接: 签名验证
2.打开debug:true,失败的话会返回错误信息的。我这里是js安全域名没配置
H5跳转小程序,短信跳转小程序,HTML页面跳转小程序

3.成功的话他会返回errMsg:config:ok,然后标签按钮就会显示出来,点击就可以跳转了,跳不了的话,btn.addEventListener()它会返回错误信息给你的
H5跳转小程序,短信跳转小程序,HTML页面跳转小程序


三、后端

后端主要就是一个获取签名返回给前端进行验证的一个作用了,步骤的话:


1.获取微信access_token
2.用access_token获取jsapi_ticket
3.对jsapi_ticket等字段拼接进行sha1算法得到singature,返回给前端

1.获取access_token链接: 官方文档

// An highlighted blockpublic static String getAccessToken() {
    String access_token = "";
    String grant_type = "client_credential";//获取access_token填写client_credential 
    String AppId="APPID";//第三方用户唯一凭证
    String secret="APPSECRET";//第三方用户唯一凭证密钥,即appsecret 
    //这个url链接地址和参数皆不能变
    String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type="+grant_type+"&appid="+AppId+"&secret="+secret;
     
    try {
        URL urlGet = new URL(url);
        HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
        http.setRequestMethod("GET"); // 必须是get方式请求
        http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        http.setDoOutput(true);
        http.setDoInput(true);
        System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
        System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
        http.connect();
        InputStream is = http.getInputStream();
        int size = is.available();
        byte[] jsonBytes = new byte[size];
        is.read(jsonBytes);
        String message = new String(jsonBytes, "UTF-8");
        JSONObject demoJson = JSONObject.fromObject(message);
        access_token = demoJson.getString("access_token");
        is.close();
    } catch (Exception e) {
            e.printStackTrace();
    }
    return access_token;}


2.获取jsapi_ticket链接: 官方文档

图片: H5跳转小程序,短信跳转小程序,HTML页面跳转小程序
1.ticket有效期是2小时。后面你要是需要调微信api的话,有个时效性,所以我们需要放入缓存。

// An highlighted blockpublic static String getTicket(String access_token) {
    String ticket = null;
    String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+ access_token +"&type=jsapi";//这个url链接和参数不能变
    try {
        URL urlGet = new URL(url);
        HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
        http.setRequestMethod("GET"); // 必须是get方式请求
        http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        http.setDoOutput(true);
        http.setDoInput(true);
        System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
        System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
        http.connect();
        InputStream is = http.getInputStream();
        int size = is.available();
        byte[] jsonBytes = new byte[size];
        is.read(jsonBytes);
        String message = new String(jsonBytes, "UTF-8");
        JSONObject demoJson = JSONObject.fromObject(message);
        ticket = demoJson.getString("ticket");
        is.close();
    } catch (Exception e) {
            e.printStackTrace();
    }
    return ticket;}


3.sha1加密 官方文档

注.sha1算法自己百度或者照着我这版敲(100%可用)
	//时间戳和随机字符串
	String noncestr = UUID.randomUUID().toString().replace("-", "").substring(0, 16);//随机字符串
    String timestamp = String.valueOf(System.currentTimeMillis() / 1000);//时间戳
    //对str进行sha1加密,注意拼接顺序不可变,注意大小写!这个url为前端动态获取的url,url的格式要注意一下(https://******)
     String str = "jsapi_ticket="+jsapi_ticket+"&noncestr="+noncestr+"&timestamp="+timestamp+"&url="+url;


图片: H5跳转小程序,短信跳转小程序,HTML页面跳转小程序
把前端wx.config需要的这几个值,在controller层弄个map返回给前端就行了。

总结

坑还是不少的
1.timeStamp大小写要注意下。
2.appid为公众号appid,并不是小程序的appid。
3.wx-open-launch-weapp标签内按钮不显示,需要在onload先wx.config先验签,才会显示。
4.js安全域名配置(直接配置一级域名就行了,不要把https:加在上面了)
5.公众号和小程序都要是认证过且关联的。
6.微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上。
7.其它的暂时想不起来了,有问题百度。(上面的代码,除sha1算法外,其它的要根据个人实际情况进行开发。不要全搬)
8.感谢阅读~有用的话,点个赞吧,Thanks♪(・ω・)ノ文章来源地址https://www.toymoban.com/news/detail-501066.html

到了这里,关于HTML实现微信小程序跳转全指南,附代码示例和开发注意事项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信H5(公众号)跳转微信小程序实现及其传参

    其中:         username:目标小程序的原始id;         path : 所需跳转的小程序内页面路径及参数( 传参采取挂参的形式传递 ); ps:目标小程序接收参数时要在index的onload里面接收直接 options.XXX就可以。 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-lin

    2024年02月09日
    浏览(79)
  • H5跳转微信小程序,通过获取URL Scheme,实现短信跳转小程序,微信跳转小程序,邮件跳转小程序,外部链接跳转小程序

    H5链接跳转小程序有2种方式: 第一种:通过微信官方提供的标签wx-open-launch-weapp,打开小程序 第二种:通过获取URL Scheme实现链接跳转小程序 官方文档https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#21 注意: 开放范围:针对非个人主体小程序开放。 1、缺点 1)

    2024年02月13日
    浏览(69)
  • 微信小程序02-轮播图实现与图片点击跳转

    在小程序01中,已经学习了如何制作底部导航栏,本节让我们一起学习如何制作轮播图,以及点击轮播图完成页面跳转。 注:(1)前期学习,我这里用的本地的图片,后期的话,会对接后端接口,动态获取数据,前期方便学习,就暂时用的本地图片。(2)关于图片跳转地址

    2024年02月16日
    浏览(88)
  • 在微信小程序中跳转到另一个小程序(多种实现方式)

    今天在项目中刚好遇到一个到从当前小程序中跳转到另一个小程序,下面分享一下我总结的几个比较简单的跳转方式吧。 如果不给path属性是默认跳到目标小程序首页,如果想跳到其他页面就要配置path属性,这样就能实现从当前微信小程序跳转到另外一个小程序啦~ 也有办法

    2024年02月11日
    浏览(49)
  • 微信小程序分类图片通过id跳转到详情页,不同分类实现定向跳转

    微信小程序分类图片通过id跳转到详情页,不同分类实现定向跳转 1.实现循环展示排列 inde.wxml index.wxss index.js 页面展示 2.跳转到大分类页面 class.wxml class.js 结果:

    2024年02月11日
    浏览(60)
  • uniapp实现app跳转微信小程序然后跳回app

    首先app页面代码如下: 小程序的代码 这样就实现效果了,如果不行看下是否在微信开放平台给app获取了跳转小程序的能力,一般是通过了审核的app就有这能力.

    2024年04月27日
    浏览(49)
  • uniapp实现微信小程序内嵌h5页面的相互跳转

    前期准备3个页面,小程序内2个,h5一个。 小程序内:操作页pageA,展示容纳h5的展示页PageWebview.vue。 h5:h5页面pageB,并且有可以访问的线上url。 【微信小程序pageA-内嵌h5页面pageB】 1.1 pageA实现点击跳转,将pageB的访问地址url拼接,并进入展示页PageWebview.vue 1.2 PageWebview.vue页面用

    2024年02月12日
    浏览(69)
  • 情侣积分微信小程序零基础开发教程(附代码及开发指南)

    本文最新版本 在idofSunChonggao 的基础上进行开发, 感谢! 且感谢初版(UxxHans)! ⭐ 如果本仓库对您有所帮助,您的fork或star就是对我最大的鼓励,谢谢! 改了还蛮多的,具体看界面展示吧~ 零前端基础,全凭爱意。代码存在诸多不足和bug,仅供参考。 ⭐ 增加任务类型选择:

    2024年02月09日
    浏览(59)
  • 微信小程序内页跳转登录,登录完成后携带参数重新回到之前页面实现方法

    第一步:在app.js或utils.js中添加以下两个方法: 第二步:在跳转到登录页面跳转前调用setCallbackUrl方法(获当前页面的路径和参数存本地),登录页面登录成功后调用getCallBackUrl方法(提取之前存的路径和参数返回),如果没有就在catch中执行登录后的正常逻辑,比如跳转到默

    2024年02月02日
    浏览(65)
  • 微信小程序登录页验证与页面跳转(二) ---结合SpringBoot和MySQL实现多用户登录

    Spring Boot的开发环境如下: 1、IDEA:2020 2、JDK版本:1.8 3、MySQL 版本:8 代码如下(示例): 打开IDEA,新建项目: 这里选择Spring lnitializr: 在接下来的页面中进行如下配置: 进行下一步:选择SpringBoot的版本,这里选择的是2.7.14 然后: 设置项目所在路径和设置项目名称: 项

    2024年01月22日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包