微信开发之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



       

 

   

目录
相关文章
|
2月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
11天前
|
算法 iOS开发 CDN
“企业微信iPad协议”第 0x04 天:当朋友圈接口在凌晨 2:14 突然返回 404
新品上线紧急任务:300位经销商朋友圈同步海报。突破官方限制,利用企业微信iPad协议私有接口,自动化上传发布。凌晨遭遇404,迅速定位并修复算法版本问题,最终高效完成推送,点赞超4200。技术在文档之外,也在边界之内。
91 0
|
17天前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
2月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
155 23
|
9天前
|
iOS开发
“企业微信iPad协议”第0x0B次编译:当朋友圈接口在凌晨悄然返回空数组
新品海报发布失败,排查发现企业微信iPad端因本地时间偏差超60秒,导致`ext_ticket`校验失败。NTP校准后恢复正常。问题根源:独立加签逻辑对时间敏感,且错误不提示。精准时间成合规关键。
144 0
|
2月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
123 12
|
17天前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
17天前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
38 0
|
2月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
103 2

热门文章

最新文章