微信开发之JSSDK接口开发(Java)

简介:     前不久做了一个微信公众号项目,有用到JSSDK接口,今晚正好有空,就开始动手整理。如何获得accesstoken和jsapitiket以及生成签名就不细说了,大家看接口文档,有不明白的地方可以给我留言。

    前不久做了一个微信公众号项目,有用到JSSDK接口,今晚正好有空,就开始动手整理。如何获得accesstoken和jsapitiket以及生成签名就不细说了,大家看接口文档,有不明白的地方可以给我留言。本文主要介绍了如何去使用JSSDK的部分接口,包括选择图片、上传图片、下载图片、获取地理位置、调用微信扫一扫,其他接口以后补充,代码我贴出来了,测试通过。

     接口文档官方地址:https://mp.weixin.qq.com/wiki

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

	<head>
		<title>接入微信JSSDK</title>
		<base href="<%=basePath%>">
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />

		<head>
			<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
			<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
			<script type="text/javascript">
			
		
				$(function() {
					var appId = '${sign.appId}';
					var nonceStr = '${sign.nonceStr}';
					var timestamp = '${sign.timestamp}';
					var signature = '${sign.signature}';
					wx.config({
						debug: true,
						appId: appId,
						timestamp: timestamp,
						nonceStr: nonceStr,
						signature: signature,
						jsApiList: [
							'checkJsApi',
							'chooseImage',
							'uploadImage',
							'downloadImage',
							'getLocation',
							'scanQRCode'
						]
					});
					var images = {
						localId: [],
						serverId: [],
						downloadId: []
					};

					//选择图片
					$("#chooseImage").bind("click", function() {
						wx.chooseImage({
							count: 9, // 默认9,最多可选9张图片
							sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
							sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
							success: function(res) {
								images.localId = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
							}
						});
					});
					
					//上传图片
				    $("#uploadImage").bind("click", function() {
						var i = 0,
							len = images.localId.length;
						if(len == 0) {
							alert('请先使用 chooseImage 接口选择图片', null);
							return;
						}
						// if(images.localId.length > 1) {
						//    alert('目前仅支持单张图片上传,请重新上传');
						//   images.localId = [];
						//   return false;
						//  }
						function wxUpload() {
							wx.uploadImage({
								localId: images.localId[i], // 需要上传的图片的本地ID,由chooseImage接口获得
								isShowProgressTips: 9, // 默认为1,显示进度提示
								success: function(res) {
									i++;
									alert('已上传:' + i + '/' + len);
									//将上传成功后的serverId保存到serverid
									images.serverId.push(res.serverId);
									//上传成功,下载到本地
									wxImgCallback(res.serverId);
									if(i < len) {
										wxUpload();
									}
								},
								fail: function(res) {
									alert('上传失败');
								}
							});
						}
						wxUpload();
					});
				    
					//下载图片
				    $("#downloadImage").bind("click", function() {
						var i = 0,
							len = images.serverId.length;
						if(len == 0) {
							alert('请先使用 chooseImage 接口选择图片', null);
							return;
						}

						function wxDownload() {
							wx.downloadImage({
								serverId: images.serverId[i], // 需要下载的图片的服务器端ID,由uploadImage接口获得
								isShowProgressTips: 1, // 默认为1,显示进度提示
								success: function(res) {
									i++;
									alert('已下载:' + i + '/' + len);
									images.downloadId.push(res.localId);
									if(i < len) {
										wxDownload();
									}
								}
							});
						}
						wxDownload();
					});

					//获取地理位置
		            $("#openLocation").bind("click", function() {
						wx.getLocation({
							success: function(res) {
								alert(JSON.stringify(res));
							},
							cancel: function(res) {
								alert('用户拒绝授权获取地理位置');
							},
							fail: function(res) {
								alert(JSON.stringify(res));
							}
						});
					});
					
					//调用扫一扫
					$("#scanQRCode").bind("click", function() {
						wx.scanQRCode({
						    needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
						    scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
						    success: function (res) {
							    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
							    alert(result);
							}
						});
					});
				});

				function wxImgCallback(serverId) {
					$.ajax({
						type: "get",
						url: "${base}/mall/download",
						contentType: "application/json;charset=utf-8",
						data: "serverId=" + serverId,
						success: function(data) {
							if(data == 1){
								alert("下载成功");
							}
						},
						error: function(data) {
							alert("失败");
						}
					});

				}

				wx.error(function(res) {
					alert("出错了:" + res.errMsg);
				});
			</script>
		</head>

		<body>
			<input type="button" id="chooseImage" value="选择图片" /> <br>
			<input type="button" id="uploadImage" value="上传图片" /> <br>
			<input type="button" id="downloadImage" value="下载图片" /> <br>
			<input type="button" id="openLocation" value="查看位置" /> <br>
			<input type="button" id="scanQRCode" value="扫一扫" /> <br>
		</body>
</


      


(转载注明出处,原文地址:http://blog.csdn.net/ke7in1314/article/details/72904491



       

 

   

目录
相关文章
|
4天前
|
JSON 小程序 应用服务中间件
微信的接口wxLogin()的返回值都有什么?
【10月更文挑战第4天】微信的接口wxLogin()的返回值都有什么?
34 1
|
1天前
|
JSON Java fastjson
Java Http 接口对接太繁琐?试试 UniHttp 框架吧
UniHttp 是一个声明式的 HTTP 接口对接框架,旨在简化第三方 HTTP 接口的调用过程。通过注解配置,开发者可以像调用本地方法一样发起 HTTP 请求,无需关注请求的构建和响应处理细节。框架支持多种请求方式和参数类型,提供灵活的生命周期钩子以满足复杂的对接需求,适用于企业级项目的快速开发和维护。GitHub 地址:[UniAPI](https://github.com/burukeYou/UniAPI)。
|
2天前
|
Java 开发者
在 Java 多线程编程中,Lock 接口正逐渐取代传统的 `synchronized` 关键字,成为高手们的首选
【10月更文挑战第6天】在 Java 多线程编程中,Lock 接口正逐渐取代传统的 `synchronized` 关键字,成为高手们的首选。相比 `synchronized`,Lock 提供了更灵活强大的线程同步机制,包括可中断等待、超时等待、重入锁及读写锁等高级特性,极大提升了多线程应用的性能和可靠性。通过示例对比,可以看出 Lock 接口通过 `lock()` 和 `unlock()` 明确管理锁的获取和释放,避免死锁风险,并支持公平锁选择和条件变量,使其在高并发场景下更具优势。掌握 Lock 接口将助力开发者构建更高效、可靠的多线程应用。
8 2
|
5天前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
25 5
|
5天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【10月更文挑战第3天】微信小程序作为新兴应用形态,凭借便捷体验与社交传播能力,成为企业拓展业务的新渠道。本文探讨了微信小程序全栈开发中的PWA技术应用,包括离线访问、后台运行、桌面图标及原生体验等方面,助力开发者提升小程序性能与用户体验。PWA技术在不同平台的兼容性、性能优化及用户体验是实践中需注意的关键点。
21 5
|
1天前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
4天前
|
安全 Java 数据安全/隐私保护
【一步一步了解Java系列】:探索抽象类与接口的秘密
【一步一步了解Java系列】:探索抽象类与接口的秘密
12 3
|
9天前
|
Java
Java中抽象类和接口有什么区别?
本文阐述了Java中抽象类和接口的区别,包括类型扩展、方法/属性访问控制符、方法实现、使用目的等方面的不同,并提供了抽象类和接口的使用示例,以及Java中其他类型的类(普通类、内部类等)的简介。
13 0
Java中抽象类和接口有什么区别?
|
6天前
|
XML 前端开发 Java
JAVA调试webservice接口
JAVA调试webservice接口
12 0
|
8天前
|
Java 编译器
【Java】用一个动物王国的例子,讲清楚抽象类和接口
【Java】用一个动物王国的例子,讲清楚抽象类和接口
15 0