Browse Source

Accept Merge Request #10: (develop-wxl -> master)

Merge Request: 增加支付成功回调和查询支付结果的处理逻辑

Created By: @刘子麟
Accepted By: @刘子麟
URL: https://chuanghaikeji.coding.net/p/smarCampus/d/iHotel_student_houtai/git/merge/10
刘子麟 1 year atrás
parent
commit
02fd4f7f4f
1 changed files with 46 additions and 4 deletions
  1. 46 4
      src/main/java/com/template/controller/HouseOrderController.java

+ 46 - 4
src/main/java/com/template/controller/HouseOrderController.java

@@ -62,6 +62,8 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.*;
 
 
 import static com.template.common.utils.StrUtils.getUUIDBits;
 import static com.template.common.utils.StrUtils.getUUIDBits;
+import static com.wechat.pay.java.service.payments.model.Transaction.TradeStateEnum.NOTPAY;
+import static com.wechat.pay.java.service.payments.model.Transaction.TradeStateEnum.SUCCESS;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -1679,10 +1681,13 @@ public class HouseOrderController implements HouseOrderAPI {
     @Override
     @Override
     @Transactional(rollbackFor = {Exception.class})
     @Transactional(rollbackFor = {Exception.class})
     public CommonResult queryOrderById(String outTradeNo) throws Exception{
     public CommonResult queryOrderById(String outTradeNo) throws Exception{
+        Transaction transaction= null;
         HouseOrder one = houseOrderService.getOne(new QueryWrapper<HouseOrder>().eq("order_number",outTradeNo));
         HouseOrder one = houseOrderService.getOne(new QueryWrapper<HouseOrder>().eq("order_number",outTradeNo));
         PayRecord payRecord=payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id",one.getId()));
         PayRecord payRecord=payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id",one.getId()));
         if(payRecord==null||payRecord.getPayNo()==null){
         if(payRecord==null||payRecord.getPayNo()==null){
-            return CommonResult.ok("该订单尚未支付");
+            transaction.setTradeState(NOTPAY);
+            transaction.setTradeStateDesc("该订单尚未支付");
+            return CommonResult.ok(transaction);
         }
         }
         QueryOrderByOutTradeNoRequest queryOrderByIdRequest = new QueryOrderByOutTradeNoRequest();
         QueryOrderByOutTradeNoRequest queryOrderByIdRequest = new QueryOrderByOutTradeNoRequest();
         // 调用request.setXxx(val)设置所需参数,具体参数可见Request定义
         // 调用request.setXxx(val)设置所需参数,具体参数可见Request定义
@@ -1702,9 +1707,25 @@ public class HouseOrderController implements HouseOrderAPI {
                 .config(config)
                 .config(config)
                 .signType("RSA") // 不填默认为RSA
                 .signType("RSA") // 不填默认为RSA
                 .build();
                 .build();
-        Transaction transaction= null;
+
         try {
         try {
             transaction = service.queryOrderByOutTradeNo(queryOrderByIdRequest);
             transaction = service.queryOrderByOutTradeNo(queryOrderByIdRequest);
+            switch (transaction.getTradeState()){
+                case SUCCESS:
+                    payRecord.setIsSuccess(2);
+                    payRecord.setRemark(transaction.getTradeStateDesc());
+                    one.setOrderStatus("2");
+                    break;
+                case PAYERROR:
+                    payRecord.setRemark(transaction.getTradeStateDesc());
+                    payRecord.setIsSuccess(3);
+                    break;
+            }
+            boolean a=houseOrderService.updateById(one);
+            boolean b=payRecordService.updateById(payRecord);
+            if (!a||!b){
+                throw new Exception("更新支付状态失败");
+            }
             log.info("微信支付查询订单出参:"+transaction.toString());
             log.info("微信支付查询订单出参:"+transaction.toString());
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
@@ -1791,6 +1812,27 @@ public class HouseOrderController implements HouseOrderAPI {
         try {
         try {
             // 以支付通知回调为例,验签、解密并转换成 Transaction
             // 以支付通知回调为例,验签、解密并转换成 Transaction
             Transaction transaction = parser.parse(requestParam, Transaction.class);
             Transaction transaction = parser.parse(requestParam, Transaction.class);
+            PayRecord payRecord=payRecordService.getOne(new QueryWrapper<PayRecord>().eq("pay_no",transaction.getOutTradeNo()));
+            HouseOrder one = houseOrderService.getById(payRecord.getHouseOrderId());
+            switch (transaction.getTradeState()){
+                case SUCCESS:
+                    payRecord.setIsSuccess(2);
+                    payRecord.setRemark(transaction.getTradeStateDesc());
+                    one.setOrderStatus("2");
+                    break;
+                case PAYERROR:
+                    payRecord.setRemark(transaction.getTradeStateDesc());
+                    payRecord.setIsSuccess(3);
+                    break;
+                default:
+                    payRecord.setRemark(transaction.getTradeStateDesc());
+                    break;
+            }
+            boolean a=houseOrderService.updateById(one);
+            boolean b=payRecordService.updateById(payRecord);
+            if (!a||!b){
+                throw new Exception("更新支付状态失败");
+            }
             log.info("支付回调请求返回"+transaction.toString());
             log.info("支付回调请求返回"+transaction.toString());
             //回调成功业务没写
             //回调成功业务没写
         } catch (Exception e) {
         } catch (Exception e) {
@@ -2128,7 +2170,7 @@ public class HouseOrderController implements HouseOrderAPI {
                 String refund_no = UUID.randomUUID().toString();
                 String refund_no = UUID.randomUUID().toString();
                 refund_no = "R" + refund_no.replace("-", "");
                 refund_no = "R" + refund_no.replace("-", "");
 
 
-                //查看该订单是否支付
+                //查看该订单是否退款
                 LambdaQueryWrapper<RefundRecord> wrapperRr = new LambdaQueryWrapper<>();
                 LambdaQueryWrapper<RefundRecord> wrapperRr = new LambdaQueryWrapper<>();
                 wrapperRr.eq(RefundRecord::getHouseOrderId, houseOrder.getId());
                 wrapperRr.eq(RefundRecord::getHouseOrderId, houseOrder.getId());
                 RefundRecord refundRecord = refundRecordService.getOne(wrapperRr);
                 RefundRecord refundRecord = refundRecordService.getOne(wrapperRr);
@@ -2214,7 +2256,7 @@ public class HouseOrderController implements HouseOrderAPI {
                     return CommonResult.ok(h5Refund);
                     return CommonResult.ok(h5Refund);
                 }
                 }
             }
             }
-
+            houseOrder.setOrderStatus("9");
             houseOrderService.updateById(houseOrder);
             houseOrderService.updateById(houseOrder);
             houseNumberStateService.updateById(houseNumberState);
             houseNumberStateService.updateById(houseNumberState);
             return CommonResult.ok();
             return CommonResult.ok();