소스 검색

一些改动

baibx 4 달 전
부모
커밋
081c1999e4

+ 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>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 330 - 10
com.sharemao.web.xw3/src/main/java/com/sharemao/web/wx/ctrl/PayCtrl.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>

+ 8 - 2
com.sharemao.web.xw3/src/main/webapp/consumer.jsp

@@ -229,8 +229,14 @@ document.querySelectorAll('.recharge-nav .item').forEach((item, index) => {
229 229
 <script>
230 230
 //立即购买带参数
231 231
 function createOrder(){
232
-	alert("亲,充值系统升级,可能导致无法充值,麻烦联系客服充值,联系客服有额外优惠。(服务时间:0:00-24:00)")
233
-return;
232
+
233
+
234
+//var cursn = "${cursn}";
235
+//if(cursn!="866162073362932"){
236
+//	alert("亲,充值系统升级,可能导致无法充值,麻烦联系客服充值,联系客服有额外优惠。(服务时间:0:00-24:00)")
237
+//    return;
238
+//}
239
+
234 240
     // 检查是否有选中的套餐
235 241
     var selectedPackage = $(".recharge-list li.cur");
236 242
     

+ 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>

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

@@ -0,0 +1,579 @@
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="wx" class="redcheck" id="pay">
257
+	        </div>
258
+	    </div>
259
+	</c:if>
260
+	<c:if test="${pkgInfo.paytype == 2}">
261
+	    <div class="form-item">
262
+	        <div class="form-text">
263
+	            <img src="/static/img/icon-pay-alipay.png" class="icon">
264
+	            <span>支付宝支付</span>
265
+	        </div>
266
+	        <div class="select">
267
+	            <input type="radio" name="pay" value="wx" class="redcheck" id="pay">
268
+	        </div>
269
+	    </div>
270
+	</c:if>
271
+	<c:if test="${pkgInfo.paytype == 3}">
272
+	    <div class="form-item">
273
+	        <div class="form-text">
274
+	            <img src="/static/img/icon-wallet.png" class="icon">
275
+	            <span>钱包特惠支付(余额:¥${balance})</span>
276
+	        </div>
277
+	        <div class="select">
278
+	            <input type="radio" name="pay" value="balance" class="redcheck" id="pay">
279
+	        </div>
280
+	    </div>
281
+		<div class="wallet-money show">
282
+		    <div class="swiper-container wallet-container">
283
+		        <div class="swiper-wrapper">
284
+					<c:forEach var="item" items="${cons}">
285
+						<div class="swiper-slide" data-id="${item.id}" data-jine="${item.jine}">
286
+                            <div class="sum">
287
+                                <i class="bar">赠送${item.zsong}元</i>
288
+                                <span>${item.jine}</span>
289
+                            </div>
290
+		                </div>
291
+				    </c:forEach> 
292
+		        </div>
293
+		    </div>
294
+		    <div class="swiper-button-next"></div>
295
+		    <div class="swiper-button-prev"></div>
296
+		</div>
297
+	</c:if>
298
+</div>
299
+
300
+<input  type="hidden" id="usertotalbalance"  value="${balance}"/>
301
+
302
+<form class="form_wrap" method="post" accept-charset="utf-8">
303
+<div class="bottom-paybox">
304
+    <div class="price">¥<strong id="total-price">${pkgInfo.price}</strong></div>
305
+    <input  type="hidden" name="pkgid" id="pkgid" value="${pkgInfo.pkgid}"/>
306
+    <input  type="hidden" name="amount" id="trxamt" value="${pkgInfo.price}"/>
307
+    <input  type="hidden" name="devid" id="devid"  value="${devid}"/>
308
+	<input  type="hidden" name="type" id="type"  value="1"/>
309
+	<input type="hidden" name="paytype" id="paytype" value="0" />
310
+	<input  type="hidden" name="speedpackid" id="speedpackid"  value="${!empty spkgs?spkgs[0].id:''}"/>
311
+	
312
+	<input  type="hidden" id="pkgprice" name="pkgprice" value=""/>
313
+	<input  type="hidden" id="memberid" name="memberid" value=""/>
314
+	<input  type="hidden" id="opt" name="opt" value="${opt }"/>
315
+    <div class="pay-btn">
316
+        <input type="button" class="btn" value="支付" />
317
+    </div>
318
+</div>
319
+</form>
320
+<!--弹层-优惠券-->
321
+<div class='menu-mask' id="PopCoupons">
322
+    <div class="popbox animated fadeInUp">
323
+        <h2 class="tcenter">选择优惠券</h2>
324
+        <div class="popbox-con">
325
+            <div class="lite-card-select btn-coupons">
326
+                <div class="list">
327
+                <c:forEach var="item" items="${cons}">
328
+                    <div class="item">
329
+                        <div class="name" data="满${item.coupon}减${item.discount}" data-getprice="${item.coupon}" data-price="${item.discount}">满${item.coupon}减${item.discount}</div>
330
+                        <div class="allow"></div>
331
+                    </div>
332
+				</c:forEach>
333
+                </div>
334
+            </div>
335
+        </div>
336
+        <div class="icon-close" onclick="CloseBox('PopCoupons')"></div>
337
+    </div>
338
+</div>
339
+<div class="mask"></div>
340
+<script>
341
+
342
+	var mprice=888;
343
+	var pkgprice=888;
344
+	var ubalance;
345
+	
346
+	var thumbSwiper = new Swiper(".benefit-list", {
347
+	    spaceBetween: 10,
348
+	    slidesPerView: "auto",
349
+	    freeMode: true,
350
+	    watchSlidesProgress: true,
351
+	});
352
+	//钱包滑动
353
+    var swiper = new Swiper(".wallet-container", {
354
+       slidesPerGroup: 1,
355
+       slidesPerView: 3,
356
+       spaceBetween: 12,
357
+       navigation: {
358
+           nextEl: ".swiper-button-next",
359
+           prevEl: ".swiper-button-prev",
360
+       },
361
+    });
362
+    //选中
363
+    $(".wallet-container .swiper-slide").click(function() {
364
+       var obj = $(this);
365
+       var isClicked = obj.hasClass("cur") ? true : false;
366
+           $('.wallet-container .swiper-slide').removeClass('cur');
367
+       isClicked ? null : obj.addClass("cur");
368
+	   if(obj.hasClass("cur")) {
369
+			var mid = $(this).data("id");
370
+			var mjine = $(this).data("jine");
371
+			$("#memberid").val(mid);
372
+			mprice=parseFloat(mjine).toFixed(2)||0;
373
+			$("#total-price").html(mprice);
374
+	   } else {
375
+			$("#memberid").val('');
376
+			mprice=0;
377
+			$("#total-price").html(pkgprice);
378
+	   }
379
+	   
380
+    });
381
+    $(".benefit-list .item").click(function() {
382
+        var obj = $(this);
383
+        var isClicked = obj.hasClass("cur") ? true : false;
384
+        $(".benefit-list .item").removeClass("cur");
385
+        isClicked ? null : obj.addClass("cur");
386
+        calculateTotal(); // 统一调用计算总价函数
387
+		$("#speedpackid").val(obj.hasClass("cur")?obj.data("speedpackid"):'');
388
+    });
389
+    
390
+    $(".btn-coupons .item").click(function() {
391
+        var obj = $(this);
392
+        var isClicked = obj.hasClass("active") ? true : false;
393
+        $(".btn-coupons .item").removeClass("active");
394
+        isClicked ? null : obj.addClass("active");
395
+        if (isClicked) {
396
+            $("#coupons").text('选择优惠券');
397
+        } else {
398
+            $("#coupons").text($(this).find(".name").attr("data"));
399
+        }
400
+        var popCouponsElement = document.getElementById('PopCoupons');
401
+        setTimeout(function() {
402
+            if (popCouponsElement) {
403
+              popCouponsElement.style.display = "none";
404
+            }
405
+        }, 500);
406
+        calculateTotal(); // 统一调用计算总价函数
407
+    });
408
+	    
409
+    $(".redcheck").click(function() {
410
+        var ptype = $(this).val();
411
+		if(ptype == 'wx'){
412
+			$("#total-price").html(pkgprice);
413
+			$(".wallet-money").hide();
414
+		} else if(ptype == 'balance') {
415
+			$("#total-price").html(mprice);
416
+			$(".wallet-money").show();
417
+		}
418
+    });
419
+	
420
+    
421
+    // 统一的总价计算函数
422
+    function calculateTotal() {
423
+        var productPrice = parseFloat($("#price").text()); // 商品价格
424
+        var speedPackagePrice = 0; // 加速套餐价格
425
+        var couponPrice = 0; // 优惠券金额
426
+        var getPrice = 0; // 优惠券使用门槛
427
+        
428
+        // 获取选中的加速套餐价格
429
+        if ($(".benefit-list .item.cur").length > 0) {
430
+            speedPackagePrice = parseFloat($(".benefit-list .item.cur").attr("data-price"))||0;
431
+        }
432
+        
433
+        // 获取选中的优惠券金额
434
+        if ($("#PopCoupons .item.active").length > 0) {
435
+            getPrice = parseFloat($("#PopCoupons .item.active .name").attr("data-getprice"))||0;
436
+            couponPrice = parseFloat($("#PopCoupons .item.active .name").attr("data-price"))||0;
437
+            
438
+            // 检查是否满足优惠券使用条件
439
+            var totalPriceBeforeCoupon = productPrice + speedPackagePrice;
440
+            if (getPrice > totalPriceBeforeCoupon) {
441
+                couponPrice = 0;
442
+            }
443
+        }
444
+        
445
+        // 计算总价:商品价格 + 加速套餐价格 - 优惠券金额
446
+        var totalPrice = productPrice + speedPackagePrice - couponPrice;
447
+		pkgprice=totalPrice;
448
+		mprice=totalPrice;
449
+        $("#total-price").html(totalPrice.toFixed(2));
450
+        $("#trxamt").val(totalPrice.toFixed(2));
451
+		
452
+		if($(".redcheck:checked").val() == 'balance') {
453
+			var usertotalbalance = parseFloat($("#usertotalbalance").val());
454
+			ubalance=usertotalbalance;
455
+			if(usertotalbalance >= pkgprice) {
456
+				$(".wallet-money").hide();
457
+			} else {
458
+				$(".wallet-money").show();
459
+				$(".wallet-container .swiper-slide").each(function(i) {
460
+					var mjine = $(this).data("jine");
461
+					var fmjine = parseFloat(mjine);
462
+					if(fmjine>=pkgprice) {
463
+						$(this).trigger("click");
464
+						swiper.slideTo(i);
465
+					}
466
+				});
467
+			}
468
+		}
469
+    }
470
+    
471
+    // 页面加载完成后初始化计算一次总价
472
+    $(document).ready(function() {
473
+        calculateTotal();
474
+		
475
+		var isRequesting = false;
476
+		$(".pay-btn").click(function(e){
477
+			if (isRequesting) return;
478
+			isRequesting = true;
479
+			$(".mask").show();
480
+			
481
+			var input = $('.form_wrap').find('input,select'), param = {};
482
+            input.each(function(i,item){
483
+                item = $(item);
484
+                var vType = item.attr('vtype'), ind = 0;
485
+                param[item.attr('name')] = item.val();
486
+				//alert(item);
487
+            });
488
+			var paytype = $(".redcheck:checked").val();
489
+			if(paytype == "wx") {
490
+				if (!navigator.userAgent.match(/MicroMessenger/i)) {
491
+					alert("请使用微信访问!");
492
+					$('.mask').hide();
493
+					isRequesting = false;
494
+					return;
495
+				}
496
+				param['amount']=pkgprice;
497
+				$.post('/mifi/toalipay.do',param,function(res){
498
+				    $('.mask').hide();
499
+				    if(typeof(res) === 'string'){
500
+				        res = JSON.parse(res);
501
+				    }
502
+					
503
+				    if(res.status !== "200"){
504
+				        alert(res.msg);
505
+				    }else{
506
+				        location.href = res.pay_info;
507
+				    }
508
+					isRequesting = false;			    
509
+				});
510
+			} else if(paytype == "balance") {
511
+				if(ubalance>=pkgprice) {
512
+					param['amount']=pkgprice;
513
+					$.post('/mifi/buyBalance.do',param,function(res){
514
+					    $('.mask').hide();
515
+					    if(res == 'OK'){
516
+							alert("支付成功");
517
+							location.href = "/device/getDevInfo.do?sn="+$("#devid").val();
518
+					    } else {
519
+							alert(res);
520
+							if(res == '用户余额不足!'){
521
+								location.href = "/mifi/getMember.do";
522
+							}
523
+						}
524
+						isRequesting = false;
525
+					},'json');
526
+				} else {
527
+					if (!navigator.userAgent.match(/MicroMessenger/i)) {
528
+						alert("请使用微信访问!");
529
+						$('.mask').hide();
530
+						isRequesting = false;
531
+						return;
532
+					}
533
+					param['amount']=mprice;
534
+					param['pkgprice']=pkgprice;
535
+					if(isNaN(pkgprice)){
536
+						location.reload();
537
+					}
538
+					param['type']=2;
539
+					var memberid = $("#memberid").val();
540
+					if(memberid==''||mprice==0){
541
+						alert("请选择金额!");
542
+						$('.mask').hide();
543
+						isRequesting = false;
544
+						return;
545
+					} else if(mprice<pkgprice){
546
+						alert("金额不足,请重新选择金额!");
547
+						$('.mask').hide();
548
+						isRequesting = false;
549
+						return;
550
+					} else {
551
+						$.post('/mifi/toalipay.do',param,function(res){
552
+						    $('.mask').hide();
553
+						    if(typeof(res) === 'string'){
554
+						        res = JSON.parse(res);
555
+						    }
556
+							
557
+						    if(res.status !== "200"){
558
+						        alert(res.msg);
559
+						    }else{
560
+								location.href = res.pay_info;
561
+						    }
562
+							isRequesting = false;			    
563
+						});
564
+					}
565
+				}
566
+			} else {
567
+                alert("请选择支付方式!");
568
+                $('.mask').hide();
569
+                isRequesting = false;
570
+                return;
571
+            }
572
+
573
+			
574
+		});
575
+    });
576
+</script>
577
+
578
+</body>
579
+</html>

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