基于微信公众号开发h5调取扫一扫,打开内置地图,更改分享面板等api

var jweixin = require('jweixin-module');
import config from '@/config'
import {
	getSign
} from '@/api/login.js'
export default {
	//判断是否在微信中    
	isWechat: function() {
		var ua = window.navigator.userAgent.toLowerCase();
		if (ua.match(/micromessenger/i) == 'micromessenger') {
			//console.log('是微信客户端')  
			return true;
		} else {
			//console.log('不是微信客户端')  
			return false;
		}
	},
	// 初始化
	initJssdk: function(callback) {
		// 记录进入app时的url
		if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
			window.entryUrl = location.href.split('#')[0]
		}
		let isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
		// 进行签名的时候  Android 不用使用之前的链接, ios 需要
		let signLink = isiOS ? window.entryUrl : location.href.split('#')[0];
		console.warn('-----------当前签名url--------------')
		console.warn(signLink)
		// var uri = encodeURIComponent(location.href.split('#')[0]); //获取当前url然后传递给后台获取授权和签名信息
		var uri = encodeURIComponent(signLink); //获取当前url然后传递给后台获取授权和签名信息
		console.log(uri)
		//服务端进行签名
		getSign({url:uri}).then((res) => {
			jweixin.config({
				debug: false,
				appId: config.appid,
				timestamp: res.data.timestamp,
				nonceStr: res.data.nonceStr,
				signature: res.data.signature,
				jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData','scanQRCode','openLocation', 'chooseImage',
					'previewImage',
					'uploadImage',
					'downloadImage'
				]
			});
			jweixin.ready(function() {
				console.log('config注入成功')
				console.log(callback, 'callbackcallback')
				if (callback) {
					callback();
				}
			})
		})


	},
	//在需要定位页面调用  
	getlocation: function(callback) {
		if (!this.isWechat()) {
			console.log('不是微信客户端')
			return;
		}
		this.initJssdk(function(res) {
			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, callback) { //打开位置  
	console.log(data,'ppp')
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.openLocation({ //根据传入的坐标打开地图  
				 type: 'gcj02', 
					latitude: parseFloat(data.latitude),
					longitude: parseFloat(data.longitude),
					 name: '', // 位置名
					  address: '', // 地址详情说明
					  scale: 1, // 地图缩放级别,整型值,范围从1~28。默认为最大
					  infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
				});
			});
		});
	},
	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(res) {
						callback(res)
					},
					fail: function(err) {
						console.log(err)
					}
				})
			});
		});
	},
	// 微信扫一扫
	toggle: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.scanQRCode({
					needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
					scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
					success: function(res) {
						// var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
						callback(res)
					},
					fail: function(err) {
						console.log(err)
					}
				});
			})
		})
	},

	//在需要自定义分享的页面中调用
	share: function(data) {
		console.log(data)
		//每次都需要重新初始化配置,才可以进行分享  
		this.initJssdk(function() {
			
			var shareData = {
				title: data && data.title ? data.title : 'h5',
				desc: data && data.desc ? data.desc : '邀请加入',
				link: data && data.link ? data.link : window.location.href,
				imgUrl: data && data.imgUrl ? data.imgUrl : 'http://shanhe.yunthings.com:82/logo.png',
				success: function(res) {
					//用户点击分享后的回调,这里可以进行统计,例如分享送金币之类的  
					console.log('分享成功','ppppp')
				},
				fail: function(err) {
					console.log(err)
				},
				cancel: function(res) {
					console.log('askasask是')
				}
			};
			//分享给朋友接口(只是更改分享面板的格式)  
			jweixin.ready(function() {
			jweixin.updateAppMessageShareData(shareData);
			jweixin.updateTimelineShareData(shareData);
			})
		})
	},
//微信支付  
	wxpay: function(params = {},type,merOrderId,callback) {
		if (!this.isWechat()) {
			console.log('不是微信客户端')
			return;
		}
		this.initJssdk(function() {
			jweixin.chooseWXPay({
				timestamp: params.timeStamp, // 支付签名时间戳
				nonceStr: params.nonceStr, // 支付签名随机串,不长于 32 位  
				package: params.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)  
				signType: params.signType, // 签名方式,默认为'SHA1'  
				paySign: params.paySign, // 支付签名  
				success: function(res) {
					console.log(微信支付成功可调接口跳页面,'sdsds')
					
					
				},
				cancel: function(res) {
					console.log('微信JSAPI返回支付失败',res)
				},
				complete: function(res) {
					callback(res)
					console.log(res,'ssss')
				}
			});

		});
	},
	// 选择通讯地址
	chooseAddress: function(callback) {
		this.initJssdk(function() {
			jweixin.openAddress({
				success: function(res) {
					callback(res)
				}
			})
		})
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值