From 001ab4186873c76ac1e6f97f8e02b6980ac8eb2a Mon Sep 17 00:00:00 2001
From: bingbing <zhaobingliang@aliyun.com>
Date: Wed, 28 Oct 2020 19:00:22 +0800
Subject: [PATCH] 回退

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/weixin/WxController.java |  120 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 67 insertions(+), 53 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/weixin/WxController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/weixin/WxController.java
index 3a2ed62..ba7f14a 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/weixin/WxController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/weixin/WxController.java
@@ -1,29 +1,29 @@
 package com.kidgrow.oprationcenter.controller.weixin;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import cn.hutool.http.HttpUtil;
 import com.kidgrow.common.model.ResultBody;
-import com.kidgrow.common.utils.DateUtils;
 import com.kidgrow.common.utils.QRCodeUtil;
 import com.kidgrow.common.utils.StringUtils;
-import com.kidgrow.oprationcenter.config.weixin.MyConfig;
-import com.kidgrow.oprationcenter.config.weixin.WXPay;
-import com.kidgrow.oprationcenter.config.weixin.WXPayUtil;
-import com.kidgrow.oprationcenter.config.weixin.WeiXinOfficPayProperties;
 import com.kidgrow.oprationcenter.model.SaasClientPay;
 import com.kidgrow.oprationcenter.service.ISaasClientPayService;
+import com.kidgrow.oprationcenter.service.WxService;
+import com.kidgrow.oprationcenter.weixin.MyConfig;
+import com.kidgrow.oprationcenter.weixin.WXPay;
+import com.kidgrow.oprationcenter.weixin.WXPayUtil;
+import com.kidgrow.oprationcenter.weixin.WeiXinOfficPayProperties;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 import java.util.*;
 
 
@@ -40,8 +40,22 @@
     ISaasClientPayService iSaasClientPayService;
     @Resource
     WeiXinOfficPayProperties weiXinOfficPayProperties;
+    @Autowired
+    WxService wxService;
+    @Value("${wechat.miniapp.appid}")
+    private String APPID;
+    @Value("${wechat.miniapp.secret}")
+    private String SECRET;
+    @Value("${wechat.apiUrl}")
+    private String APIURL;
 
-    @ApiOperation(value = "保存")
+    /**
+     * 测试微信的预支付接口
+     * @param map
+     * @return
+     * @throws Exception
+     */
+    @ApiOperation(value = "测试微信的预支付接口")
     @PostMapping("pay")
     public ResultBody save(@RequestBody Map<String,Object> map) throws Exception {
         Long hospitalId = MapUtils.getLong(map, "hospitalId");
@@ -53,13 +67,14 @@
         if (doctorId!=null) {
             return ResultBody.failed().data("请输入医生id");
         }
+
         if (diaId!=null) {
             return ResultBody.failed().data("请输入诊断记录ID");
         }
         Map<String,String> jsonObject=new HashMap<>();
         Map<String,Object> mapto=new HashMap<>();
         jsonObject.put("body","腾讯");//商品描述
-        jsonObject.put("out_trade_no","20150806123434");//商户订单号
+        jsonObject.put("out_trade_no",UUID.randomUUID().toString().replaceAll("-",""));//商户订单号
         jsonObject.put("total_fee","1");//标价金额
         jsonObject.put("spbill_create_ip","192.168.2.240");//终端IP
 //        jsonObject.put("notify_url",myConfig.getPayNotifyUrl());//通知地址
@@ -76,9 +91,6 @@
         }
         SaasClientPay saasClientPay=new SaasClientPay();
         saasClientPay.setId(UUID.randomUUID().toString().replaceAll("_", ""));
-        saasClientPay.setCreateHospitalDepartment("");
-        saasClientPay.setCreateHospitalDepartid("");
-        saasClientPay.setCreateHospitalId(Long.valueOf(1L));
         saasClientPay.setPayPrice(1);
         saasClientPay.setCreateHospitalName("");
         saasClientPay.setOutTradeNo(jsonObject.get("out_trade_no"));
@@ -86,52 +98,54 @@
         saasClientPay.setPayStatus(0);
         saasClientPay.setPayMethod(0);
         saasClientPay.setDiaId("1");
+        saasClientPay.setCreateTime(new Date());
         boolean save = iSaasClientPayService.saveOrUpdate(saasClientPay);
-        String s = QRCodeUtil.creatRrCode(resultStr, 200, 200, 0);
+        String s = QRCodeUtil.creatRrCode(resultStr, 200, 200, 0).replaceAll("\n","").replaceAll("\r","");
         return ResultBody.ok().data(s);
     }
+
+    /**
+     * 微信的回调接口
+     * @param request
+     * @param response
+     * @return
+     * @throws Exception
+     */
     @RequestMapping("/callback")
-    public void OrderCallBack(HttpServletRequest request, HttpServletResponse response,Map<String,Object> map) throws Exception {
-        Map<String, String> requestMap = this.getRequestMap(request.getParameterMap());
-        log.error("wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww");
-        log.error(requestMap.toString());
-        log.error("wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww");
-        log.error(map.toString());
-        log.error("eeeeeeeeeeeeeeeeeeeeee");
-        if(WXPayUtil.isSignatureValid(requestMap, "GSFcX6WdgRTAS6154EW14WE3SGBSER49")){
-            //支付成功
-            if(requestMap.get("result_code").equals("SUCCESS")){
-                //更新状态 out_trade_no
-                QueryWrapper queryWrapper = new QueryWrapper();
-                queryWrapper.eq("out_trade_no",requestMap.get("out_trade_no"));
-                queryWrapper.eq("pay_status",0);
-                List<SaasClientPay> list = iSaasClientPayService.list(queryWrapper);
-                if(!list.isEmpty()){
-                    SaasClientPay saasClientPay = list.get(0);
-                    saasClientPay.setPayTime(DateUtils.parseDate(requestMap.get("time_end")));
-                    saasClientPay.setPayStatus(2);
-                    saasClientPay.setTradeNo(requestMap.get("transaction_id"));
-                    boolean b = iSaasClientPayService.saveOrUpdate(saasClientPay);
-                }
-            }
-        }else {
-            System.out.println("验签失败");
+    public String  OrderCallBack(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        InputStream inStream = request.getInputStream();
+        ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int len = 0;
+        while ((len = inStream.read(buffer)) != -1) {
+            outSteam.write(buffer, 0, len);
         }
+        String resultxml = new String(outSteam.toByteArray(), "utf-8");
+        Map<String, String> requestMap = WXPayUtil.xmlToMap(resultxml);
+        String callback = wxService.callback(requestMap);
+        return  callback;
     }
-    private Map<String,String> getRequestMap(Map<String,String[]> requestParams){
-        Map<String,String> params = new HashMap<>();
-        for (String name : requestParams.keySet()) {
-            String[] values = requestParams.get(name);
-            String valueStr = "";
-            for (int i = 0; i < values.length; i++) {
-                valueStr = (i == values.length - 1) ? valueStr + values[i]
-                        : valueStr + values[i] + ",";
-            }
-            params.put(name, valueStr);
-            System.out.println(name+" ==> "+valueStr);
+
+    /**
+     * 公众号或者小程序获取 openid
+     * @param code
+     * @return
+     */
+    @GetMapping("/getOpenId")
+    public ResultBody getOpenId(@RequestParam("code")String code){
+        if (StringUtils.isBlank(code)) {
+            return ResultBody.failed("请输入code");
         }
-        return params;
+        Map<String,Object> map=new HashMap<>();
+        map.put("appid",APPID);
+        map.put("secret",SECRET);
+        map.put("js_code",code);
+        map.put("grant_type","authorization_code");
+        String s = HttpUtil.get(APIURL + "/sns/jscode2session?", map);
+        return ResultBody.ok().data(s);
     }
+
+
     public static void main(String[] args) throws Exception {
         WxController weixinController=new WxController();
         Map<String,Object> map=null;

--
Gitblit v1.8.0