Bladeren bron

Merge branch 'master' of http://8.138.247.150:3000/baibx/xc into dy

# Conflicts:
#	com.sharemao.web.xw3/src/main/java/com/sharemao/web/wx/ctrl/AuthCtrl.java
#	com.sharemao.web.xw3/src/main/webapp/activation.jsp
#	com.sharemao.web.xw3/src/main/webapp/mifi.jsp
baibx 1 maand geleden
bovenliggende
commit
9d8374849c

+ 36 - 1
com.sharemao.web.xw3/src/main/java/com/sharemao/web/wx/ctrl/AuthCtrl.java

@@ -1,5 +1,8 @@
1 1
 package com.sharemao.web.wx.ctrl;
2 2
 
3
+import java.net.URLEncoder;
4
+import java.util.Arrays;
5
+import java.util.HashMap;
3 6
 import java.util.Map;
4 7
 
5 8
 import javax.servlet.http.HttpSession;
@@ -79,6 +82,7 @@ public class AuthCtrl
79 82
 			if(Tools.isEmpty(phonenum))
80 83
 			{
81 84
 				context.getRequest().setAttribute("sn", cursn);
85
+                initWxJsApiSign(context);
82 86
 				return new TextView("/activation.jsp");
83 87
 			}
84 88
 			else
@@ -88,7 +92,13 @@ public class AuthCtrl
88 92
 				String defaultdev =dataJson.getString("defaultdev");
89 93
 				if(Tools.isEmpty(defaultdev)) {
90 94
                     defaultdev = cursn;
91
-                }
95
+                } /*else if(!Tools.isEmpty(defaultdev)&&getDevtype(defaultdev)==16) {
96
+                    String url="http://dy.yunjia99.cn/user/index.do";
97
+                    url = URLEncoder.encode(url);
98
+                    log.info("url="+url);
99
+                    String path = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb06cf14f96dd7149&redirect_uri=" + url + "&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
100
+                    return new TextView(path);
101
+                }*/
92 102
 				session.setAttribute("defaultdev", defaultdev);	// 默认设备
93 103
 				/*if(Tools.isEmpty(defaultdev)) {
94 104
 					return new TextView("/device/getDevInfo.do");
@@ -104,6 +114,7 @@ public class AuthCtrl
104 114
 			String lt=DateTimeUtil.longtime();
105 115
 			lt=lt.substring(0,lt.length()-2);
106 116
 			context.getRequest().setAttribute("sign", CodecUtil.str2md5("znz"+cursn+"125226"+lt));
117
+            initWxJsApiSign(context);
107 118
 			return new TextView("/activation.jsp");
108 119
 		}
109 120
 	}
@@ -153,6 +164,7 @@ public class AuthCtrl
153 164
             if(Tools.isEmpty(phonenum))
154 165
             {
155 166
                 context.getRequest().setAttribute("sn", cursn);
167
+                initWxJsApiSign(context);
156 168
                 return new TextView("/activation.jsp");
157 169
             }
158 170
             else
@@ -177,9 +189,32 @@ public class AuthCtrl
177 189
             String lt=DateTimeUtil.longtime();
178 190
             lt=lt.substring(0,lt.length()-2);
179 191
             context.getRequest().setAttribute("sign", CodecUtil.str2md5("znz"+cursn+"125226"+lt));
192
+            initWxJsApiSign(context);
180 193
             return new TextView("/activation.jsp");
181 194
         }
182 195
     }
196
+
197
+    private void initWxJsApiSign(Context context){
198
+        HttpSession session = context.getRequest().getSession();
199
+        String jsapiAccessToken = (String) session.getAttribute("jsapiAccessToken");
200
+        if(GzhUtil.isEmpty(jsapiAccessToken)) {
201
+            jsapiAccessToken = GzhUtil.getAccessToken(Constants.appId, Constants.appSecret);
202
+            session.setAttribute("jsapiAccessToken", jsapiAccessToken);
203
+        }
204
+        String jsapiTicket = (String) session.getAttribute("jsapiTicket");
205
+        if(GzhUtil.isEmpty(jsapiTicket)) {
206
+            jsapiTicket = GzhUtil.getJsapiTicket(jsapiAccessToken);
207
+            session.setAttribute("jsapiTicket", jsapiTicket);
208
+        }
209
+        String reqUrl = context.getRequest().getRequestURL().toString();
210
+        reqUrl = reqUrl.split("#")[0];
211
+        String query = context.getRequest().getQueryString();
212
+        String surl = GzhUtil.isEmpty(query) ? reqUrl : reqUrl+"?"+query;
213
+        Map<String, String> signret = GzhUtil.createSign(surl, jsapiTicket);
214
+        signret.put("appid", Constants.appId);
215
+        context.getRequest().setAttribute("signret", signret);
216
+        log.info("signret:"+signret);
217
+    }
183 218
 	
184 219
 	/**
185 220
 	 * 用户登陆界面,登陆后将微信号自动绑定到用户账号

+ 48 - 0
com.sharemao.web.xw3/src/main/webapp/activation.jsp

@@ -82,6 +82,12 @@
82 82
       <img src="/static/img/loading1.gif">
83 83
     </div>
84 84
   </div>
85
+
86
+			<input type="hidden" id="appid" value="${signret.appid}">
87
+			<input type="hidden" id="nonceStr" value="${signret.nonceStr}">
88
+			<input type="hidden" id="timestamp" value="${signret.timestamp}">
89
+			<input type="hidden" id="signature" value="${signret.signature}">
90
+			<input type="hidden" id="showdialog" value="${devs.devInfo.showdialog}">
85 91
 	<script>
86 92
 
87 93
 		var countdown = 60;
@@ -147,6 +153,48 @@
147 153
 				settime(obj)
148 154
 			},1000)
149 155
 		}
156
+		$(function(){
157
+            //alert($("#nonceStr").val()+"***"+$("#timestamp").val()+"***"+$("#signature").val());
158
+            wx.config({
159
+              debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
160
+              appId: $("#appid").val(), // 必填,服务号的唯一标识
161
+              timestamp: $("#timestamp").val(), // 必填,生成签名的时间戳
162
+              nonceStr: $("#nonceStr").val(), // 必填,生成签名的随机串
163
+              signature: $("#signature").val(),// 必填,签名
164
+              jsApiList: ['scanQRCode'], // 必填,需要使用的JS接口列表
165
+              openTagList: []
166
+            });
167
+            wx.ready(function(){
168
+                console.log("success");
169
+              // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
170
+            });
171
+            wx.error(function(res){
172
+                console.log("error");
173
+                console.log(res);
174
+              // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
175
+            });
176
+            var btn = document.getElementById('img-qrscan');
177
+            btn.addEventListener('click', function (e) {
178
+                wx.scanQRCode({
179
+                  needResult: 1,
180
+                  scanType: ["qrCode"],
181
+                  success: function (res) {
182
+                    var result = res.resultStr;
183
+                    if(!result) {
184
+                         return;
185
+                     }
186
+                    var sn = "";
187
+                    if(result.indexOf("sn=") !== -1) {
188
+                        var parts = result.split("sn=");
189
+                        if(parts.length === 2 && parts[1].length > 0) {
190
+                            sn = parts[1];
191
+                            $('#sn').val(sn);
192
+                        }
193
+                    }
194
+                  }
195
+                });
196
+            });
197
+        })
150 198
 	</script>
151 199
 </body>
152 200