前端开发工程师和关注前端开发的开发者们在2015年中肯定被腾讯的JSSDk引爆过,搞软件的,搞前端的甚至是是搞后端的都跑过来凑热闹,一时之间也把微信JSSDk捧得特别牛逼,但是在我们的技术眼里它的实现原理和根本是不能够被改变的,这篇文章就不对其js的实现做任何评价和解说了(因为我也不是很懂,哈哈),这里要说的是它的配置配置实现,参考文档:http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html
!微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包,通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍的照,选图,语音,位置等手机系统的能力,同时可以直接使用微信分享,扫一扫,卡券,支付等微信特有的能力,为微信用户提供更优质的网页体验;本篇将面向网页开发者介绍微信JS-SDK如何使用及相关注意事项! JSSDK使用步骤:
步骤一:在微信公众平台绑定安全域名
步骤二:后端接口实现JS-SDK配置需要的参数
步骤三:页面实现JS-SDk中配置的注入配置,并实现对成功和失败的处理
<强>(一)在微信公众平台绑定安全域名强>
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”(如下图),如果需要使用支付类接口,需要确保支付目录在支付的安全域名下,否则将无法完成支付!(注:登录后可在“开发者中心”查看对应的接口权限)
<强>(二)后端接口实现JS-SDK配置需要的参数强>
wx.config ({ 调试:真的,//开启调试模式,调用的所有api的返回值会在客户端提醒出来,若要查看传入的参数,可以在pc端打开,参数信息会通过日志打出,仅在pc端时才会打印。 appId:“,//必填,公众号的唯一标识 时间戳://必填,生成签名的时间戳 nonceStr:“,//必填,生成签名的随机串 签名:“,//必填,签的名,见附录1 jsApiList:[]//必填,需要使用的JS接口列表,所有JS接口列表见附录2 });
我们查看js-sdk的配置文档和以上的代码可以发现配置的配置需要4个必不可少的参数appId、时间戳、nonceStr,签名,这里的签名就是我们生成的签名。
生成签名之前必须先了解一下jsapi_ticket, jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket,所以这里我们将jsapi_ticket的获取放到定时任务中,因为它和令牌的生命周期是一致的,所以在这里我们将他们放到一起,将原有的定时任务中获取令牌的代码做如下修改:
包com.cuiyongzhi.wechat.common; 进口java.text.SimpleDateFormat; 进口java.util.Date; 进口java.util.HashMap; 进口java.util.Map; 进口net.sf.json.JSONObject; 进口com.cuiyongzhi.web.util.GlobalConstants; 进口com.cuiyongzhi.wechat.util.HttpUtils;/* * *名称:WeChatTask * @Description:微信两小时定时任务体 * @author dapengniao * @date 2016年3月10日下午1:42:29 */公开课WeChatTask {/* * * @Description:任务执行体 * @param @throws例外 * @author dapengniao * @date 2016年3月10日下午2:04:37 */公共空间getToken_getTicket()抛出异常{ String> Map<字符串;params=new HashMap<字符串,String> ();//获取令牌执行体 参数个数。put (" grant_type”、“client_credential”); 参数个数。put (“appid GlobalConstants.getInterfaceUrl (appid ")); 参数个数。把(“秘密”,GlobalConstants.getInterfaceUrl (AppSecret ")); 字符串jstoken=HttpUtils.sendGet ( GlobalConstants.getInterfaceUrl (“tokenUrl”),参数); 字符串access_token=JSONObject.fromObject jstoken .getString ( “access_token”);//获取到令牌并赋值保存 GlobalConstants.interfaceUrlProperties.put (“access_token”, access_token);//获取jsticket的执行体 params.clear (); 参数个数。把(“access_token”, access_token); 参数个数。把(“类型”、“jsapi”); 字符串jsticket=HttpUtils.sendGet ( GlobalConstants.getInterfaceUrl (“ticketUrl”),参数); 字符串jsapi_ticket=JSONObject.fromObject jsticket .getString ( “票”); GlobalConstants.interfaceUrlProperties .put (“jsapi_ticket”, jsapi_ticket);//获取到js-SDK的机票并赋值保存 系统。println (“jsapi_ticket================================================" + jsapi_ticket); 系统。println(新SimpleDateFormat (“yyyy-MM-dd HH: mm: ss”)。新日期格式(())+”牌为==============================" + access_token); } }Java微信公众平台开发(13)微信JSSDK中配置配置