uniapp开发的跳转到小程序

news2024/11/15 11:12:41

uniapp开发的h5跳转到小程序
https://www.cnblogs.com/xiaojianwei/p/16352698.html
官方:使用 URL Scheme 打开小程序
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/url-scheme.html

 链接代码

<a href="weixin://dl/business/?appid=wxx******&path=pages/order/order&query=&env_version=release"  class="but"> 打开weixin </a>

条件:微信必须实名认证、通过备案 ,设置了 “明文scheme拉起此小程序”


通过weixin://dl/business/?t=打开微信小程序
https://blog.csdn.net/m0_46156566/article/details/128917461

 

第一步,通过微信接口(https://api.weixin.qq.com/cgi-bin/token)获取小程序access_token
微信官方文档

第二步,通过微信接口(https://api.weixin.qq.com/wxa/generatescheme)获取小程序跳转链接weixin://dl/business/?t=
微信官方文档
我这里用的uni-app,所以请求用的uni.request,其他的同理,比如ajax和axios,不多赘述

// 第一步获取token
         uni.request({
            method: "GET",
            // 这里的appid写你需要跳转的小程序的appid,secret秘钥也一样,grant_type=client_credential是固定的参数,不用改
            url: "https://api.weixin.qq.com/cgi-bin/token?appid=wxe109dd058as8sdf88&secret=9eb3d6dec783bc55sdfs32sdf2f2aa0&grant_type=client_credential",
            success: (res1) => {
              alert("获取token成功");
              console.log(res1.data);
              // 第2步获取小程序跳转链接
              uni.request({
                method: "POST",
                // access_token就是请求上一个接口拿到的回调结果
                url:
                  "https://api.weixin.qq.com/wxa/generatescheme?access_token=" + res1.data.access_token,
                data: {
                // path跳转到的小程序目标页面,query跳转需要携带参数,在目标页面onload里面接收options里面,其他参数固定,获取看文档了解
                  jump_wxa: {
                    path: "/app/test/test",
                    query: "url=" + urls,
                    env_version: "trial", // 正式版为"release",体验版为"trial",开发版为"develop"
                  },
                  is_expire: true,
                  expire_type: 1,
                  expire_interval: 1,
                  // env_version: "trial",
                },
                success: (res2) => {
                  alert("获取小程序跳转链接1");
                  console.log(res2.data);
                  let a = document.createElement("a"); //创建一个a标签元素
                  a.href = res2.data.openlink; //设置跳转地址
                  document.body.appendChild(a); //加入
                  a.click(); //触发点击跳转
                  document.body.removeChild(a);删除元素
                },
                fail:(err) =>{
              alert('获取微信跳转链接失败')
              alert(JSON.stringify(err))
            }
              });
            },
            fail:(err) =>{
              alert('获取微信token失败')
              alert(JSON.stringify(err))
            }
          });

 

uniapp拉起小程序

在uniapp中拉起小程序,可以使用官方提供的API uni.navigateToMiniProgram。以下是一个简单的示例代码:

uni.navigateToMiniProgram({
    appId: '目标小程序的appid', // 小程序的appid
    path: 'pages/index/index', // 打开的页面路径,可选
    extraData: {
        // 需要传递给小程序的数据,可选
    },
    success(res) {
        // 打开成功的回调,可选
        console.log('打开成功');
    },
    fail(err) {
        // 打开失败的回调,可选
        console.log('打开失败', err);
    }
});

确保在调用这个API之前,已经在uniapp的manifest.json中配置了相应的权限,并且appid是正确的。

// manifest.json 中配置示例
"mp-weixin": {
    "usingComponents": true,
    "navigateToMiniProgramAppIdList": [
        "目标小程序的appid"
    ]
}

 在调用这个API之前,请确保你已经遵循了微信小程序的相关指导和要求,并且已经获取了相应的权限。如果是其他平台的小程序,请查阅对应平台的开发文档,因为不同平台的API调用可能会有所不同。

uni-app生成的app支持跳转微信小程序

uni-app生成的app支持跳转微信小程序
https://ask.dcloud.net.cn/question/67412

参考链接:http://www.html5plus.org/doc/zh_cn/share.html#plus.share.ShareService.launchMiniProgram
注意:需要先在manifest.json中配置【微信消息及朋友圈】


参考代码:

plus.share.getServices(function(res){  
    var sweixin = null;  
    for(var i=0;i<res.length;i++){  
        var t = res[i];  
        if(t.id == 'weixin'){  
            sweixin = t;  
        }  
    }  
    if(sweixin){    
        sweixin.launchMiniProgram({  
            id: '原始id',  
            path: 'pages/index/index?phone=' + UserID,
            type: 0   
        }):plus.nativeUI.alert('当前环境不支持微信操作!');  
    }  
},function(res){  
    console.log(JSON.stringify(res));  
});

uniapp开发的APP唤起微信打开小程序
https://blog.csdn.net/superlover_/article/details/89382540

uni-app开发的APP跳转到微信小程序需要调用H5+的原生界面控件。

注意事项:

用到了分享功能,在打包原生应用时,需要注意:首先勾选权限配置,manifest.json->App 模块权限配置->Share。然后,manifest.json->App SDK 配置->分享,按照提示填写微信分享的信息(微信开放平台,不是微信公众平台)。
因为涉及到第三方 SDK 的配置,需要打包自定义基座进行测试。真机运行自定义基座包使用说明
需要在微信开放平台开启APP跳转小程序,并管理相应的小程序
 

<template>
	<view class="center">
		<view class="text"  @click="checkWeChat">跳转到小程序</view>
	</view>
</template>
<script>
export default {
	data() {
		return {
			sweixin: null
		}
	},
	onLoad() {
		this.getPlus()
	},
	methods: {
		getPlus() {
			//获取当前显示的webview
			var pages = getCurrentPages()
			var page = pages[pages.length - 1]
			var currentWebview = page.$getAppWebview()
			//调用H5+APP的扩展API
			var shares=null;
			let that = this
			var pusher = plus.share.getServices(function(s){
				shares={};
				for(var i in s){
					var t=s[i];
					shares[t.id]=t;
				}
				that.sweixin=shares['weixin'];
			}, function(e){
				console.log("获取分享服务列表失败:"+e.message);
			});
			//放入当前的webview
			currentWebview.append(pusher);
		},
		checkWeChat() {
			//调用微信小程序
			this.sweixin.launchMiniProgram({
				id:'gh_244-------' //要跳转小程序的原始ID
			})
		}
	}
}
</script>
/*
*唤起跳转微信小程序
*miniId 小程序id
*miniPath 小程序页面路径
*/
function LaunchMiniProgram (miniId,miniPath){
	// #ifdef APP-PLUS
	//获取终端支持的分享通道列表
	plus.share.getServices(function(s){
		let sweixin = null;
		for(let i=0;i<s.length;i++){
			if(s[i].id == 'weixin'){
				sweixin = s[i];
			}
		}
		//判断是否有微信
		if(sweixin){
			console.log('调起小程序',s)
			//唤起微信跳转小程序
			sweixin.launchMiniProgram({
				id:miniId,
				path:miniPath
			},function(){
				return true;
			},function(e){
				console.log("微信唤起失败",e);
				uni.showToast({
					title:'微信唤起失败,请检查是否有微信应用',
					icon:'none'
				})
				return false;
			})
		}else{
			uni.showToast({
				title:'微信唤起失败,请检查是否有微信应用',
				icon:'none',
				duration:3000
			})
			return false;
		}
	}, function(e){
		console.log("微信唤起失败",e);
		uni.showToast({
			title:'微信唤起失败,请重试',
			icon:'none',
			duration:3000
		})
		return false;
	});
	// #endif
	// #ifdef MP-BAIDU || MP-TOUTIAO || MP-WEIXIN || MP-ALIPAY || MP-QQ
	uni.navigateToMiniProgram({
	  appId: miniId,
	  path: miniPath,
	  success(res) {
		return true
	  },
	  fail(res){
		  uni.showToast({
		  	title:'跳转小程序失败',
		  	icon:'none',
		  	duration:3000
		  })
		  console.log('跳转小程序失败',res)
		  return false;
	  }
	})
	// #endif
}

微信拉起半屏API


  openmini: function (){
    let mchid='19905033266'; // 商户号
    let amount='1.01';
    let ordercode=Date.parse(new Date()); 
    console.log(mchid, ordercode, amount) 
    let param = 'mchid='+mchid+'&openType=1&autoPay=1&notify_url=https%3A%2F%2Fwxpay.eptjt.com%2FLKT%2Fnotify_ftpay.php&goodName=数字易货商品&mer_order_no='+ordercode+'&amount='+amount;
    wx.openEmbeddedMiniProgram({
      appId: 'wx5507008900fb4e7f',// 你要打开的小程序appid
      path: 'pages/Index/index?' + param, // 打开的页面路径,如果为空则打开首页
      extraData: {
        // mchid:mchid,
        // openType:1,
        // autoPay:1,
        // notify_url:'https%3A%2F%2Fwxpay.eptjt.com%2FLKT%2Fnotify_ftpay.php',
        // mer_order_no: ordercode,
        // goodName:'数字易货商品',
        // amount:amount,  
      },// 需要传递给目标小程序的数据
      envVersion: 'develop',// 要打开的小程序版本 develop 开发版 trial 体验版 release 正式版
      success(res) {
        // 打开成功
        console.log(res)
        
        // wx.showToast({
        //   title: res.data.err,
        //   duration: 2000
        // });

      },
      fail(e) {
        // 打开失败
        console.log(e) 
      },
    }) 
  },

Android应用签名查看工具没有MD5值的解决方法

由于高版本java 移除了 这些 Disable MD5 or MD2 signed jars
https://www.java.com/en/jre-jdk-cryptoroadmap.html

于是输出了一下我的本地java环境

>  java -version
java version "15.0.1" 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
>

演示如何将SHA1值转换为MD5值

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {

    public static String calculateMD5(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] byteData = md.digest(input.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b : byteData) {
                sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        String sha1 = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        String md5 = calculateMD5(sha1);
        System.out.println("MD5: " + md5);
    }
}

在上面的示例代码中,我们将SHA1值替换为实际的值,然后运行程序,即可得到对应的MD5值输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1515880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

标准砂轮加工麻花钻或者铣刀螺旋槽齿形

螺旋槽与砂轮的空间位置运动关系可用下图表示&#xff0c;螺旋槽的形成靠工件绕轴线的旋转以及砂轮沿轴线的移动来完成的&#xff0c;以下坐标系可以清楚的描述二者之间的运动关系&#xff1a; 砂轮的形状如下&#xff1a; 经过坐标变换和下面这个重要的公式来计算工件的齿形…

【Docker】在 Ubuntu20.04 上配置 Docker 开发环境

【Docker】在 Ubuntu20.04 上配置 Docker 开发环境 1 安装 Docker2 加入 Docker 用户组 1 安装 Docker 参考文档: Link 卸载以避免冲突 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done设…

水文监测站的工作原理

TH-SW3水文监测站是一种专门用于监测水文气象数据的设施或场所&#xff0c;通常位于河流、湖泊、水库或其他水体附近。其主要功能包括收集和记录与水文气象相关的数据&#xff0c;如降雨量、水位、水温、流量、蒸发量等信息。这些数据对于水资源管理、防洪抗旱、生态环境保护等…

vmware workstation虚拟机报错”该虚拟机似乎正在使用中“

虚拟机报错&#xff1a; 解决方法&#xff1a; 进入到虚拟机的安装目录里&#xff0c;将lck结尾的文件删掉即可 重新点击虚拟机恢复正常

小白学视觉 | 神经网络训练trick总结

本文来源公众号“小白学视觉”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;神经网络训练trick总结 来自 | 知乎 作者 | Anticoder 链接 | https://zhuanlan.zhihu.com/p/59918821 本文仅作学术交流&#xff0c;如有侵权&am…

LLM和自动驾驶强强联合 | DriveDreamer-2:自动驾驶定制视频生成世界模型!

文章链接&#xff1a;https://arxiv.org/pdf/2403.06845.pdf 项目文档&#xff1a;https://drivedreamer2.github.io/ 自动驾驶是最近几年非常火热的方向&#xff0c;那LLM和视频生成在自动驾驶领域有哪些应用呢&#xff1f;今天和大家一起学习一下最新的一篇工作————Driv…

什么是文档签名证书?文档签名证书有什么用?

在数字化高速发展的当今时代&#xff0c;各行各业都开始向数字化转型&#xff0c;随着国家大力倡导和积极推进数字化&#xff0c;电子文件的应用越来越广泛。然而&#xff0c;电子文件包含了个人隐私、金融交易、电子处方、合同协议等敏感信息&#xff0c;如何确保这些重要文件…

迷你内裤洗衣机排名前十名:2024年十大口碑一流内衣洗衣机推荐

如果你对于内衣物的卫生有特殊的清洗需求&#xff0c;那么一台内衣专用的迷你内裤洗衣机是十分值得买的&#xff0c;由于迷你内裤洗衣机的外观尺寸小、重量轻&#xff0c;所以很容易搬运和携带&#xff0c;适合单身公寓、旅馆、露营等场合&#xff0c;不用像传统的家庭洗衣机那…

Unity开发必备AI工具

人工智能&#xff08;AI&#xff09;正在迅速改变世界&#xff0c;游戏开发行业也不例外。 人工智能工具被用来创建更真实、更有吸引力的游戏、自动化任务并改进整体开发流程。 Unity 3D 游戏开发人员可以受益于使用 AI 工具来简化工作流程并提高游戏质量。 最近的统计数据显示…

PyJWT 登录鉴权最佳实践【Refresh Token】

&#x1f389; Json web token (JWT), 根据官网的定义&#xff0c;是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;RFC 7519)。该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。JWT的声明…

NASA数据集——2017年美国阿拉斯加以及加拿大北部二氧化碳探测仪监测的大气后向散射系数剖面图数据集

来自二氧化碳探测仪的大气后向散射系数剖面图&#xff0c;2017年 本数据集提供了2017-07-20至2017-08-08期间在美国阿拉斯加以及加拿大育空地区和西北地区上空进行的二氧化碳夜间、白天和季节排放主动传感&#xff08;ASCENDS&#xff09;部署期间收集的大气后向散射系数剖面图…

HTML5+CSS3+移动web——CSS 文字控制属性

系列文章目录 HTML5CSS3移动web——HTML 基础-CSDN博客https://blog.csdn.net/ymxk2876721452/article/details/136070953?spm1001.2014.3001.5502HTML5CSS3移动web——列表、表格、表单-CSDN博客https://blog.csdn.net/ymxk2876721452/article/details/136221443?spm1001.2…

C++ //练习 10.34 使用reverse_iterator逆序打印一个vector。

C Primer&#xff08;第5版&#xff09; 练习 10.34 练习 10.34 使用reverse_iterator逆序打印一个vector。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /**************************************************************…

springboot整合最新版minio和minio的安装(完整教程,新人必看)

概述&#xff1a;这种东西&#xff0c;多写点&#xff0c;方便以后自己使用 目录 第一步&#xff1a;docker安装配置minio 第一步&#xff1a;拉取镜像 第二步&#xff1a;创建用于存储MinIO数据的卷 如果是最新版minio直接就使用最后的那个命令创建容器 第三步&#xff…

Linux:kubernetes(k8s)lable和selecto标签和选择器的使用(12)

通过标签是可以让我们的容器和容器之间相互认识&#xff0c;简单来说一边打了标签&#xff0c;一边使用选择器去选择就可以快速的让他们之间耦合 定义标签有两种办法&#xff0c;一个是文件中&#xff0c;一个是命令行里 我们在前几章编进文件的时候里面都有lable比如 这个就是…

观测云在 .NET 业务中分析性能问题的最佳实践

背景 某药业集团是一家以创新技术驱动的线下医疗数据 SaaS 平台建设和运营公司&#xff0c;其主营的某智慧医疗平台产品&#xff0c;围绕线下医疗场景痛点提供一体化服务解决方案。近期集团对其生物检材在线递检系统进行功能升级开发及 IaaS 平台迁移。在针对新系统和新基础设…

Java异常分类(三)

ClassCastException异常&#xff1a; class Animal{} class Dog extends Animal{} class Cat extends Animal{} public class Test5{public static void main(String[] args){Animal a new Dog();Cat c (Cat)a;} } 执行结果如图所示&#xff1a; 解决 ClassCastException 的…

第一期:LED点亮与熄灭

Q&#xff1a;设计简单的逻辑电路&#xff0c;通过DE2-115开发板上的滑动开关控制LEDR亮和熄灭状态。 A&#xff1a;基本原理&#xff1a;高电平"1"和"0"分别使LEDR点亮和熄灭&#xff0c;Verilog HDL的assign赋值语句即可实现&#xff1b; 滑动开关作为输…

使用 ReclaiMe Pro 恢复任意文件系统(Win/Linux/MacOS)

天津鸿萌科贸发展有限公司是 ReclaiMe Pro 数据恢复软件授权代理商。 ReclaiMe Pro 是一个通用工具包&#xff0c;几乎可以用于从所有文件系统&#xff08;从 Windows 系列文件系统、Linux 和 MacOS&#xff09;中恢复数据。此外&#xff0c;考虑到数据恢复工作的具体情况&…

MYSQL 是如何保证binlog 和redo log同时提交的?

MYSQL 一个事务在提交的时候能够保证binlog和redo log是同时提交的&#xff0c;并且能在宕机恢复后保持binlog 和redo log的一致性。 先来看看什么是redo log 和binlog&#xff0c;以及为什么要保持它们的一致性。 什么是redo log&#xff0c;binlog redo log是innodb引擎层…