From 5f3cf501f9f6c216df17ee8af6618b55b537d21a Mon Sep 17 00:00:00 2001
From: yanghui <2536613402@qq.com>
Date: 星期五, 21 十月 2022 16:57:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into local_20221014

---
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java |  142 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 142 insertions(+), 0 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 ce443e9..edb9839 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,6 +19,7 @@
 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.*;
@@ -43,6 +44,8 @@
 @RequestMapping("/wx/")
 public class WxCallbackApi {
 
+    private static final String  SUCCESS="SUCCESS";
+
     @Resource
     private CommunityService communityService;
     @Resource
@@ -51,6 +54,9 @@
     private String file;
     @Resource
     private UserService userService;
+    @Resource
+    private ComBatteryCommodityOrderFeign commodityOrderFeign;
+
 
     @PostMapping("wxNotify")
     public void payCallback(HttpServletRequest request, HttpServletResponse response) {
@@ -202,6 +208,142 @@
 
     }
 
+    /**
+     * 电动车商城商品购买支付回调
+     * @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();
+    }
+
     @GetMapping("/settle")
     public R settle(String settleDate){
         return R.ok(umfPayUtil.settle(settleDate));

--
Gitblit v1.7.1