Ver Fonte

Merge branch 'order_time'

# Conflicts:
#	netflix-service/src/main/java/com/cyksj/service/wechat/WeChatService.java
zoujiajian há 3 anos atrás
pai
commit
af55fb7fa7

+ 1 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/UnifiedOrder.java

@@ -126,6 +126,7 @@ public class UnifiedOrder {
                 "&openid=" + this.openid +
                 "&out_trade_no=" + this.outTradeNo +
                 "&spbill_create_ip=" + this.spbillCreateIp +
+                "&time_expire=" + this.timeExpire +
                 "&total_fee=" + totalFee +
                 "&trade_type=JSAPI" +
                 "&key=" + shopKey;

+ 5 - 4
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -243,7 +243,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				weChatConfig.getDomain() + "applets/order/prepay/notify",
 				toWechatAttach,
 				"银河录像局",
-				tradeType
+				tradeType,
+				orderDon.getCreatedTime()
 		);
 
 		log.info("微信支付成功[end]");
@@ -269,7 +270,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				weChatConfig.getDomain() + "applets/order/pc/prepay/notify",
 				toWechatAttach,
 				"银河录像局",
-				tradeType
+				tradeType,
+				orderDon.getCreatedTime()
 		);
 
 		log.info("微信支付成功[end]");
@@ -828,7 +830,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	 * @return
 	 */
 	private AlipayRequest getAliAayRequest(Long orderId, String productCode) throws Exception {
-		DateTime now = DateTime.now();
 		OrderAttach attach = new OrderAttach();
 		attach.setO(orderId);
 		String body = Codec.DoBase64.custom()
@@ -859,7 +860,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			alipayTradePagePayModel.setSubject(goodsDon.getTitle());
 			alipayTradePagePayModel.setProductCode(productCode);
 			//5分钟订单失效时间
-			alipayTradePagePayModel.setTimeExpire(DateUtil.offsetMinute(now, 5).toString());
+			alipayTradePagePayModel.setTimeExpire(DateUtil.offsetMinute(orderDon.getCreatedTime(), 5).toString());
 			alipayTradePagePayModel.setQrPayMode("4");
 			alipayTradePagePayRequest.setBizModel(alipayTradePagePayModel);
 			return alipayTradePagePayRequest;

+ 2 - 5
netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java

@@ -16,7 +16,6 @@ import com.cyksj.model.dto.H5JsPayParams;
 import com.cyksj.model.entity.RegisterOrderDon;
 import com.cyksj.model.entity.SysConfig;
 import com.cyksj.model.entity.User;
-import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.request.RegisterReq;
 import com.cyksj.model.request.OrderAttach;
 import com.cyksj.redis.RedisService;
@@ -31,10 +30,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
 /**
  * @author chan
@@ -128,7 +124,8 @@ public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMap
                 weChatConfig.getDomain() + "applets/register/prepay/notify",
                 toWechatAttach,
                 "注册服务",
-                "JSAPI"
+                "JSAPI",
+                orderDon.getCreatedTime()
         );
 
         log.info("微信支付成功[end]");

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/wechat/WeChatService.java

@@ -4,6 +4,7 @@ package com.cyksj.service.wechat;
 import com.cyksj.model.dto.*;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.Map;
 
 public interface WeChatService {
@@ -42,7 +43,7 @@ public interface WeChatService {
      * /@param attach     传入订单id 在查询API和支付通知中原样返回 用于处理订单
      * @return h5调用微信js-sdk必要的参数
      */
-    H5JsPayParams getJsPayParams(String appid, String openid, Integer totalFee, String outTradeNo, String notifyUrl, String attach, String body, String tradeType) throws Exception;
+    H5JsPayParams getJsPayParams(String appid, String openid, Integer totalFee, String outTradeNo, String notifyUrl, String attach, String body, String tradeType, Date ExpiryTime) throws Exception;
 
 
     /* 微信签名算法 */

+ 7 - 7
netflix-service/src/main/java/com/cyksj/service/wechat/impl/WeChatServiceImpl.java

@@ -1,6 +1,5 @@
 package com.cyksj.service.wechat.impl;
 
-import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.cyksj.common.exception.BusinessRuntimeException;
@@ -27,6 +26,7 @@ import java.net.URLEncoder;
 import java.net.http.HttpRequest;
 import java.net.http.HttpResponse;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.Map;
 import java.util.Optional;
 
@@ -184,9 +184,8 @@ public class WeChatServiceImpl implements WeChatService {
 
 
     @Override
-    public H5JsPayParams getJsPayParams(String appid, String openid, Integer totalFee, String outTradeNo, String notifyUrl, String attach, String body, String tradeType) throws Exception {
+    public H5JsPayParams getJsPayParams(String appid, String openid, Integer totalFee, String outTradeNo, String notifyUrl, String attach, String body, String tradeType, Date expireTime) throws Exception {
         log.info("------------------- 调用微信h5支付 开始 -------------------");
-        DateTime now = DateTime.now();
         BaseWeChatConfig weChatConfigStrategy = WeChatFactory.getWeChatConfigStrategy(appid);
 
         // 拼接统一下单实体类
@@ -198,13 +197,14 @@ public class WeChatServiceImpl implements WeChatService {
                 .setNonceStr("chan.123")
                 .setNotifyUrl(notifyUrl)
                 .setOutTradeNo(outTradeNo)
+                //5分钟过期
+                .setTimeExpire(DateUtil.format(DateUtil.offsetMinute(expireTime, 5), "yyyyMMddHHmmss"))
                 .setSpbillCreateIp("127.0.0.1")
                 .setTotalFee(totalFee)
                 .setTradeType(tradeType);
-        if ("NATIVE".equals(tradeType)) {
-            //5分钟订单失效时间
-            order.setTimeExpire(DateUtil.format(DateUtil.offsetMinute(now, 5), "yyyyMMddHHmmss"));
-        } else order.setOpenid(openid);
+        if (!"NATIVE".equals(tradeType)) {
+            order.setOpenid(openid);
+        }
         String sign = Codec.DoDigest.custom()
                 .setAlgorithm(Codec.DoDigest.Algorithm.MD5)
                 .setStringData(order.getPrintln(tradeType, weChatConfigStrategy.getShopKey()))