关于微信

1、获取微信js所必须的签名

 1 logger.info("获取凭证..");

 2             String code=(String) SecurityUtils.getSubject().getSession().getAttribute("Sign_code");

 3             String state=(String) SecurityUtils.getSubject().getSession().getAttribute("Sign_state");

 4             logger.info(state);

 5             logger.info(code);

 6             String ticket = null;

 7             // 存储凭证和生成时间

 8             FishingSingle instance = FishingSingle.instance;

 9             if (null != instance.getJsGenerateTime()) {

10                 Date currentTime = new Date();

11                 // 计算时间差

12                 long time = ((currentTime.getTime() - instance.getJsGenerateTime()

13                         .getTime()) / 1000);

14                 // ticket有效时间7200秒

15                 if (time >= 7100) {

16                     // 获取js凭证

17                     ticket = WeixinUtil.jsApi();

18                 } else {

19                     ticket = instance.getJsTicket();

20                 }

21             } else {

22                 // 获取js凭证

23                 ticket = WeixinUtil.jsApi();

24             }

25             //ticket = WeixinUtil.jsApi();

26             Map<String, Object> paramsMap = new HashMap<String, Object>();

27             paramsMap.put("jsapi_ticket", ticket);

28             paramsMap.put("timestamp", System.currentTimeMillis());

29             paramsMap.put("noncestr", "weixin");

30             // 调用js的页面完成路径

31             String url=(String) MiceConfig.getContextProperty("wd_URL");

32             if(code==null){

33                 paramsMap.put("url", url+"personal/toSign");

34             }else{

35                 paramsMap.put("url", url+"personal/toSign?code="+code+"&state="+state);

36             }

37             

38             // 排序后的结果

39             String listStr = createLinkString(paramsMap);

40             logger.info("排序后..." + listStr);

41             // SHA-1加密

42             String tmpStr = new MySecurity().encode(listStr, MySecurity.SHA_1);

43             logger.info("SHA-1加密后:" + tmpStr);

44             // 保存js需要的4个参数

45             mv.addObject("appId", WeixinUtil.appId);

46             logger.info(WeixinUtil.appId);

47             mv.addObject("timestamp", paramsMap.get("timestamp"));

48             mv.addObject("nonceStr", paramsMap.get("noncestr"));

49             mv.addObject("signature", tmpStr);

所需要的加密方法

 1 /**

 2      * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串

 3      * 

 4      * @param params

 5      *            需要排序并参与字符拼接的参数组

 6      * @return 拼接后字符串

 7      */

 8     public static String createLinkString(Map<String, Object> params) {

 9 

10         List<String> keys = new ArrayList<String>(params.keySet());

11         Collections.sort(keys);

12 

13         String prestr = "";

14 

15         for (int i = 0; i < keys.size(); i++) {

16             String key = keys.get(i);

17             Object value = params.get(key);

18 

19             if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符

20                 prestr = prestr + key + "=" + value;

21             } else {

22                 prestr = prestr + key + "=" + value + "&";

23             }

24         }

25 

26         return prestr;

27     }

28 

29     


2、页面必须要导入微信所提供的js

1 <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

3、页面必须先通过签名

 1 wx.config({

 2                 debug : false,

 3                 appId : '${appId}',

 4                 timestamp : ${timestamp},

 5                 nonceStr : '${nonceStr}',

 6                 signature : '${signature}',

 7                 jsApiList : [ 'checkJsApi', 'onMenuShareTimeline',

 8                         'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo',

 9                         'hideMenuItems', 'showMenuItems', 'hideAllNonBaseMenuItem',

10                         'showAllNonBaseMenuItem', 'translateVoice', 'startRecord',

11                         'stopRecord', 'onRecordEnd', 'playVoice', 'pauseVoice',

12                         'stopVoice', 'uploadVoice', 'downloadVoice', 'chooseImage',

13                         'previewImage', 'uploadImage', 'downloadImage',

14                         'getNetworkType', 'openLocation', 'getLocation',

15                         'hideOptionMenu', 'showOptionMenu', 'closeWindow',

16                         'scanQRCode', 'chooseWXPay', 'openProductSpecificView',

17                         'addCard', 'chooseCard', 'openCard' ]

18             });


4、执行一些具体的微信提供的东西

wx.ready(function() {



}

 5、扫一扫(在4中执行)

wx.scanQRCode({
needResult :
1, desc : 'scanQRCode desc', success : function(res) { //alert(JSON.stringify(res)); //alert(res.resultStr);
//获取一个字符串数组取值
var str=res.resultStr.split(","); var str1=str[0]; var str2=str[1];
//post提交方法 $.post(
'',{}).success(function(data) {} } });

 

你可能感兴趣的:(微信)