From bfbfe7d5fd6c90d5f7359762223ce4bd1cc7cfa1 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期一, 15 八月 2022 09:56:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/lyq_battery_shop' into diandongche

---
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java |  147 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 145 insertions(+), 2 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
index 1900544..02fcf80 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
@@ -19,9 +19,11 @@
 import com.umf.api.service.UmfService;
 import com.umf.api.service.UmfServiceImpl;
 import io.swagger.annotations.ApiOperation;
+import com.panzhihua.common.service.community.ComBatteryCommodityOrderFeign;
 import org.json.XML;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
@@ -43,6 +45,8 @@
 @RequestMapping("/wx/")
 public class WxCallbackApi {
 
+    private static final String  SUCCESS="SUCCESS";
+
     @Resource
     private CommunityService communityService;
     @Resource
@@ -51,6 +55,9 @@
     private String file;
     @Resource
     private UserService userService;
+    @Resource
+    private ComBatteryCommodityOrderFeign commodityOrderFeign;
+
 
     @PostMapping("wxNotify")
     public void payCallback(HttpServletRequest request, HttpServletResponse response) {
@@ -186,4 +193,140 @@
         }
 
     }
+
+    /**
+     * 电动车商城商品购买支付回调
+     * @param request   请求参数
+     * @param response  返回参数
+     */
+    @PostMapping("/batteryPayNotify")
+    public void batteryPayNotify(HttpServletRequest request, HttpServletResponse response) {
+        log.info("钱包充值微信支付回调start");
+        String inputLine = "";
+        String notityXml = "";
+        try {
+            while ((inputLine = request.getReader().readLine()) != null) {
+                notityXml += inputLine;
+            }
+            // 关闭流
+            request.getReader().close();
+            log.info("钱包充值微信回调内容信息:" + notityXml);
+            // 解析成Json
+            org.json.JSONObject xmlJson = XML.toJSONObject(notityXml);
+            if (StringUtils.isNotEmpty(xmlJson.toString())) {
+                JSONObject resultData = JSON.parseObject(xmlJson.get("xml").toString());
+                // 成功支付订单
+                if (SUCCESS.equals(resultData.getString("result_code")) && SUCCESS.equals(resultData.getString("result_code"))){
+                    WxPayNotifyOrderDTO notifyOrderDTO = getWxNotify(resultData);
+
+                    // 根据订单号修改订单信息
+                    commodityOrderFeign.batteryPayNotify(notifyOrderDTO);
+                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
+                    PrintWriter writer = response.getWriter();
+                    // 返回
+                    writer.print(getWxSuccessString());
+                } else {// 未成功支付订单
+                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
+                    PrintWriter writer = response.getWriter();
+                    // 返回
+                    writer.print(getWxFailString());
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @PostMapping("/batteryActivityPayNotify")
+    public void batteryActivityPayNotify(HttpServletRequest request, HttpServletResponse response) {
+        log.info("购买活动商品微信支付回调start");
+        String inputLine = "";
+        String notityXml = "";
+        try {
+            while ((inputLine = request.getReader().readLine()) != null) {
+                notityXml += inputLine;
+            }
+            // 关闭流
+            request.getReader().close();
+            log.info("购买活动商品微信回调内容信息:" + notityXml);
+            // 解析成Json
+            org.json.JSONObject xmlJson = XML.toJSONObject(notityXml);
+            if (StringUtils.isNotEmpty(xmlJson.toString())) {
+                JSONObject resultData = JSON.parseObject(xmlJson.get("xml").toString());
+                // 成功支付订单
+                if (SUCCESS.equals(resultData.getString("result_code")) && SUCCESS.equals(resultData.getString("result_code"))){
+                    WxPayNotifyOrderDTO notifyOrderDTO = getWxNotify(resultData);
+
+                    // 根据订单号修改订单信息
+                    commodityOrderFeign.batteryActivityPayNotify(notifyOrderDTO);
+                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
+                    PrintWriter writer = response.getWriter();
+                    // 返回
+                    writer.print(getWxSuccessString());
+                } else {// 未成功支付订单
+                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
+                    PrintWriter writer = response.getWriter();
+                    // 返回
+                    writer.print(getWxFailString());
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 将微信支付回调的请求参数转义为对象
+     * @param resultData    微信支付回调请求参数
+     * @return  转义为支付请求参数
+     */
+    private WxPayNotifyOrderDTO getWxNotify(JSONObject resultData){
+        WxPayNotifyOrderDTO notifyOrderDTO = new WxPayNotifyOrderDTO();
+        notifyOrderDTO.setResult(resultData.toJSONString());
+        // 订单号
+        String orderTradeNo = resultData.getString("out_trade_no");
+        notifyOrderDTO.setOrderTradeNo(orderTradeNo);
+        // 微信支付订单号
+        String wxTradeNo = resultData.getString("transaction_id");
+        notifyOrderDTO.setWxTradeNo(wxTradeNo);
+        // 订单金额
+        String totalFee = resultData.getString("total_fee");
+        notifyOrderDTO.setTotalFee(totalFee);
+        // 支付完成时间
+        String payTime = resultData.getString("time_end");
+        notifyOrderDTO.setPayTime(payTime);
+        // 现金支付金额
+        String cashFee = resultData.getString("cash_fee");
+        notifyOrderDTO.setCashFee(cashFee);
+        //附加数据
+        String attach = resultData.getString("attach");
+        notifyOrderDTO.setAttach(attach);
+        return notifyOrderDTO;
+    }
+
+    /**
+     * 封装微信成功返回值
+     * @return  成功返回值
+     */
+    private String getWxSuccessString(){
+        StringBuffer buffer = new StringBuffer();
+        buffer.append("<xml>");
+        buffer.append("<return_code>SUCCESS</return_code>");
+        buffer.append("<return_msg>OK</return_msg>");
+        buffer.append("</xml>");
+        return buffer.toString();
+    }
+
+    /**
+     * 封装微信失败返回值
+     * @return  失败返回值
+     */
+    private String getWxFailString(){
+        StringBuffer buffer = new StringBuffer();
+        buffer.append("<xml>");
+        buffer.append("<return_code>FAIL</return_code>");
+        buffer.append("<return_msg>FAIL</return_msg>");
+        buffer.append("</xml>");
+        return buffer.toString();
+    }
 }

--
Gitblit v1.7.1