瀏覽代碼

挂号预约

‘chenzhilei’ 1 周之前
父節點
當前提交
db92d54494

+ 7 - 0
src/main/java/thyyxxk/wxservice_server/controller/WxApiController.java

@@ -94,6 +94,13 @@ public class WxApiController {
         return status;
     }
 
+    @PassToken
+    @PostMapping("/updateNongOrderStateCallback")
+    public ResultVo<Transaction.TradeStateEnum> updateNongOrderStateCallback(@RequestBody Map<String,String> map) {
+        ResultVo<Transaction.TradeStateEnum> status = service.updateNongOrderStateCallback(map);
+        return status;
+    }
+
     @PassToken
     @GetMapping("/updateNongOrderState")
     public ResultVo<Transaction.TradeStateEnum> updateNongOrderState(@RequestParam("tradeNo") String tradeNo) {

+ 3 - 0
src/main/java/thyyxxk/wxservice_server/dao/WxApiDao.java

@@ -109,6 +109,9 @@ public interface WxApiDao {
     @Select("select * from t_wechat_pay_order with(nolock) where trade_no=#{tradeNo}")
     WxPayOrder selectOrderByTradeNo(String tradeNo);
 
+    @Select("select * from t_wechat_pay_order with(nolock) where pay_order_id=#{payOrderId}")
+    WxPayOrder selectOrderByPayOrderId(String payOrderId);
+
     @Select("select order_type from t_wechat_pay_order with(nolock) where trade_no=#{tradeNo}")
     Integer selectOrderType(String tradeNo);
 

+ 23 - 1
src/main/java/thyyxxk/wxservice_server/service/WxApiService.java

@@ -182,6 +182,26 @@ public class WxApiService {
         }
     }
 
+    public ResultVo<Transaction.TradeStateEnum> updateNongOrderStateCallback(Map<String,String> map) {
+        System.out.println("进入订单支付状态同步,参数为,tradeNo="+map);
+        WxPayOrder order = dao.selectOrderByPayOrderId(map.get("payOrderId"));
+        if (order == null) {
+            return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
+        }
+        String url = nongApi + "NongPay/query?type=0&mchOrderNo="+order.getMchOrderNo();
+        NongPayResponse response = template.getForObject(url, NongPayResponse.class);
+        System.out.println("订单支付状态查询结果---------------------》"+response);
+        if (response.getCode() == 9003 && (Integer) response.getData().get("state") == 2) {
+            dao.updatePayStatusAndPayTime(order.getTradeNo(), Transaction.TradeStateEnum.SUCCESS,DateUtil.formatDatetime(new Date((Long)response.getData().get("successTime"))));
+            String successTime = DateUtil.formatDate(new Date((Long)response.getData().get("successTime")));
+            savePayResultService.saveAppointment(order, successTime);
+            System.out.println("进入订单支付状态同步结束---------------------》");
+            return ResultVoUtil.success(Transaction.TradeStateEnum.SUCCESS);
+        } else {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "网络服务错误!");
+        }
+    }
+
     public ResultVo<Transaction.TradeStateEnum> updateNongOrderState(String tradeNo) {
         System.out.println("进入订单支付状态同步,参数为,tradeNo="+tradeNo);
         WxPayOrder order = dao.selectOrderByTradeNo(tradeNo);
@@ -190,9 +210,11 @@ public class WxApiService {
         }
         String url = nongApi + "NongPay/query?type=0&mchOrderNo="+order.getMchOrderNo();
         NongPayResponse response = template.getForObject(url, NongPayResponse.class);
+        System.out.println("订单支付状态查询结果---------------------》"+response);
         if (response.getCode() == 9003 && (Integer) response.getData().get("state") == 2) {
             dao.updatePayStatusAndPayTime(order.getTradeNo(), Transaction.TradeStateEnum.SUCCESS,DateUtil.formatDatetime(new Date((Long)response.getData().get("successTime"))));
-            dao.alreadyPayed(tradeNo);
+            String successTime = DateUtil.formatDate(new Date((Long)response.getData().get("successTime")));
+            savePayResultService.saveAppointment(order, successTime);
             System.out.println("进入订单支付状态同步结束---------------------》");
             return ResultVoUtil.success(Transaction.TradeStateEnum.SUCCESS);
         } else {

+ 5 - 0
src/main/java/thyyxxk/wxservice_server/utils/DateUtil.java

@@ -14,6 +14,7 @@ import java.util.Date;
 @Slf4j
 public class DateUtil {
     private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
+    private static final String DATE = "yyyy-MM-dd";
 
     public static String today() {
         Date date = new Date();
@@ -25,6 +26,10 @@ public class DateUtil {
         return formatDatetime(date, DEFAULT_PATTERN);
     }
 
+    public static String formatDate(Date date) {
+        return formatDatetime(date, DATE);
+    }
+
     public static String formatDatetime(Date date, String pattern) {
         if (null == date) {
             date = new Date();