uniapp 中使用jssdk正确姿势

2023-11-12

这是基于企业项目实战分享

 npm方式使用下方进行安装

npm install jweixin-module --save  

 安装在项目中的效果如图:

 接下自己定义个js, 引入我们用npm引入的模块:

jwx 代码:

let jweixin = require('jweixin-module');
import {
	jsdkSignature
} from '../request/api.js'
export default {
	//判断是否在微信中    
	isWechat: function() {
		var ua = window.navigator.userAgent.toLowerCase();
		if (ua.match(/micromessenger/i) == 'micromessenger') {
			return true;
		} else {
			alert('不是微信客户端,请在微信客户端操作在,谢谢');
			return false;
		}
	},
	initJssdk: function(callback) {
		//获取当前url然后传递给后台获取授权和签名信息  
		let url = location.href;
		jsdkSignature({
			data: {
				url: url
			},
			success(res) {
				// console.log('后台返回签名')
				// alert(JSON.stringify(res))
				//返回需要的参数appId,timestamp,noncestr,signature等  
				//注入config权限配置  
				jweixin.config({
					debug: false,
					appId: res.data.appId,
					timestamp: res.data.timestamp,
					nonceStr: res.data.nonceStr,
					signature: res.data.signature,
					jsApiList: [ //这里是需要用到的接口名称  
						'checkJsApi', //判断当前客户端版本是否支持指定JS接口  
						'onMenuShareAppMessage', //分享接口  
						'getLocation', //获取位置  
						'openLocation', //打开位置  
						'scanQRCode', //扫一扫接口  
						'chooseWXPay', //微信支付  
						'chooseImage', //拍照或从手机相册中选图接口  
						'previewImage', //预览图片接口  
						'uploadImage' //上传图片  
					]
				});
				if (callback) {
					callback(res.data);
				}
			}
		});
	},
	//在需要定位页面调用  
	getlocation: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		jweixin.ready(function() {
			jweixin.getLocation({
				type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'  
				success: function(res) {
					// console.log(res);  
					callback(res)
				},
				fail: function(res) {
					// console.log(res)
				},
				// complete:function(res){  
				//     console.log(res)  
				// }  
			});
		});
	},
	//打开位置
	openlocation: function(data) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		jweixin.ready(function() {
			jweixin.openLocation({
				latitude: data.latitude,
				longitude: data.longitude,
				name: data.name,
				address: data.address,
				scale: 14,
			});
		});
	},
	//选择图片
	chooseImage: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		//console.log(data);  
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.chooseImage({
					count: 1,
					sizeType: ['compressed'],
					sourceType: ['album'],
					success: function(rs) {
						callback(rs)
					}
				})
			});
		});
	},
	//微信支付  
	wxpay: function(data, callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		jweixin.ready(function() {
			jweixin.chooseWXPay({
				timestamp: data.timestamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符  
				nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位  
				package: data.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)  
				signType: data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'  
				paySign: data.paysign, // 支付签名  
				success: function(res) {
					// console.log(res);  
					callback(res)
				},
				fail: function(res) {
					callback(res)
				},
				// complete:function(res){  
				//     console.log(res)  
				// }  
			});
		});
	}
}

 说明:jwx 中请求了后台获取签名, url 为当前路径 location.href;

我这里是用java实现url签名:

 用的是第三方的sdk (wxjava),如果是用maven,可以使用下面方式引入,版本自行更改

<!--微信相关-->
<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-miniapp</artifactId>
    <version>${weixin-java.version}</version>
</dependency>
<weixin-java.version>3.9.0</weixin-java.version>

之后将自己获取APPID 和 秘钥配置好可以了。

因为我们自定义了js, 要想在全局中使用,就必须挂载

添加到 main.js中

import jwx from 'utils/common/jwx.js'
Vue.prototype.$jwx = jwx

 

 之后我们可以在页面中使用,但是我们init(初始化)配置只要一次就行,所以我们可以在App.vue 中配置好。

 jssdk 是基于微信浏览器,那就要判断是否在微信的环境中

接下来就是最重要的,如何在页面中使用:

 可以直接用this调用,this.$jwx.(方法)

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

uniapp 中使用jssdk正确姿势 的相关文章

随机推荐

  • 【论文速递】ICCCS2022 - FedMMD:基于多教师和多特征蒸馏的异构联邦学习

    论文速递 ICCCS2022 FedMMD 基于多教师和多特征蒸馏的异构联邦学习 论文原文 FedMMD Heterogenous Federated Learning based on Multi teacher and Multi fe
  • VC++6.0创建新项目

    VC 6 0创建新项目 1 打开VC 6 0 2 点击文件 再点击新建 3 点击倒数第三个创建控制台应用程序并输入工程名称 工程名称不要有中文 4 点击完成 之后点击确定 工程创建完成 4 添加 cpp文件 文件名后缀 c为C语言文件 cp
  • Binding几种绑定方式

    绑定到DataContext
  • 离散变量可不可以做方差分析_单因素方差分析

    1 背景 假如你们现在针对用户提出了三种提高客单价的策略A B C D 现在想看一下这三种策略哪种效果好 那我们怎么才能知道这三种策略效果哪个好呢 我们不可能让所有用户体验不同策略 最简单的方法就是做一个实验 我们可以随机挑选一部分用户 然
  • MFC 树形控件CTreeCtrl显示文件路径及文件

    在上篇文章中简单讲述了 MFC单文档分割窗口显示图片 但是我想实现的是左边显示图片的路径 右边显示图片的情况 所以这里需要讲述如何使用控件List Control和Tree Control CListCtrl 列表控件 可以用大图标 小图标
  • C#- FTP递归下载文件

    c ftp递归下载文件 找来找去这个最好 打断点 一小处foreach要改成for
  • Linux系统cif2cell v1.2.10的安装与测试

    本文在最新的Ubuntu版本20 04 LTS系统上安装cif2cell程序的1 2 10版本 cif2cell现已支持多种电子结构计算程序所需的格式输出 常用的CASTEP VASP Quantum Espresso和ABINIT等程序包
  • 6-3 删除字符 (20 分)void delchar( char *str, char c ){ int i,j; i=j=0; while(str[j]){

    这里提供一种全新的思路 因为考虑到数组变换内部一个数值其实需要o n 的时间维度 因此要尽可能的少的进行整个数组的变动 有一种解决方法是另建立一个暂时的数组进行暂存 筛选结束后进行复制 但这样在空间维度上需要o n 这里采用一种虚拟的另设数
  • 游戏开发unity杂项知识系列:抗锯齿处理

    游戏中需要进行抗锯齿处理的地方非常多 这里先写两点 一个是通过使用unity自带的抗锯齿设置 QualitySettings 可以参考下面的连接 QualitySettings也可以通过代码去设置 unity图片抗锯齿设置 LCHUIHUI
  • 【Java】阿里巴巴Java开发手册

    文章目录 前言 一 编程规约 一 命名风格 二 常量定义 三 代码格式 四 OOP 规约 五 集合处理 六 并发处理 八 注释规约 九 其它 二 异常日志 一 异常处理 二 日志规约 三 单元测试 四 安全规约 五 MySQL 数据库 一
  • 服务器无限矿场,深度揭秘人人矿场是如何实现分布式全网算力超600PiB?

    原标题 深度揭秘人人矿场是如何实现分布式全网算力超600PiB Filecoin的封装 指的是将原始数据 订单数据或垃圾数据 经过特定的算法进行反复计算 加密 生成符合Filecoin格式的有效扇区 并将有效扇区最终写入存储进行保存 需要注
  • 神经网络参数的计算

    在神经网络中参数量如何计算呢 卷积层 参数量 核高 times 核宽 times 核通道数
  • wms软件和ERP系统有何不同?

    wms仓库管理系统和ERP仓库管理系统有哪些区别 打个比喻 wms软件好比仓库主管 必须重视对过程中的人 机 料 法 环进行全面管理 而ERP系统就像是仓库经理 会重点关注进销存 wms软件和ERP系统有何不同 wms软件和ERP系统有何不
  • android okgo的使用及简单封装,同时配合Gson传参和返回数据解析

    闲来无事 把网络框架okgo简单的封装了一下 其实这种方法比较简单 步骤如下 1 导入依赖 一般网络请求基本会用到okgo和gosn compile com lzy net okgo 2 0 0 compile com google cod
  • LaTex 点乘,叉乘,点除,分数等常用算法

    点乘 a cdot b 叉乘 a times b 点除 a div b 分数 frac a b 待续
  • AI崛起,剑指终极对决!第二届广州·琶洲算法大赛复赛结果出炉

    广州市人民政府主办 海珠区人民政府 广州市科学技术局 广州市工业和信息化局 广州市政务服务数据管理局 琶洲实验室与北京百度网讯科技有限公司共同承办的 第二届广州 琶洲算法大赛 于2023年4月25日正式启动 共吸引了来自21个国家的国内外3
  • kibana集成内部账号_nginx和kibana/es集成

    利用elk搞了一个日志平台 随着日志越来越多 使用的人反应kibana上查询比较慢 kibana虽然有日志 但记录的信息不全 无法分析到底是什么样的查询比较慢 因此考虑在kibana和elk之间加一个nginx 主要作用有两个 1 记录ki
  • 树的广度遍历

    在二叉树的遍历当中 有一种遍历方法是不常见的 那就是广度遍历 和其他三种遍历方法不同 二叉树的广度遍历需要额外的数据结构来帮助一下 什么数据结构呢 那就是队列 因为队列具有先进先出的特点 这个特点要求我们在遍历新的一层数据之前 必须对上一次
  • java Integer类型比较

    在比较两个new的Integer对象时 不能直接使用 这里比较的是对象的地址 应该调用 equals 方法 Integer i new Integer 888 Integer j new Integer 888 System out pri
  • uniapp 中使用jssdk正确姿势

    这是基于企业项目实战分享 npm方式使用下方进行安装 npm install jweixin module save 安装在项目中的效果如图 接下自己定义个js 引入我们用npm引入的模块 jwx 代码 let jweixin requir