Kaynağa Gözat

Merge branch 'new【wxb06cf14f96dd7149】' of http://8.138.247.150:3000/baibx/xc

baibx 3 ay önce
ebeveyn
işleme
792ea021a3

+ 5 - 1
com.sharemao.web.xw3/pom.xml

@@ -81,7 +81,11 @@
81 81
 		<artifactId>fastjson2</artifactId>
82 82
 		<version>2.0.27</version>
83 83
 	</dependency>
84
-		
84
+        <dependency>
85
+            <groupId>com.alipay.sdk</groupId>
86
+            <artifactId>alipay-sdk-java</artifactId>
87
+            <version>4.40.649.ALL</version>
88
+        </dependency>
85 89
 	</dependencies>
86 90
 	
87 91
 	<distributionManagement>

+ 77 - 17
com.sharemao.web.xw3/src/main/java/com/sharemao/web/wx/ctrl/AuthCtrl.java

@@ -47,20 +47,13 @@ public class AuthCtrl
47 47
 		String accessToken="";
48 48
 		String wxCode = para.get("code");
49 49
 
50
-//        String f = para.get("f");
51
-//        if (!Tools.isEmpty(f)) {
52
-//            openid=para.get("openid");
53
-//            if (!Tools.isEmpty(openid)) {
54
-//                session.setAttribute("openid", openid);
55
-//            }
56
-//        }
57
-
58 50
 		if(Tools.isEmpty(openid) && !GzhUtil.isEmpty(wxCode))
59 51
 		{
60 52
 			Map<String,String> m=GzhUtil.getOpenId(wxCode,Constants.appId,Constants.appSecret);
61 53
 			openid=m.get("openId");
62 54
 			accessToken=m.get("accessToken");
63 55
 			session.setAttribute("openid", openid);
56
+            session.setAttribute("openidForPay", openid);
64 57
 			session.setAttribute("accessToken", accessToken);
65 58
 		}
66 59
 		log.info("wxCode="+wxCode+",openid="+openid);
@@ -89,18 +82,12 @@ public class AuthCtrl
89 82
 				if(Tools.isEmpty(defaultdev))
90 83
 					defaultdev=cursn;
91 84
 				session.setAttribute("defaultdev", defaultdev);	// 默认设备
92
-				if(Tools.isEmpty(defaultdev)) {
85
+				/*if(Tools.isEmpty(defaultdev)) {
93 86
 					return new TextView("/device/getDevInfo.do");
94 87
 				} else {
95
-//                    if ("866162073362932".equals(defaultdev)) {
96
-//                        String url="http://xcwx.jimi.link/user/index.do?f=1&&sn=" + defaultdev + "&openid=" + openid;
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
-//                    }
102 88
                     return new TextView("/consumer/getPkgsByDevId.do");
103
-				}
89
+				}*/
90
+                return new TextView("/device/getDevInfo.do");
104 91
 			}
105 92
 		}
106 93
 		else
@@ -112,6 +99,79 @@ public class AuthCtrl
112 99
 			return new TextView("/activation.jsp");
113 100
 		}
114 101
 	}
102
+    @Path(value="/indexForOld.do")
103
+    public TextView indexForOld(Context context)
104
+    {
105
+        HttpSession session = context.getRequest().getSession();
106
+        Map<String, String> para = context.getParas();
107
+        log.info("para=="+para);
108
+        String cursn=para.get("sn");
109
+        session.setAttribute("cursn", cursn);//当前设备编号
110
+
111
+        String openid=para.get("openid");	// 获取用户微信openid
112
+        String accessToken="";
113
+        String wxCode = para.get("code");
114
+
115
+        if (Tools.isEmpty(openid)) {
116
+            para.forEach((k,v)->context.getRequest().setAttribute(k, v));
117
+            return new TextView("/auth/index.do");
118
+        }
119
+
120
+        session.setAttribute("openid", openid);
121
+        log.info("old openid="+openid);
122
+        para.put("openid", openid);
123
+
124
+        String openidNew="";
125
+        if(!GzhUtil.isEmpty(wxCode))
126
+        {
127
+            Map<String,String> m=GzhUtil.getOpenId(wxCode,Constants.appId,Constants.appSecret);
128
+            openidNew=m.get("openId");
129
+            accessToken=m.get("accessToken");
130
+            session.setAttribute("openidForPay", openidNew);
131
+            session.setAttribute("accessToken", accessToken);
132
+        }
133
+        log.info("wxCode="+wxCode+",openid="+openidNew);
134
+
135
+        GzhUtil.toM3Sign(para);
136
+        String u=Constants.m3IntAddr + "/user/wxIndex.do";
137
+        String result = GzhUtil.sendPost(u, para);
138
+        log.info("url="+u+",result="+result);
139
+        JSONObject resJson = JSONObject.parseObject(result);
140
+        int resCode = resJson.getIntValue("code");
141
+        if(resCode == 0)
142
+        {
143
+            JSONObject dataJson = resJson.getJSONObject("data");
144
+            String phonenum=dataJson.getString("phonenum");
145
+            if(Tools.isEmpty(phonenum))
146
+            {
147
+                context.getRequest().setAttribute("sn", cursn);
148
+                return new TextView("/activation.jsp");
149
+            }
150
+            else
151
+            {
152
+                session.setAttribute("appuid", dataJson.getString("appuid"));	// 用户ID
153
+                session.setAttribute("phonenum", phonenum);	// 用户账户
154
+                String defaultdev =dataJson.getString("defaultdev");
155
+                if(Tools.isEmpty(defaultdev))
156
+                    defaultdev=cursn;
157
+                session.setAttribute("defaultdev", defaultdev);	// 默认设备
158
+                /*if(Tools.isEmpty(defaultdev)) {
159
+                    return new TextView("/device/getDevInfo.do");
160
+                } else {
161
+                    return new TextView("/consumer/getPkgsByDevId.do");
162
+                }*/
163
+                return new TextView("/device/getDevInfo.do");
164
+            }
165
+        }
166
+        else
167
+        {
168
+            context.getRequest().setAttribute("sn", cursn);
169
+            String lt=DateTimeUtil.longtime();
170
+            lt=lt.substring(0,lt.length()-2);
171
+            context.getRequest().setAttribute("sign", CodecUtil.str2md5("znz"+cursn+"125226"+lt));
172
+            return new TextView("/activation.jsp");
173
+        }
174
+    }
115 175
 	
116 176
 	/**
117 177
 	 * 用户登陆界面,登陆后将微信号自动绑定到用户账号

Dosya farkı çok büyük olduğundan ihmal edildi
+ 332 - 15
com.sharemao.web.xw3/src/main/java/com/sharemao/web/wx/ctrl/PayCtrl.java


Dosya farkı çok büyük olduğundan ihmal edildi
+ 4 - 4
com.sharemao.web.xw3/src/main/java/com/sharemao/web/wx/syb/SybConstants.java


+ 166 - 0
com.sharemao.web.xw3/src/main/webapp/benefitSubmitAli.jsp

@@ -0,0 +1,166 @@
1
+<%@ page language="java" pageEncoding="UTF-8"%>
2
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
+<!DOCTYPE html>
4
+<html>
5
+
6
+<head>
7
+    <meta charset="UTF-8" />
8
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
9
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes" />
10
+    <meta name="renderer" content="webkit">
11
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
12
+    <meta name="applicable-device" content="mobile">
13
+    <meta name="format-detection" content="telephone=no" />
14
+    <meta http-equiv="title" content="" />
15
+    <title>会员权益</title>
16
+    <meta name="description" content="" />
17
+    <meta name="keywords" content="" />
18
+    <link rel="stylesheet" href="/static/css/animate.min.css" type="text/css" media="all" />
19
+	<link rel="stylesheet" href="/static/css/style.css?v=1" type="text/css" media="all" />
20
+	<link rel="stylesheet" href="/static/css/swiper-bundle.min.css" type="text/css" media="all" />
21
+    <script language="javascript" type="text/javascript" src="/static/js/jquery-3.6.0.min.js"></script>
22
+    <script language="javascript" type="text/javascript" src="/static/js/animate.min.js"></script>
23
+    <script language="javascript" type="text/javascript" src="/static/js/main.js"></script>
24
+	<script language="javascript" type="text/javascript" src="/static/js/swiper-bundle.min.js"></script>
25
+</head>
26
+
27
+<body class="topbg">
28
+<div class="box">
29
+    <div class="form-item">
30
+        <label>权益卡价格</label>
31
+        <div class="form-text">¥${amount }</div>
32
+    </div>
33
+<!--     <div class="form-item">
34
+        <label>优惠券选择</label>
35
+        <div class="form-text" onclick="ShowBox('PopCoupons')" id="coupons">暂无可用优惠券</div>
36
+    </div> -->
37
+    <div class="form-item">
38
+        <div class="form-text">
39
+            <img src="/static/img/icon-wallet.png" class="icon">
40
+            <span>钱包特惠支付(余额:¥${balance })</span>
41
+			<input id="ubalance" value="${balance }" type="hidden">
42
+        </div>
43
+        <div class="select">
44
+            <input type="radio" name="pay" value="balance" class="redcheck" id="WalletPay">
45
+        </div>
46
+    </div>
47
+    <div class="form-item">
48
+        <div class="form-text">
49
+            <img src="/static/img/icon-pay-weixin.png" class="icon">
50
+            <span>微信支付</span>
51
+        </div>
52
+        <div class="select">
53
+            <input type="radio" name="pay" value="wx" class="redcheck" id="pay" checked="">
54
+        </div>
55
+    </div>
56
+</div>
57
+<div class="apply-btn">
58
+    <button class="btn" id="pay-btn">立即支付 ¥${amount }</button>
59
+</div>
60
+<!--弹层-优惠券-->
61
+<div class='menu-mask' id="PopCoupons">
62
+    <div class="popbox animated fadeInUp">
63
+        <h2 class="tcenter">选择优惠券</h2>
64
+        <div class="popbox-con">
65
+            <div class="lite-card-select btn-coupons">
66
+                <div class="list">
67
+                    <div class="item">
68
+                        <div class="name" data="满1500减100" data-getprice="1500" data-price="100">满1500减100</div>
69
+                        <div class="allow"></div>
70
+                    </div>
71
+                    <div class="item">
72
+                        <div class="name" data="满500减50" data-getprice="500" data-price="50">满500减50</div>
73
+                        <div class="allow"></div>
74
+                    </div>
75
+                    <div class="item">
76
+                        <div class="name" data="满200减30" data-getprice="200" data-price="30">满200减30</div>
77
+                        <div class="allow"></div>
78
+                    </div>
79
+                    <div class="item">
80
+                        <div class="name" data="满100减10" data-getprice="100" data-price="10">满100减10</div>
81
+                        <div class="allow"></div>
82
+                    </div>
83
+                </div>
84
+            </div>
85
+        </div>
86
+        <div class="icon-close" onclick="CloseBox('PopCoupons')"></div>
87
+    </div>
88
+</div>
89
+<form class="form_wrap">
90
+	<input  type="hidden" name="amount" id="trxamt" value="${amount }"/>
91
+	<input  type="hidden" name="devid" id="devid"  value="${devid}"/>
92
+	<input  type="hidden" name="type" id="type"  value="3"/>
93
+	<input 	type="hidden" name="paytype" id="paytype" value="0" />
94
+	<input  type="hidden" name="speedpackid" id="speedpackid"  value="${speedpackid }"/>
95
+</form>
96
+
97
+<div class="mask"></div>
98
+<script>
99
+	var thumbSwiper = new Swiper(".benefit-list", {
100
+	    spaceBetween: 10,
101
+	    slidesPerView: "auto",
102
+	    freeMode: true,
103
+	    watchSlidesProgress: true,
104
+	});
105
+    document.addEventListener('DOMContentLoaded', function() {
106
+        const payButton = document.getElementById('pay-btn');
107
+
108
+        // 提交订单按钮事件
109
+        var isRequesting = false;
110
+        payButton.addEventListener('click', function(e) {
111
+        	if (isRequesting) return;
112
+			isRequesting = true;
113
+			$(".mask").show();
114
+			
115
+        	var ubalance=parseFloat($("#ubalance").val());
116
+        	var pkgprice=parseFloat($("#trxamt").val());
117
+			var input = $('.form_wrap').find('input,select'), param = {};
118
+            input.each(function(i,item){
119
+                item = $(item);
120
+                var vType = item.attr('vtype'), ind = 0;
121
+                param[item.attr('name')] = item.val();
122
+				//alert(item);
123
+            });
124
+            var paytype = $(".redcheck:checked").val();
125
+    		if(paytype == "wx") {
126
+				$.post('/mifi/buyYLPdts.do',param,function(res){
127
+	                $('.mask').hide();
128
+	                if(typeof(res) === 'string'){
129
+	                    res = JSON.parse(res);
130
+						//alert(res.pay_info);
131
+	                }
132
+					
133
+	                if(res.status !== "200"){
134
+	                    alert(res.msg);
135
+	                }else{
136
+                        location.href = res.pay_info;
137
+	                }
138
+					isRequesting = false;
139
+	            });
140
+    		} else {
141
+    			if(ubalance>=pkgprice) {
142
+					param['amount']=pkgprice;
143
+					$.post('/mifi/memPackRechargeToSpeedPack.do',param,function(res){
144
+					    $('.mask').hide();
145
+					    if(res == 'OK'){
146
+							alert("支付成功");
147
+							location.href = "/device/getDevInfo.do?sn="+$("#devid").val();
148
+					    } else {
149
+							alert(res);
150
+							if(res == '用户余额不足!'){
151
+								location.href = "/mifi/getMember.do";
152
+							}
153
+						}
154
+						isRequesting = false;
155
+					},'json');
156
+				} else {
157
+					alert("您的余额不足,请使用微信支付");
158
+					$('.mask').hide();
159
+					isRequesting = false;
160
+				}
161
+    		}
162
+        });
163
+    });
164
+</script>
165
+</body>
166
+</html>

+ 14 - 6
com.sharemao.web.xw3/src/main/webapp/consumer.jsp

@@ -224,17 +224,19 @@ document.querySelectorAll('.recharge-nav .item').forEach((item, index) => {
224 224
         swiper2.slideTo(index);
225 225
     });
226 226
 });
227
-$(function(){
228
-    setTimeout(function(){
229
-        alert("您好,在充值和使用过程中,遇到任何问题,麻烦联系下方客服帮助您快速解决处理。(服务时间:8:00-23:00)")
230
-    }, 1000);
231
-});
227
+
232 228
 </script>
233 229
 <script>
234 230
 //立即购买带参数
235 231
 function createOrder(){
232
+
233
+
234
+//var cursn = "${cursn}";
235
+//if(cursn!="866162073362932"){
236 236
 //	alert("亲,充值系统升级,可能导致无法充值,麻烦联系客服充值,联系客服有额外优惠。(服务时间:0:00-24:00)")
237
-//return;
237
+//    return;
238
+//}
239
+
238 240
     // 检查是否有选中的套餐
239 241
     var selectedPackage = $(".recharge-list li.cur");
240 242
     
@@ -276,6 +278,12 @@ function createOrder(){
276 278
 				},
277 279
 			});
278 280
 }
281
+
282
+    window.onload = function() {
283
+        setTimeout(function() {
284
+            alert("亲,充值套餐成功后,重启设备并稍等 2-3 分钟即可使用。有任何问题,可联系在线客服(8:00-23:00),祝您生活愉快、使用顺畅!");
285
+        }, 1000);
286
+    };
279 287
 </script>
280 288
 </body>
281 289
 </html>

+ 260 - 0
com.sharemao.web.xw3/src/main/webapp/memberali.jsp

@@ -0,0 +1,260 @@
1
+<%@ page language="java" pageEncoding="UTF-8"%>
2
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
+<!DOCTYPE html>
4
+<html>
5
+
6
+<head>
7
+    <meta charset="UTF-8" />
8
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
9
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes" />
10
+    <meta name="renderer" content="webkit">
11
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
12
+    <meta name="applicable-device" content="mobile">
13
+    <meta name="format-detection" content="telephone=no" />
14
+    <meta http-equiv="title" content="" />
15
+    <title>我的钱包</title>
16
+    <meta name="description" content="" />
17
+    <meta name="keywords" content="" />
18
+    <link rel="stylesheet" href="/static/css/animate.min.css" type="text/css" media="all" />
19
+    <link rel="stylesheet" href="/static/css/style.css?v=1" type="text/css" media="all" />
20
+	<link rel="stylesheet" href="/static/css/swiper-bundle.min.css" type="text/css" media="all" />
21
+	<script language="javascript" type="text/javascript" src="/static/js/jquery-3.6.0.min.js"></script>
22
+    <script language="javascript" type="text/javascript" src="/static/js/animate.min.js"></script>
23
+    <script language="javascript" type="text/javascript" src="/static/js/main.js"></script>
24
+	<script language="javascript" type="text/javascript" src="/static/js/swiper-bundle.min.js"></script>
25
+</head>
26
+
27
+<body class="topbg">
28
+<div class="box wallet-box">
29
+    <div class="wrap">
30
+        <div class="title">${phonenum}用户的钱包<div class="icon-logo"></div></div>
31
+        <div class="wallet-total">
32
+            <div class="item">
33
+                <div class="num">${jine}<c:if test="${empty jine}">0</c:if></div>
34
+                <div class="text">本金金额(元)</div>
35
+            </div>
36
+            <div class="item">
37
+                <div class="num">${zsong}<c:if test="${empty zsong}">0</c:if></div>
38
+                <div class="text">赠送金额(元)</div>
39
+            </div>
40
+            <div class="item">
41
+                <div class="num">${balance}<c:if test="${empty balance}">0</c:if></div>
42
+                <div class="text">总金额(元)</div>
43
+            </div>
44
+        </div>
45
+    </div>
46
+</div>
47
+<div class="box">
48
+    <div class="storedvalue-list">
49
+        <ul>
50
+        <c:forEach var="item" items="${cons}">
51
+            <li data-price="${item.jine}" data-id="${item.id}">
52
+                <div class="wrap">
53
+					<div class="title">余额到账<br>${item.jine+item.zsong}元</div>
54
+                    <div class="text">
55
+                        <div class="money"><strong>${item.jine}</strong>元</div>
56
+                        <div class="give">送${item.zsong}元</div>
57
+                    </div>
58
+                </div>
59
+            </li>
60
+           </c:forEach> 
61
+         </ul>
62
+    </div>
63
+</div>
64
+<div class="box benefit-box mb70">
65
+    <div class="benefit-list swiper">
66
+		<div class="swiper-wrapper">
67
+			<c:forEach var="item" items="${spkgs}" varStatus="loop">
68
+		        <div class="item swiper-slide ${loop.index==0?' cur':''}" data-price="${item.price}" data-speedpackid="${item.id}">
69
+		            <div class="wrap">
70
+		                <i class="icon"><img src="/static/img/icon-diamond${item.id%2+1}.png"></i>
71
+		                <div class="title">${item.name}</div>
72
+		                <div class="desc">${item.desc}</div>
73
+		                <div class="price">¥<strong>${item.price}</strong></div>
74
+		                <div class="valid">有效期:
75
+							<c:choose>
76
+				                <c:when test="${item.expiryDay == 0 }">1天</c:when>
77
+				                <c:when test="${item.expiryDay == 1 }">30天</c:when>
78
+				                <c:when test="${item.expiryDay == 2 }">90天</c:when>
79
+				                <c:when test="${item.expiryDay == 3 }">半年</c:when>
80
+				                <c:when test="${item.expiryDay == 4 }">1年</c:when>
81
+				                <c:when test="${item.expiryDay == 5 }">两年</c:when>
82
+				                <c:when test="${item.expiryDay == 6 }">7天</c:when>
83
+				                <c:when test="${item.expiryDay == 7 }">3年</c:when>
84
+				                <c:when test="${item.expiryDay == 8 }">3天</c:when>
85
+				                <c:when test="${item.expiryDay == 9 }">两天</c:when>
86
+				                <c:when test="${item.expiryDay == 11 }">7个月</c:when>
87
+				                <c:when test="${item.expiryDay == 12 }">14个月</c:when>
88
+				                <c:when test="${item.expiryDay == 18 }">15个月</c:when>
89
+				                <c:when test="${item.expiryDay == 13 }">两年半</c:when>
90
+				                <c:when test="${item.expiryDay == 14 }">3年8个月</c:when>
91
+				                <c:when test="${item.expiryDay == 15 }">4年 </c:when>
92
+				                <c:when test="${item.expiryDay == 16 }">5年</c:when>
93
+				                <c:when test="${item.expiryDay == 17 }">6年</c:when>
94
+				            </c:choose>
95
+						</div>
96
+		                <div class="select"><i></i></div>
97
+		            </div>
98
+		        </div>
99
+		      </c:forEach> 
100
+		  </div>
101
+    </div>
102
+</div>
103
+<form class="form_wrap" method="post" action="/sendYLPay.jsp" accept-charset="utf-8">
104
+<div class="bottom-paybox">
105
+    <div class="pay-box">
106
+        <div class="price">¥<strong id="total-price">0.00</strong></div>
107
+        <div class="agreement"><input type="checkbox" name="benefit" class="redcheck" id="agreement-check">已阅读并同意<a href="javascript:" onclick="ShowBox('PopTips')">《会员协议》</a></div>
108
+    </div>
109
+        <input  type="hidden" name="amount" id="trxamt" value="0"/>
110
+		<input  type="hidden" name="devid" id="devid"  value="${devid}"/>
111
+		<input  type="hidden" name="type" id="type"  value="2"/>
112
+		<input 	type="hidden" name="paytype" id="paytype" value="0" />
113
+		<input  type="hidden" name="memid" id="memid"  value="0"/>
114
+		<input  type="hidden" name="speedpackid" id="speedpackid"  value="${!empty spkgs?spkgs[0].id:''}"/>
115
+    
116
+    <div class="pay-btn" id="pay-btn">
117
+        <input type="submit" class="btn" value="支付" />
118
+    </div>
119
+</div>
120
+</form>
121
+<!--会员协议-->
122
+<div class='menu-mask' id="PopTips">
123
+    <div class="popbox animated fadeIn">
124
+        <div class="popbox-con">
125
+            <div class="recharge-ptitle">加速包购买须知</div>
126
+            <div class="recharge-tips">
127
+                <p>【1】加速包建立在设备当前接收信号值的基础上加速,会受终端、环境、基站等因素影响。</p>
128
+                <p>【2】加速包充值使用7天内不满意可申请免费退回,使用满7天以上不支持退回。</p>
129
+            </div>
130
+            <div class="icon-close" onclick="CloseBox('PopTips')"></div>
131
+        </div>
132
+    </div>
133
+</div>
134
+<div class="mask"></div>
135
+<script>
136
+	var thumbSwiper = new Swiper(".benefit-list", {
137
+	    spaceBetween: 10,
138
+	    slidesPerView: "auto",
139
+	    freeMode: true,
140
+	    watchSlidesProgress: true,
141
+	});
142
+    document.addEventListener('DOMContentLoaded', function() {
143
+        const storeditems = document.querySelectorAll('.storedvalue-list li');
144
+        const items = document.querySelectorAll('.benefit-list .item');
145
+        const totalPrice = document.getElementById('total-price');
146
+        const payButton = document.getElementById('pay-btn');
147
+
148
+		const trxamt = document.getElementById('trxamt');
149
+		const memid = document.getElementById('memid');
150
+		const speedpackid = document.getElementById('speedpackid');
151
+        
152
+        // 初始状态:所有选项都不选中
153
+        storeditems.forEach(item => {
154
+            item.classList.remove('cur');
155
+        });
156
+        totalPrice.textContent = '0.00';
157
+        
158
+        // 为每个选项添加点击事件
159
+        storeditems.forEach(item => {
160
+            item.addEventListener('click', function() {
161
+                // 切换选中状态
162
+                if (this.classList.contains('cur')) {
163
+                    this.classList.remove('cur');
164
+                } else {
165
+                     $('.storedvalue-list li').removeClass('cur');
166
+                    this.classList.add('cur');
167
+                }
168
+                
169
+                // 更新总价
170
+                updateTotalPrice();
171
+            });
172
+        });
173
+        items.forEach(item => {
174
+            item.addEventListener('click', function() {
175
+                // 切换选中状态
176
+                if (this.classList.contains('cur')) {
177
+                    this.classList.remove('cur');
178
+					speedpackid.value='';
179
+                } else {
180
+                    $('.benefit-list .item').removeClass('cur');
181
+                    this.classList.add('cur');
182
+					speedpackid.value=this.getAttribute('data-speedpackid');
183
+                }
184
+                // 更新总价
185
+                updateTotalPrice();
186
+            });
187
+        });
188
+        
189
+        // 更新总价函数
190
+        function updateTotalPrice() {
191
+            let total = 0;
192
+            storeditems.forEach(item => {
193
+                if (item.classList.contains('cur')) {
194
+					const price = parseFloat(item.getAttribute('data-price'));
195
+					const memidval = parseFloat(item.getAttribute('data-id'));
196
+                    total += price;
197
+					memid.value=memidval;
198
+                }
199
+            });
200
+            items.forEach(item => {
201
+                if (item.classList.contains('cur')) {
202
+                    const price = parseFloat(item.getAttribute('data-price'));
203
+                    total += price;
204
+                }
205
+            });
206
+            totalPrice.textContent = total.toFixed(2);
207
+            trxamt.value=total.toFixed(2);
208
+        }
209
+        
210
+        // 提交订单按钮事件
211
+        payButton.addEventListener('click', function(e) {
212
+			$(".mask").show();
213
+            const selectedItems = document.querySelectorAll('.storedvalue-list li.cur');
214
+            const isAgreed = document.getElementById('agreement-check').checked;
215
+            
216
+            if (selectedItems.length === 0) {
217
+                alert('请选择至少一个充值套餐!');
218
+				e.preventDefault();
219
+				$('.mask').hide();
220
+                return;
221
+            }
222
+            
223
+            if (!isAgreed) {
224
+                alert('请阅读并同意会员协议!');
225
+				e.preventDefault();
226
+				$('.mask').hide();
227
+                return;
228
+            }
229
+			
230
+			var input = $('.form_wrap').find('input,select'), param = {};
231
+            input.each(function(i,item){
232
+                item = $(item);
233
+                var vType = item.attr('vtype'), ind = 0;
234
+                param[item.attr('name')] = item.val();
235
+				//alert(item);
236
+            });
237
+			$.post('/mifi/toalipay.do',param,function(res){
238
+                $('.mask').hide();
239
+                if(typeof(res) === 'string'){
240
+                    res = JSON.parse(res);
241
+					//alert(res.pay_info);
242
+                }
243
+				
244
+                if(res.status !== "200"){
245
+                    alert(res.msg);
246
+                }else{
247
+                   location.href = res.pay_info;
248
+                }
249
+
250
+                
251
+            });
252
+			e.preventDefault();
253
+            
254
+            // 实际开发中这里会提交表单
255
+            //alert('订单提交成功!即将为您开通服务');
256
+        });
257
+    });
258
+</script>
259
+</body>
260
+</html>

+ 602 - 0
com.sharemao.web.xw3/src/main/webapp/pkgorderali.jsp

@@ -0,0 +1,602 @@
1
+<%@ page language="java" pageEncoding="UTF-8"%>
2
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
+<!DOCTYPE html>
4
+<html>
5
+
6
+<head>
7
+    <meta charset="UTF-8" />
8
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
9
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes" />
10
+    <meta name="renderer" content="webkit">
11
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
12
+    <meta name="applicable-device" content="mobile">
13
+    <meta name="format-detection" content="telephone=no" />
14
+    <meta http-equiv="title" content="" />
15
+    <title>购买套餐</title>
16
+    <meta name="description" content="" />
17
+    <meta name="keywords" content="" />
18
+    <link rel="stylesheet" href="/static/css/animate.min.css" type="text/css" media="all" />
19
+    <link rel="stylesheet" href="/static/css/style.css" type="text/css" media="all" />
20
+	<link rel="stylesheet" href="/static/css/swiper-bundle.min.css" type="text/css" media="all" />
21
+    <script language="javascript" type="text/javascript" src="/static/js/jquery-3.6.0.min.js"></script>
22
+    <script language="javascript" type="text/javascript" src="/static/js/animate.min.js"></script>
23
+    <script language="javascript" type="text/javascript" src="/static/js/main.js"></script>
24
+	<script language="javascript" type="text/javascript" src="/static/js/swiper-bundle.min.js"></script>
25
+	<style>
26
+	.form-wallet{
27
+        border-bottom: 1px solid #f0f0f0;
28
+    }
29
+    .form-wallet .form-item{
30
+        border-bottom: none;
31
+    }
32
+    .wallet-money{
33
+        display: none;
34
+        width: 100%;
35
+        padding: 2px 25px;
36
+        height:65px;
37
+        position: relative;
38
+    }
39
+    .wallet-money.show{
40
+        display: block;
41
+    }
42
+    .wallet-container{
43
+        display: block;
44
+        width: 100%;
45
+        min-height:45px;
46
+        position: relative;
47
+        list-style: none;
48
+        overflow: hidden;
49
+        z-index: 1;
50
+    }
51
+    .wallet-container .swiper-slide{
52
+        display: block;
53
+        width: 33.33%;
54
+        height: 45px;
55
+        position: relative;
56
+        border-radius: 8px;
57
+        overflow: hidden;
58
+        background-color: #FFFFFF;
59
+        border: 1px solid #e8e8e8;
60
+    }
61
+    .wallet-container .swiper-slide.cur{
62
+        border: 1px solid #cb5f1f;
63
+    }
64
+    .wallet-container .swiper-slide img{
65
+        display: block;
66
+        width: 100%;
67
+        max-height: auto;
68
+    }
69
+    .wallet-container .swiper-slide .sum{
70
+        position: relative;
71
+        display: block;
72
+        justify-content: center;
73
+        align-items: center;
74
+        width: 100%;
75
+        height: 100%;
76
+        font-size: 14px;
77
+        line-height: 2;
78
+        font-family: Arial;
79
+        font-weight: bold;
80
+        text-align: center;
81
+        padding-top: 0;
82
+    }
83
+    .wallet-container .swiper-slide .sum i{
84
+        display: block;
85
+        width: 100%;
86
+        font-size: 9px;
87
+        height: 15px;
88
+        line-height: 16px;
89
+        color: #FFF;
90
+        background-color: #dd170e;
91
+    }
92
+    .wallet-container .swiper-slide .sum::after{
93
+        content: '';
94
+        position: absolute;
95
+        top: 0;
96
+        left: 0;
97
+        display: none;
98
+        width: 100%;
99
+        height: 10px;
100
+        background-color: #dd170e;
101
+    }
102
+    .swiper-button-prev{
103
+        left: 0;
104
+    }
105
+    .swiper-button-next{
106
+        right: 0;
107
+    }
108
+    .swiper-button-prev,.swiper-button-next{
109
+        top: 17px;
110
+        margin-top: 0;
111
+        width: 15px;
112
+        height: 15px;
113
+        opacity: 0.6;
114
+    }
115
+    .swiper-button-disabled{
116
+        opacity: 0.2;
117
+    }
118
+    .swiper-button-next:after,.swiper-button-prev:after{
119
+        color: #929292;
120
+        font-size: 18px;
121
+    }
122
+    .swiper-button-next:hover:after,.swiper-button-prev:hover:after{
123
+        color: #FF6600;
124
+    }
125
+	</style>
126
+</head>
127
+
128
+<body>
129
+<div class="box">
130
+    <div class="recharge-top">
131
+        <div class="pic">
132
+            <img src="/static/img/img-recharge.png" alt="">
133
+        </div>
134
+        <div class="text">
135
+            <div class="title">${pkgInfo.pkgName}</div>
136
+            <div class="desc"></div>
137
+            <div class="price">¥<strong id="price">${pkgInfo.price}</strong></div>
138
+        </div>
139
+    </div>
140
+</div>
141
+<div class="box benefit-box">
142
+    <div class="benefit-list swiper">
143
+		<div class="swiper-wrapper">
144
+			<c:forEach var="item" items="${spkgs}" varStatus="loop">
145
+		        <div class="item swiper-slide ${loop.index==0?' cur':''}" data-price="${item.price}" data-speedpackid="${item.id}">
146
+		            <div class="wrap">
147
+		                <i class="icon"><img src="/static/img/icon-diamond${item.id%2+1}.png"></i>
148
+		                <div class="title">${item.name}</div>
149
+		                <div class="desc">${item.desc}</div>
150
+		                <div class="price">¥<strong>${item.price}</strong></div>
151
+		                <div class="valid">有效期:
152
+							<c:choose>
153
+				                <c:when test="${item.expiryDay == 0 }">1天</c:when>
154
+				                <c:when test="${item.expiryDay == 1 }">30天</c:when>
155
+				                <c:when test="${item.expiryDay == 2 }">90天</c:when>
156
+				                <c:when test="${item.expiryDay == 3 }">半年</c:when>
157
+				                <c:when test="${item.expiryDay == 4 }">1年</c:when>
158
+				                <c:when test="${item.expiryDay == 5 }">两年</c:when>
159
+				                <c:when test="${item.expiryDay == 6 }">7天</c:when>
160
+				                <c:when test="${item.expiryDay == 7 }">3年</c:when>
161
+				                <c:when test="${item.expiryDay == 8 }">3天</c:when>
162
+				                <c:when test="${item.expiryDay == 9 }">两天</c:when>
163
+				                <c:when test="${item.expiryDay == 11 }">7个月</c:when>
164
+				                <c:when test="${item.expiryDay == 12 }">14个月</c:when>
165
+				                <c:when test="${item.expiryDay == 18 }">15个月</c:when>
166
+				                <c:when test="${item.expiryDay == 13 }">两年半</c:when>
167
+				                <c:when test="${item.expiryDay == 14 }">3年8个月</c:when>
168
+				                <c:when test="${item.expiryDay == 15 }">4年 </c:when>
169
+				                <c:when test="${item.expiryDay == 16 }">5年</c:when>
170
+				                <c:when test="${item.expiryDay == 17 }">6年</c:when>
171
+				            </c:choose>
172
+						</div>
173
+		                <div class="select"><i></i></div>
174
+		            </div>
175
+		        </div>
176
+		      </c:forEach> 
177
+		  </div>
178
+    </div>
179
+</div>
180
+<div class="box">
181
+    <div class="form-item">
182
+        <label>充值设备号</label>
183
+        <div class="form-text">${devid}</div>
184
+    </div>
185
+    <div class="form-item">
186
+        <label>套餐有效期</label>
187
+        <div class="form-text">
188
+            <c:choose>
189
+                <c:when test="${pkgInfo.expiryDay == 0 }">1天</c:when>
190
+                <c:when test="${pkgInfo.expiryDay == 1 }">30天</c:when>
191
+                <c:when test="${pkgInfo.expiryDay == 2 }">90天</c:when>
192
+                <c:when test="${pkgInfo.expiryDay == 3 }">半年</c:when>
193
+                <c:when test="${pkgInfo.expiryDay == 4 }">1年</c:when>
194
+                <c:when test="${pkgInfo.expiryDay == 5 }">两年</c:when>
195
+                <c:when test="${pkgInfo.expiryDay == 6 }">7天</c:when>
196
+                <c:when test="${pkgInfo.expiryDay == 7 }">3年</c:when>
197
+                <c:when test="${pkgInfo.expiryDay == 8 }">3天</c:when>
198
+                <c:when test="${pkgInfo.expiryDay == 9 }">两天</c:when>
199
+                <c:when test="${pkgInfo.expiryDay == 11 }">7个月</c:when>
200
+                <c:when test="${pkgInfo.expiryDay == 12 }">14个月</c:when>
201
+                <c:when test="${pkgInfo.expiryDay == 18 }">15个月</c:when>
202
+                <c:when test="${pkgInfo.expiryDay == 13 }">两年半</c:when>
203
+                <c:when test="${pkgInfo.expiryDay == 14 }">3年8个月</c:when>
204
+                <c:when test="${pkgInfo.expiryDay == 15 }">4年 </c:when>
205
+                <c:when test="${pkgInfo.expiryDay == 16 }">5年</c:when>
206
+                <c:when test="${pkgInfo.expiryDay == 17 }">6年</c:when>
207
+            </c:choose>
208
+        </div>
209
+    </div>
210
+    <div class="form-item">
211
+        <label>全国通用</label>
212
+        <div class="form-text">移动、联通、电信三网合一自由切换</div>
213
+    </div>
214
+    <div class="form-item">
215
+        <label>套餐价格</label>
216
+        <div class="form-text">¥${pkgInfo.price}</div>
217
+    </div>
218
+    <div class="form-item" onclick="ShowBox('PopCoupons')">
219
+        <label>优惠券</label>
220
+        <div class="form-text" id="coupons">选择优惠券</div>
221
+    </div>
222
+</div>
223
+<div class="box mb70">
224
+	<c:if test="${pkgInfo.paytype == 1}">
225
+	    <div class="form-item">
226
+	        <div class="form-text">
227
+	            <img src="/static/img/icon-wallet.png" class="icon">
228
+	            <span>钱包特惠支付(余额:¥${balance})</span>
229
+	        </div>
230
+	        <div class="select">
231
+	            <input type="radio" name="pay" value="balance" class="redcheck" id="pay">
232
+	        </div>
233
+	    </div>
234
+		<div class="wallet-money show">
235
+            <div class="swiper-container wallet-container">
236
+                <div class="swiper-wrapper">
237
+					<c:forEach var="item" items="${cons}">
238
+						<div class="swiper-slide" data-id="${item.id}" data-jine="${item.jine}">
239
+                            <div class="sum">
240
+                                <i class="bar">赠送${item.zsong}元</i>
241
+                                <span>${item.jine}</span>
242
+                            </div>
243
+	                    </div>
244
+				    </c:forEach> 
245
+                </div>
246
+            </div>
247
+            <div class="swiper-button-next"></div>
248
+            <div class="swiper-button-prev"></div>
249
+        </div>
250
+	    <div class="form-item">
251
+	        <div class="form-text">
252
+	            <img src="/static/img/icon-pay-alipay.png" class="icon">
253
+	            <span>支付宝支付</span>
254
+	        </div>
255
+	        <div class="select">
256
+	            <input type="radio" name="pay" value="alipay" class="redcheck" id="pay">
257
+	        </div>
258
+	    </div>
259
+	    <div class="form-item">
260
+	        <div class="form-text">
261
+	            <img src="/static/img/icon-pay-weixin.png" class="icon">
262
+	            <span>微信支付,请联系在线客服充值</span>
263
+	        </div>
264
+	        <div class="select">
265
+	            
266
+	        </div>
267
+	    </div>
268
+	</c:if>
269
+	<c:if test="${pkgInfo.paytype == 2}">
270
+	    <div class="form-item">
271
+	        <div class="form-text">
272
+	            <img src="/static/img/icon-pay-alipay.png" class="icon">
273
+	            <span>支付宝支付</span>
274
+	        </div>
275
+	        <div class="select">
276
+	            <input type="radio" name="pay" value="alipay" class="redcheck" id="pay">
277
+	        </div>
278
+	    </div>
279
+	    <div class="form-item">
280
+	        <div class="form-text">
281
+	            <img src="/static/img/icon-pay-weixin.png" class="icon">
282
+	            <span>微信支付,请联系在线客服充值</span>
283
+	        </div>
284
+	        <div class="select">
285
+
286
+	        </div>
287
+	    </div>
288
+	</c:if>
289
+	<c:if test="${pkgInfo.paytype == 3}">
290
+	    <div class="form-item">
291
+	        <div class="form-text">
292
+	            <img src="/static/img/icon-wallet.png" class="icon">
293
+	            <span>钱包特惠支付(余额:¥${balance})</span>
294
+	        </div>
295
+	        <div class="select">
296
+	            <input type="radio" name="pay" value="balance" class="redcheck" id="pay">
297
+	        </div>
298
+	    </div>
299
+		<div class="wallet-money show">
300
+		    <div class="swiper-container wallet-container">
301
+		        <div class="swiper-wrapper">
302
+					<c:forEach var="item" items="${cons}">
303
+						<div class="swiper-slide" data-id="${item.id}" data-jine="${item.jine}">
304
+                            <div class="sum">
305
+                                <i class="bar">赠送${item.zsong}元</i>
306
+                                <span>${item.jine}</span>
307
+                            </div>
308
+		                </div>
309
+				    </c:forEach> 
310
+		        </div>
311
+		    </div>
312
+		    <div class="swiper-button-next"></div>
313
+		    <div class="swiper-button-prev"></div>
314
+		</div>
315
+	</c:if>
316
+</div>
317
+
318
+<input  type="hidden" id="usertotalbalance"  value="${balance}"/>
319
+
320
+<form class="form_wrap" method="post" accept-charset="utf-8">
321
+<div class="bottom-paybox">
322
+    <div class="price">¥<strong id="total-price">${pkgInfo.price}</strong></div>
323
+    <input  type="hidden" name="pkgid" id="pkgid" value="${pkgInfo.pkgid}"/>
324
+    <input  type="hidden" name="amount" id="trxamt" value="${pkgInfo.price}"/>
325
+    <input  type="hidden" name="devid" id="devid"  value="${devid}"/>
326
+	<input  type="hidden" name="type" id="type"  value="1"/>
327
+	<input type="hidden" name="paytype" id="paytype" value="0" />
328
+	<input  type="hidden" name="speedpackid" id="speedpackid"  value="${!empty spkgs?spkgs[0].id:''}"/>
329
+	
330
+	<input  type="hidden" id="pkgprice" name="pkgprice" value=""/>
331
+	<input  type="hidden" id="memberid" name="memberid" value=""/>
332
+	<input  type="hidden" id="opt" name="opt" value="${opt }"/>
333
+    <div class="pay-btn">
334
+        <input type="button" class="btn" value="支付" />
335
+    </div>
336
+</div>
337
+</form>
338
+<!--弹层-优惠券-->
339
+<div class='menu-mask' id="PopCoupons">
340
+    <div class="popbox animated fadeInUp">
341
+        <h2 class="tcenter">选择优惠券</h2>
342
+        <div class="popbox-con">
343
+            <div class="lite-card-select btn-coupons">
344
+                <div class="list">
345
+                <c:forEach var="item" items="${cons}">
346
+                    <div class="item">
347
+                        <div class="name" data="满${item.coupon}减${item.discount}" data-getprice="${item.coupon}" data-price="${item.discount}">满${item.coupon}减${item.discount}</div>
348
+                        <div class="allow"></div>
349
+                    </div>
350
+				</c:forEach>
351
+                </div>
352
+            </div>
353
+        </div>
354
+        <div class="icon-close" onclick="CloseBox('PopCoupons')"></div>
355
+    </div>
356
+</div>
357
+<div class="mask"></div>
358
+<script>
359
+
360
+	var mprice=888;
361
+	var pkgprice=888;
362
+	var ubalance;
363
+	
364
+	var thumbSwiper = new Swiper(".benefit-list", {
365
+	    spaceBetween: 10,
366
+	    slidesPerView: "auto",
367
+	    freeMode: true,
368
+	    watchSlidesProgress: true,
369
+	});
370
+	//钱包滑动
371
+    var swiper = new Swiper(".wallet-container", {
372
+       slidesPerGroup: 1,
373
+       slidesPerView: 3,
374
+       spaceBetween: 12,
375
+       navigation: {
376
+           nextEl: ".swiper-button-next",
377
+           prevEl: ".swiper-button-prev",
378
+       },
379
+    });
380
+    //选中
381
+    $(".wallet-container .swiper-slide").click(function() {
382
+       var obj = $(this);
383
+       var isClicked = obj.hasClass("cur") ? true : false;
384
+           $('.wallet-container .swiper-slide').removeClass('cur');
385
+       isClicked ? null : obj.addClass("cur");
386
+	   if(obj.hasClass("cur")) {
387
+			var mid = $(this).data("id");
388
+			var mjine = $(this).data("jine");
389
+			$("#memberid").val(mid);
390
+			mprice=parseFloat(mjine).toFixed(2)||0;
391
+			$("#total-price").html(mprice);
392
+	   } else {
393
+			$("#memberid").val('');
394
+			mprice=0;
395
+			$("#total-price").html(pkgprice);
396
+	   }
397
+	   
398
+    });
399
+    $(".benefit-list .item").click(function() {
400
+        var obj = $(this);
401
+        var isClicked = obj.hasClass("cur") ? true : false;
402
+        $(".benefit-list .item").removeClass("cur");
403
+        isClicked ? null : obj.addClass("cur");
404
+        calculateTotal(); // 统一调用计算总价函数
405
+		$("#speedpackid").val(obj.hasClass("cur")?obj.data("speedpackid"):'');
406
+    });
407
+    
408
+    $(".btn-coupons .item").click(function() {
409
+        var obj = $(this);
410
+        var isClicked = obj.hasClass("active") ? true : false;
411
+        $(".btn-coupons .item").removeClass("active");
412
+        isClicked ? null : obj.addClass("active");
413
+        if (isClicked) {
414
+            $("#coupons").text('选择优惠券');
415
+        } else {
416
+            $("#coupons").text($(this).find(".name").attr("data"));
417
+        }
418
+        var popCouponsElement = document.getElementById('PopCoupons');
419
+        setTimeout(function() {
420
+            if (popCouponsElement) {
421
+              popCouponsElement.style.display = "none";
422
+            }
423
+        }, 500);
424
+        calculateTotal(); // 统一调用计算总价函数
425
+    });
426
+	    
427
+    $(".redcheck").click(function() {
428
+        var ptype = $(this).val();
429
+		if(ptype == 'wx'){
430
+			$("#total-price").html(pkgprice);
431
+			$(".wallet-money").hide();
432
+		} else if(ptype == 'balance') {
433
+			$("#total-price").html(mprice);
434
+			$(".wallet-money").show();
435
+		}
436
+    });
437
+	
438
+    
439
+    // 统一的总价计算函数
440
+    function calculateTotal() {
441
+        var productPrice = parseFloat($("#price").text()); // 商品价格
442
+        var speedPackagePrice = 0; // 加速套餐价格
443
+        var couponPrice = 0; // 优惠券金额
444
+        var getPrice = 0; // 优惠券使用门槛
445
+        
446
+        // 获取选中的加速套餐价格
447
+        if ($(".benefit-list .item.cur").length > 0) {
448
+            speedPackagePrice = parseFloat($(".benefit-list .item.cur").attr("data-price"))||0;
449
+        }
450
+        
451
+        // 获取选中的优惠券金额
452
+        if ($("#PopCoupons .item.active").length > 0) {
453
+            getPrice = parseFloat($("#PopCoupons .item.active .name").attr("data-getprice"))||0;
454
+            couponPrice = parseFloat($("#PopCoupons .item.active .name").attr("data-price"))||0;
455
+            
456
+            // 检查是否满足优惠券使用条件
457
+            var totalPriceBeforeCoupon = productPrice + speedPackagePrice;
458
+            if (getPrice > totalPriceBeforeCoupon) {
459
+                couponPrice = 0;
460
+            }
461
+        }
462
+        
463
+        // 计算总价:商品价格 + 加速套餐价格 - 优惠券金额
464
+        var totalPrice = productPrice + speedPackagePrice - couponPrice;
465
+		pkgprice=totalPrice;
466
+		mprice=totalPrice;
467
+        $("#total-price").html(totalPrice.toFixed(2));
468
+        $("#trxamt").val(totalPrice.toFixed(2));
469
+		
470
+		if($(".redcheck:checked").val() == 'balance') {
471
+			var usertotalbalance = parseFloat($("#usertotalbalance").val());
472
+			ubalance=usertotalbalance;
473
+			if(usertotalbalance >= pkgprice) {
474
+				$(".wallet-money").hide();
475
+			} else {
476
+				$(".wallet-money").show();
477
+				$(".wallet-container .swiper-slide").each(function(i) {
478
+					var mjine = $(this).data("jine");
479
+					var fmjine = parseFloat(mjine);
480
+					if(fmjine>=pkgprice) {
481
+						$(this).trigger("click");
482
+						swiper.slideTo(i);
483
+					}
484
+				});
485
+			}
486
+		}
487
+    }
488
+    
489
+    // 页面加载完成后初始化计算一次总价
490
+    $(document).ready(function() {
491
+        calculateTotal();
492
+		
493
+		var isRequesting = false;
494
+		$(".pay-btn").click(function(e){
495
+			if (isRequesting) return;
496
+			isRequesting = true;
497
+			$(".mask").show();
498
+			
499
+			var input = $('.form_wrap').find('input,select'), param = {};
500
+            input.each(function(i,item){
501
+                item = $(item);
502
+                var vType = item.attr('vtype'), ind = 0;
503
+                param[item.attr('name')] = item.val();
504
+				//alert(item);
505
+            });
506
+			var paytype = $(".redcheck:checked").val();
507
+			if(paytype == "alipay") {
508
+				if (!navigator.userAgent.match(/MicroMessenger/i)) {
509
+					alert("请使用微信访问!");
510
+					$('.mask').hide();
511
+					isRequesting = false;
512
+					return;
513
+				}
514
+				param['amount']=pkgprice;
515
+				$.post('/mifi/toalipay.do',param,function(res){
516
+				    $('.mask').hide();
517
+				    if(typeof(res) === 'string'){
518
+				        res = JSON.parse(res);
519
+				    }
520
+					
521
+				    if(res.status !== "200"){
522
+				        alert(res.msg);
523
+				    }else{
524
+				        location.href = res.pay_info;
525
+				    }
526
+					isRequesting = false;			    
527
+				});
528
+			} else if(paytype == "balance") {
529
+				if(ubalance>=pkgprice) {
530
+					param['amount']=pkgprice;
531
+					$.post('/mifi/buyBalance.do',param,function(res){
532
+					    $('.mask').hide();
533
+					    if(res == 'OK'){
534
+							alert("支付成功");
535
+							location.href = "/device/getDevInfo.do?sn="+$("#devid").val();
536
+					    } else {
537
+							alert(res);
538
+							if(res == '用户余额不足!'){
539
+								location.href = "/mifi/getMember.do";
540
+							}
541
+						}
542
+						isRequesting = false;
543
+					},'json');
544
+				} else {
545
+					if (!navigator.userAgent.match(/MicroMessenger/i)) {
546
+						alert("请使用微信访问!");
547
+						$('.mask').hide();
548
+						isRequesting = false;
549
+						return;
550
+					}
551
+					param['amount']=mprice;
552
+					param['pkgprice']=pkgprice;
553
+					if(isNaN(pkgprice)){
554
+						location.reload();
555
+					}
556
+					param['type']=2;
557
+					var memberid = $("#memberid").val();
558
+					if(memberid==''||mprice==0){
559
+						alert("请选择金额!");
560
+						$('.mask').hide();
561
+						isRequesting = false;
562
+						return;
563
+					} else if(mprice<pkgprice){
564
+						alert("金额不足,请重新选择金额!");
565
+						$('.mask').hide();
566
+						isRequesting = false;
567
+						return;
568
+					} else {
569
+						$.post('/mifi/toalipay.do',param,function(res){
570
+						    $('.mask').hide();
571
+						    if(typeof(res) === 'string'){
572
+						        res = JSON.parse(res);
573
+						    }
574
+							
575
+						    if(res.status !== "200"){
576
+						        alert(res.msg);
577
+						    }else{
578
+								location.href = res.pay_info;
579
+						    }
580
+							isRequesting = false;			    
581
+						});
582
+					}
583
+				}
584
+			} else if(paytype == "wx"){
585
+			    alert("请联系在线客服充值!");
586
+                $('.mask').hide();
587
+                isRequesting = false;
588
+                return;
589
+			} else {
590
+                alert("请选择支付方式!");
591
+                $('.mask').hide();
592
+                isRequesting = false;
593
+                return;
594
+            }
595
+
596
+			
597
+		});
598
+    });
599
+</script>
600
+
601
+</body>
602
+</html>

BIN
com.sharemao.web.xw3/src/main/webapp/static/img/icon-pay-alipay.png