igl 6 месяцев назад
Родитель
Сommit
f1777f7e08

+ 5 - 0
vehicle-server/pom.xml

@@ -43,6 +43,11 @@
             <artifactId>framework-database</artifactId>
             <artifactId>framework-database</artifactId>
             <version>${framework-database.version}</version>
             <version>${framework-database.version}</version>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>com.chelvc.framework</groupId>
+            <artifactId>framework-wechat</artifactId>
+            <version>${framework-database.version}</version>
+        </dependency>
         <dependency>
         <dependency>
             <groupId>mysql</groupId>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <artifactId>mysql-connector-java</artifactId>

+ 28 - 4
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -16,6 +16,7 @@ import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
 import com.chelvc.cloud.vehicle.server.entity.*;
 import com.chelvc.cloud.vehicle.server.entity.*;
 import com.chelvc.cloud.vehicle.server.service.*;
 import com.chelvc.cloud.vehicle.server.service.*;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.context.SessionContextHolder;
+import com.chelvc.framework.common.exception.ResourceUnavailableException;
 import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.util.AssertUtils;
 import com.chelvc.framework.common.util.AssertUtils;
@@ -23,6 +24,9 @@ import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import com.chelvc.framework.redis.context.RedisContextHolder;
 import com.chelvc.framework.redis.context.RedisContextHolder;
+import com.chelvc.framework.wechat.WechatPayRequest;
+import com.chelvc.framework.wechat.WechatPaymentHandler;
+import com.chelvc.framework.wechat.WechatUnifiedOrder;
 import io.netty.util.HashedWheelTimer;
 import io.netty.util.HashedWheelTimer;
 import io.netty.util.Timeout;
 import io.netty.util.Timeout;
 import io.netty.util.Timer;
 import io.netty.util.Timer;
@@ -73,6 +77,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 
 
     private final ReservationService reservationService;
     private final ReservationService reservationService;
 
 
+    private final WechatPaymentHandler wechatPaymentHandler;
 
 
     // 定义字符池
     // 定义字符池
     private static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz";
     private static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz";
@@ -284,11 +289,27 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         deleteCartItemList(cartPromotionItemList, userId);
         deleteCartItemList(cartPromotionItemList, userId);
         //发送延迟消息取消订单
         //发送延迟消息取消订单
         sendDelayMessageCancelOrder(order.getId());
         sendDelayMessageCancelOrder(order.getId());
-        // todo  调用支付逻辑
-
+        //调用jsapi支付逻辑
+        WechatPayRequest request = new WechatPayRequest();
+        //request.setAmount(order.getPayAmount());
+        request.setAmount(new BigDecimal("0.01")); //测试,设置为
+        request.setComment("商品购买");
+        request.setOrder(String.valueOf(order.getId()));
+        String openid = userService.queryOpenid(userId);
+        if(openid == null){
+            throw new ResourceUnavailableException("账号未绑定微信,请联系客服");
+        }
+        request.setOpenid(openid);
+        WechatUnifiedOrder wechatUnifiedOrder = wechatPaymentHandler.unifiedorder("applet", request);
         Map<String, Object> result = new HashMap<>();
         Map<String, Object> result = new HashMap<>();
-        result.put("order", order);
-        result.put("orderItemList", orderItemList);
+        result.put("mode", wechatUnifiedOrder.getMode().name());
+        result.put("appid", wechatUnifiedOrder.getAppid());
+        result.put("sign", wechatUnifiedOrder.getSign());
+        result.put("timeStamp", wechatUnifiedOrder.getTimestamp());
+        result.put("nonce", wechatUnifiedOrder.getNonce());
+        result.put("prepayid", wechatUnifiedOrder.getPrepayid());
+        result.put("signType", wechatUnifiedOrder.getAlgorithm());
+        result.put("pack", wechatUnifiedOrder.getPack());
         return result;
         return result;
     }
     }
 
 
@@ -296,6 +317,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
     public Integer paySuccess(Long orderId, Integer payType) {
     public Integer paySuccess(Long orderId, Integer payType) {
         //修改订单支付状态
         //修改订单支付状态
         OmsOrder order = this.baseMapper.selectById(orderId);
         OmsOrder order = this.baseMapper.selectById(orderId);
+        if(order == null){
+            return 0;
+        }
         order.setStatus(1);
         order.setStatus(1);
         order.setPaymentTime(new Date());
         order.setPaymentTime(new Date());
         order.setPayType(payType);
         order.setPayType(payType);

+ 10 - 1
vehicle-server/src/main/resources/application-dev.yml

@@ -19,4 +19,13 @@ nacos:
 location:
 location:
   clients:
   clients:
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
-      channel: TENCENT
+      channel: TENCENT
+
+wechat:
+  payments:
+    - name: applet
+      mode: JSAPI
+      appid: wx593877b3c990b15c
+      mchid: 1692584316
+      mchkey: 5671c0f7c3a2463ab4f602f43f043ba6
+      callback: https://test.chelvc.com/api/order/applet/callback

+ 10 - 1
vehicle-server/src/main/resources/application-pre.yml

@@ -19,4 +19,13 @@ nacos:
 location:
 location:
   clients:
   clients:
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
-      channel: TENCENT
+      channel: TENCENT
+
+wechat:
+  payments:
+    - name: applet
+      mode: JSAPI
+      appid: wx593877b3c990b15c
+      mchid: 1692584316
+      mchkey: 5671c0f7c3a2463ab4f602f43f043ba6
+      callback: https://test.chelvc.com/api/order/applet/callback

+ 10 - 1
vehicle-server/src/main/resources/application-prod.yml

@@ -19,4 +19,13 @@ nacos:
 location:
 location:
   clients:
   clients:
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
-      channel: TENCENT
+      channel: TENCENT
+
+wechat:
+  payments:
+    - name: applet
+      mode: JSAPI
+      appid: wx593877b3c990b15c
+      mchid: 1692584316
+      mchkey: 5671c0f7c3a2463ab4f602f43f043ba6
+      callback: https://test.chelvc.com/api/order/applet/callback

+ 10 - 1
vehicle-server/src/main/resources/application-test.yml

@@ -19,4 +19,13 @@ nacos:
 location:
 location:
   clients:
   clients:
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
     - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
-      channel: TENCENT
+      channel: TENCENT
+
+wechat:
+  payments:
+    - name: applet
+      mode: JSAPI
+      appid: wx593877b3c990b15c
+      mchid: 1692584316
+      mchkey: 5671c0f7c3a2463ab4f602f43f043ba6
+      callback: https://test.chelvc.com/api/order/applet/callback

+ 2 - 1
vehicle-server/src/main/resources/application.yml

@@ -29,6 +29,7 @@ spring:
     nacos:
     nacos:
       discovery:
       discovery:
         namespace: ${spring.profiles.active}
         namespace: ${spring.profiles.active}
+        group: igl
   datasource:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     driver-class-name: com.mysql.cj.jdbc.Driver
     hikari:
     hikari:
@@ -44,4 +45,4 @@ mybatis-plus:
   mapper-locations: classpath:mapper/*.xml
   mapper-locations: classpath:mapper/*.xml
   global-config:
   global-config:
     db-config:
     db-config:
-      update-strategy: ignored
+      update-strategy: ignored