微信公众号weixin-js-sdk使用方法总结

目录
  • 1、安装weixin-js-sdk
  • 2、封装wechat.js
  • 3、main.js
  • 4、页面调用方式
  • 5、如果你需要用到其他功能,在这里按照这种方式接着定义新的方法:
  • 总结

记录微信公众号开发过程中遇到的问题以及解决方案:

1、安装weixin-js-sdk

npm install weixin-js-sdk

2、封装wechat.js

import wx from 'weixin-js-sdk' // 引入微信js-sdk
import http from '@/utils/axios.js'; //接口请求封装

class AuthWechat {

	signLink() {
		if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
			window.entryUrl = document.location.href
		}
		return /(Android)/i.test(navigator.userAgent) ? document.location.href : window.entryUrl;
	}

	// 当前是否是微信环境
	isWeixin() {
		return navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1;
	}

	/**
	 * 初始化wechat(分享配置)
	 */
	wechat() {
		return new Promise((resolve, reject) => {
			let url = this.signLink()
			http.post('Users/shareSign', {
				url: url
			}).then(res => {
				if (res.code == 200) {
					wx.config({
						debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
						appId: res.data.appId, // 必填,公众号的唯一标识
						timestamp: res.data.timestamp, // 必填,生成签名的时间戳
						nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
						signature: res.data.signature, // 必填,签名
						jsApiList: [
							'updateAppMessageShareData', // 自定义“分享给朋友”及“分享到QQ”按钮的分享内容
							'updateTimelineShareData', // 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)
							'scanQRCode', // 扫一扫
							'getLocation', // 获取地理位置
							'openLocation', // 使用微信内置地图查看位置接口
							'chooseImage', //拍照或从手机相册中选图接口
							'closeWindow', //关闭当前网页窗口接口
						]
					})
					wx.ready(res => {
						// 微信SDK准备就绪后执行的回调。
						resolve(wx, res)
					})
					wx.error(err => {
						reject(wx, err)
					})
				}
			})
		})
	}

	// 微信分享
	wxShare(shareObj) {
		this.wechat().then((wx, res) => {
			wx.ready(() => {
				wx.updateAppMessageShareData({
					title: shareObj.title, // 分享标题
					link: shareObj.link, // 分享链接
					desc: shareObj.desc, // 分享描述
					imgUrl: shareObj.imgUrl,
					success: function() {},
					cancel: function() {}
				});
				wx.updateTimelineShareData({
					title: shareObj.title, // 分享标题
					link: shareObj.link, // 分享链接
					desc: shareObj.desc, // 分享描述
					imgUrl: shareObj.imgUrl,
					success: function() {},
					cancel: function() {}
				});
			})
		})
	}

	// 扫一扫
	scanQRCode() {
		return new Promise((resolve, reject) => {
			this.wechat().then((wx, res) => {
				this.toPromise(wx.scanQRCode, {
					needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
					scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
				}).then(res => {
					resolve(res);
				}).catch(err => {
					reject(err);
				});
			})
		})
	}

	// 获取地理位置接口
	getLocation() {
		return new Promise((resolve, reject) => {
			this.wechat().then((wx, res) => {
				this.toPromise(wx.getLocation, {
					type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
				}).then(res => {
					resolve(res);
				}).catch(err => {
					reject(err);
				});
			})
		})
	}

	// 使用微信内置地图查看位置接口
	openLocation(data) {
		return new Promise((resolve, reject) => {
			this.wechat().then((wx, res) => {
				this.toPromise(wx.openLocation, {
					latitude: data.latitude, // 纬度,浮点数,范围为90 ~ -90
					longitude: data.longitude, // 经度,浮点数,范围为180 ~ -180。
					name: '', // 位置名
					address: '', // 地址详情说明
					scale: 1, // 地图缩放级别,整型值,范围从1~28。默认为最大
					infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
				}).then(res => {
					resolve(res);
				}).catch(err => {
					reject(err);
				});
			})
		})
	}

	// 拍照或从手机相册中选图接口
	chooseImage() {
		return new Promise((resolve, reject) => {
			this.wechat().then((wx, res) => {
				this.toPromise(wx.chooseImage, {
					count: 1, // 默认9
					sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
					sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
				}).then(res => {
					resolve(res);
				}).catch(err => {
					reject(err);
				});
			})
		})
	}

	// 关闭当前网页窗口接口
	closeWindow() {
		this.wechat().then((wx, res) => {
			wx.ready(() => {
				wx.closeWindow();
			})
		})
	}

	toPromise(fn, config = {}) {
		return new Promise((resolve, reject) => {
			fn({
				...config,
				success(res) {
					resolve(res);
				},
				fail(err) {
					reject(err);
				},
				complete(err) {
					reject(err);
				},
				cancel(err) {
					reject(err);
				}
			});
		});
	}
	// 如果你需要添加新的方法,请查下步骤5
}

export default new AuthWechat();

3、main.js

import wechat from '@/utils/wechat.js'
Object.assign(Vue.prototype, {
	'$wechat':wechat
})

4、页面调用方式

<template>
	<view class="message">
		<u-button type="primary" @click="scanQRCode">扫一扫</u-button>
		<u-button type="primary" @click="getLocation">获取地理位置</u-button>
		<u-button type="primary" @click="openLocation">使用微信内置地图查看位置</u-button>
		<u-button type="primary" @click="chooseImage">拍照或从手机相册中选图</u-button>
		<u-button type="primary" @click="closeWindow">关闭当前网页窗口</u-button>
	</view>
</template>
<script>
	export default {
		components: {},
		data() {
			return {
				latitude: '',
				longitude: '',
			}
		},
		onShow() {
			if(this.$wechat.isWeixin()){
				let shareObj = {
					title: '测试2', // 分享标题
					link: 'https://mpm.yoronglife.com/pages/mall/goodsDetail?id=1', // 分享链接
					desc: '描述2', // 分享描述
					imgUrl: 'https://mpweb.yoronglife.com/uploads/default/logo.png',
				}
				this.$wechat.wxShare(shareObj)
			}
		},
		methods: {
			scanQRCode(){
				this.$wechat.scanQRCode().then(res=>{
					alert(JSON.stringify(res))
				})
			},
			getLocation(){
				this.$wechat.getLocation().then(res=>{
					this.latitude = res.latitude;
					this.longitude = res.longitude;
					alert(JSON.stringify(res))
				})
			},
			openLocation(){
				let data = {
					'latitude' : this.latitude,
					'longitude' : this.longitude,
				}
				this.$wechat.openLocation(data).then(res=>{
					alert(JSON.stringify(res))
				})
			},
			chooseImage(){
				this.$wechat.chooseImage().then(res=>{
					alert(JSON.stringify(res.localIds))// 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
				})
			},
			closeWindow(){
				this.$wechat.closeWindow()
			},
		},
	}
</script>

上边内容仅记录了一部分API的使用方式。如果你需要其他功能,如预览图片,可直接用下面这种方式复制到

5、如果你需要用到其他功能,在这里按照这种方式接着定义新的方法:

示例预览图片:this.toPromis(wx.方法名,参数)

记得在config中添加jsApiList:[‘previewImage’]

previewImage(images) {
	// 1.如果需要有返回值,就封装一层Promise,
	return new Promise((resolve, reject) => {
		this.wechat().then((wx, res) => {
			this.toPromise(wx.previewImage, {
				current: '', // 当前显示图片的http链接
				urls: [] // 需要预览的图片http链接列表
			}).then(res => {
				resolve(res);
			}).catch(err => {
				reject(err);
			});
		})
	})

	// 2.如果不需要返回值,这里直接在wx.ready中实现具体的功能
	this.wechat().then((wx, res) => {
		wx.ready(() => {
			wx.previewImage(images);
		})
	})
}

页面中调用预览图片
let images = {
	current:'http://****',
	urls:[
		:'http://****',
		:'http://****'
	]
}
this.$wechat.previewImage(images)

以上内容及代码均经过测试,可直接复用!!!

总结

到此这篇关于微信公众号weixin-js-sdk使用方法的文章就介绍到这了,更多相关微信公众号weixin-js-sdk使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 微信小程序怎么加入JavaScript脚本,做出动态效果

    目录 一.数据绑定 二.全局数据 三.事件 四.动态提示 Toast 五.对话框 Modal 这篇文章主要介绍了教大家为小程序加入 JavaScript 脚本,做出动态效果,以及如何跟用户互动.学会了脚本,就能做出复杂的页面了. 一.数据绑定 前面的所有示例,小程序的页面都是写死的,也就是页面内容不会变.但是,页面数据其实可以通过脚本传入,通过脚本改变页面,实现动态效果. 小程序提供了一种特别的方法,让页面可以更方便地使用脚本数据,叫做"数据绑定"(data binding). 所谓&

  • 使用nodejs搭建微信小程序支付接口的详细过程

    目录 前言 支付流程 在微信小程序发起支付 支付模块 使用npm安装 引入依赖包 创建支付实例 获取支付参数 处理业务逻辑 解密回调结果 完整代码 最后 参考 前言 前段时间在开发一个微信小程序的时候需要用到支付功能,我就去看了下微信支付的官方文档,好家伙,微信官方只提供了java.php还有Go语言的sdk.PHP我会点吧,但又不是很会,做为一个菜鸡前端,java也不会更别说go了.恰好我最近刚学了下nodejs,我就想找找有没有人做nodejs版的sdk开源,在微信开发者社区逛了逛没想到还真

  • JS实现微信播音效果示例详解

    目录 需要实现的效果 图片切换轮播法 CSS实现 需要实现的效果 图片切换轮播法 这个功能其实是我刚毕业的时候实现的,那也是5年前的事情了,受限于当时的水平,仅仅是实现了,其他啥都不是.相当简单. 当初微信的声音条还是竖状的,所以依旧按照但是的样子来实现. 看下面的这个图片就知道了,甚至于代码都不用贴

  • 微信小程序JSON配置文件详细讲解作用

    目录 前言 一.项目根目录中的app.json配置文件 二.项目根目录中的project.config.json配置文件 三.项目根目录中的sitemap.json配置文件 四.每个页面文件夹中的.json配置文件 前言 小程序项目中有4种json配置文件,分别是: 1.项目根目录中的app.json配置文件 2.项目根目录中的project.config.json 配置文件 3.项目根目录中的sitemap.json配置文件 4.每个页面文件夹中的.json配置文件 一.项目根目录中的app.

  • php版微信公众号自定义分享内容实现方法

    本文实例讲述了php版微信公众号自定义分享内容实现方法.分享给大家供大家参考,具体如下: 微信公众号号在手机中通过api接口可以实现自定义分享内容了,下面我们来看这个接口的实现步骤. 一.准备阶段 公众号一个,微网站一个. 二.绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 备注:登录后可在"开发者中心"查看对应的接口权限. 三.代码 <?php //curl获取请求文本内容 f

  • Java实现微信公众号自定义菜单的创建方法示例

    本文实例讲述了Java实现微信公众号自定义菜单的创建方法.分享给大家供大家参考,具体如下: 开发公众号的时候可能需要给一些自定义菜单添加事件,比如点击某菜单然后服务端给用户推送信息. 我们也可以使用微信提供的网页调试工具直接生成菜单,不过需要考虑是否影响用户问题. 注意:使用代码自定义菜单事件,手动添加的菜单会失效!谨慎使用! 官方文档 httpClientUtil工具类需要的话可以在前面微信公众号获取access_token中获取 public class WechatDIYMenuTest

  • 微信公众号H5支付接口调用方法

    本文实例为大家分享了 微信内H5调用支付接口的具体代码,供大家参考,具体内容如下 官方文档地址 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>微信公众号H5接口调用</title> <script src='./js/md5.js'></script> </head>

  • 微信公众号接入ChatGPT机器人的方法

    目录 在云服务器上部署自定义消息处理服务 微信公众号配置自己的消息处理服务器 不难,代码总共也就25行,大致逻辑如下. 总共分为是下面两步 在云服务器上部署自定义消息处理服务 这里需要我们自定义来处理用户发送过来的消息 首先导入werobot,这是微信公众号官方让我们自定义消息处理的模块 pip install werobot 然后是一个样例,具体内容已经注释 注意,只能用80端口启动,如果有https可以用443端口来启动,至于为什么?后面会知道. import werobot # token

  • 巧用Vue.js+Vuex制作专门收藏微信公众号的app

    本文一步一步教大家如何利用Vue.js + Vuex制作专门收藏微信公众号的app 项目地址: https://github.com/jrainlau/wechat-subscriptor 下载&运行 git clone git@github.com:jrainlau/wechat-subscriptor.git cd wechat-subscriptor && npm install npm run dev   // run in dev mode cd backend-serv

  • 详细Java批量获取微信公众号方法

    最近需要爬取微信公众号的文章信息.在网上找了找发现微信公众号爬取的难点在于公众号文章链接在pc端是打不开的,要用微信的自带浏览器(拿到微信客户端补充的参数,才可以在其它平台打开),这就给爬虫程序造成很大困扰.后来在知乎上看到了一位大牛用php写的微信公众号爬取程序,就直接按大佬的思路整了整搞成java的了.改造途中遇到蛮多细节问题,拿出来分享一下. 系统的基本思路是在安卓模拟器上运行微信,模拟器设置代理,通过代理服务器拦截微信数据,将得到的数据发送给自己的程序进行处理. 需要准备的环境:node

  • 如何进行微信公众号开发的本地调试的方法

    微信团队为广大的开发者提供了一个测试账号.该帐号无需公众账号,快速申请接口测试,直接体验和测试公众平台所有高级接口.这么好用的功能,只需要要你有一个手机,手机上安装了一个微信即可. 地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 登录后,会得到一个微信号,和测试好的相关信息.appID,appsecret. 接口配置信息,js接口安全域名配置按照生产环境的配置即可. 下面重点开始了.已经有了一个可供测试的公众号,

  • 微信公众号JS-SDK获取当前经纬度以及地址信息的方法

    目录 前言 一.微信 JS-SDK是什么? 二.使用步骤 1.绑定域名 2.引入 JS 文件 3.通过 config 接口注入权限验证配置 4.在这过程中我遇到的问题及解决方法(提示错误invalid signature) 总结 前言 这篇文章带大家掌握 从0到1掌握微信公众平台js-sdk调用 微信公众平台js-sdk调用到底哪几步 安全域名怎么配置 代码怎么写 出了问题怎么查找 例如:随着微信生态的不断发展,基于微信平台的网页开发业务场景也越来越多,很多人都开启了学习微信网页开发,本文就介绍

  • 微信公众号weixin-js-sdk使用方法总结

    目录 1.安装weixin-js-sdk 2.封装wechat.js 3.main.js 4.页面调用方式 5.如果你需要用到其他功能,在这里按照这种方式接着定义新的方法: 总结 JS-SDK说明文档 网页授权说明文档 微信公众号授权登录参考方案 http接口请求封装参考方案 记录微信公众号开发过程中遇到的问题以及解决方案: 1.安装weixin-js-sdk npm install weixin-js-sdk 2.封装wechat.js import wx from 'weixin-js-sd

  • python实现给微信公众号发送消息的方法

    本文实例讲述了python实现给微信公众号发送消息的方法.分享给大家供大家参考,具体如下: 现在通过发微信公众号信息来做消息通知和告警已经很普遍了.最常见的就是运维通过zabbix调用shell脚本给微信发消息,起到告警的作用.当要发送的信息较多,而且希望按照指定格式显示的好看一点的时候,shell处理起来,个人感觉不太方便.于是我用Python重写了发微信的功能. #coding:utf-8 import urllib2 import json import sys def getMsg():

随机推荐