From e0395c5454534e7cf657b10045d00e4042dc7e71 Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Mon, 28 Sep 2020 15:51:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/pay_master' into pay_master

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/alipay/AlipayController.java |   83 +++++++++++++++++++++++------------------
 1 files changed, 47 insertions(+), 36 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/alipay/AlipayController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/alipay/AlipayController.java
index 05a5fe7..d653cb6 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/alipay/AlipayController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/alipay/AlipayController.java
@@ -15,6 +15,7 @@
 import com.kidgrow.common.utils.StringUtils;
 import com.kidgrow.oprationcenter.alipay.AlipayProperties;
 import com.kidgrow.oprationcenter.model.SaasClientPay;
+import com.kidgrow.oprationcenter.service.AlipayService;
 import com.kidgrow.oprationcenter.service.ISaasClientPayService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -34,7 +35,7 @@
 @RestController
 @RequestMapping("alipay")
 @Api(tags = "支付宝的支付controller")
-public class AlipayController  {
+public class AlipayController {
 
     @Resource
     private AlipayClient alipayClient;
@@ -42,31 +43,33 @@
     private AlipayProperties alipayProperties;
     @Autowired
     private ISaasClientPayService saasClientPayService;
+    @Autowired
+    private AlipayService alipayService;
 
     @ApiOperation(value = "调用预支付的接口,生成二维码")
     @PostMapping("/precreate")
-    public ResultBody precreate(HttpServletResponse response) throws Exception{  //商户预创建支付订单,生成二维码
+    public ResultBody precreate(HttpServletResponse response) throws Exception {  //商户预创建支付订单,生成二维码
 
         String outTradeNo = UUID.randomUUID().toString().replaceAll("-", "");
         QueryWrapper queryWrapper = new QueryWrapper();
-        queryWrapper.eq("dia_id","1");
-        queryWrapper.eq("pay_status",0);
-        AlipayTradePrecreateModel model=new AlipayTradePrecreateModel();
+        queryWrapper.eq("dia_id", "1");
+        queryWrapper.eq("pay_status", 0);
+        AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
         model.setProductCode("FACE_TO_FACE_PAYMENT"); //销售产品码
         List<SaasClientPay> list = saasClientPayService.list(queryWrapper);
         if (!list.isEmpty()) {
             SaasClientPay saasClientPay = list.get(0);
             model.setOutTradeNo(outTradeNo);                   //商户订单号
             model.setSubject("海贼王");   //订单标题
-            model.setTotalAmount(Double.valueOf(saasClientPay.getPayPrice())/100+"");  //订单总金额
-        }else {
+            model.setTotalAmount(Double.valueOf(saasClientPay.getPayPrice()) / 100 + "");  //订单总金额
+        } else {
             model.setOutTradeNo(outTradeNo);                   //商户订单号
             model.setSubject("海贼王");   //订单标题
             model.setTotalAmount("0.01");  //订单总金额
             SaasClientPay saasClientPay = this.fengData(model);
             boolean b = saasClientPayService.saveOrUpdate(saasClientPay);
         }
-        AlipayTradePrecreateRequest request=new AlipayTradePrecreateRequest();
+        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
         request.setBizModel(model);
         //兼容pkcs1 编码;
         java.security.Security.addProvider(
@@ -74,64 +77,70 @@
         );
         request.setNotifyUrl(alipayProperties.getNotifyUrl());
         request.setReturnUrl(alipayProperties.getReturnUrl());
-        AlipayTradePrecreateResponse alipayTradePrecreateResponse=alipayClient.execute(request);
+        AlipayTradePrecreateResponse alipayTradePrecreateResponse = alipayClient.execute(request);
         if (StringUtils.isBlank(alipayTradePrecreateResponse.getQrCode())) {
             return ResultBody.failed().data("生成二维码失败");
         }
-        String content=alipayTradePrecreateResponse.getQrCode();
-        String base64 = QRCodeUtil.creatRrCode(content, 200, 200, 0).replaceAll("\n","").replaceAll("\r","");
+        String content = alipayTradePrecreateResponse.getQrCode();
+        String base64 = QRCodeUtil.creatRrCode(content, 200, 200, 0).replaceAll("\n", "").replaceAll("\r", "");
         System.out.println(base64);
         return ResultBody.ok().data(base64);
     }
+
     //数据封装
-    public SaasClientPay fengData(AlipayTradePrecreateModel model){
+    public SaasClientPay fengData(AlipayTradePrecreateModel model) {
         SaasClientPay saasClientPay = new SaasClientPay();
         saasClientPay.setPayPrice(1);
         saasClientPay.setOutTradeNo(model.getOutTradeNo());
         saasClientPay.setPayStatus(0);
         saasClientPay.setPayMethod(1);
         saasClientPay.setDiaId("1");
-        saasClientPay.setId( UUID.randomUUID().toString().replaceAll("-", ""));
+        saasClientPay.setId(UUID.randomUUID().toString().replaceAll("-", ""));
         saasClientPay.setCreateTime(new Date());
         return saasClientPay;
     }
+
     @ApiOperation(value = "取消订单,支付超时、支付结果未知是可撤销,超过24小时不可撤销-------暂时没有配置")
     @PostMapping("/cancel")
-    public ResultBody cancel() throws Exception{  //取消订单,支付超时、支付结果未知是可撤销,超过24小时不可撤销
-        AlipayTradeCancelModel model=new AlipayTradeCancelModel();
+    public ResultBody cancel() throws Exception {  //取消订单,支付超时、支付结果未知是可撤销,超过24小时不可撤销
+        AlipayTradeCancelModel model = new AlipayTradeCancelModel();
         model.setOutTradeNo("300");
 
-        AlipayTradeCancelRequest request=new AlipayTradeCancelRequest();
+        AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();
         request.setBizModel(model);
 
-        AlipayTradeCancelResponse response=alipayClient.execute(request);
+        AlipayTradeCancelResponse response = alipayClient.execute(request);
         return ResultBody.ok().data(response.getBody());
     }
 
     @ApiOperation(value = "trade_success状态下异步通知接口,端口异常的接口")
     @PostMapping("/notify")
-    public String notify(HttpServletRequest request) throws Exception{   //trade_success状态下异步通知接口
-        if (check(request.getParameterMap())){
+    public String notify(HttpServletRequest request) throws Exception {   //trade_success状态下异步通知接口
+        if (check(request.getParameterMap())) {
             System.out.println(request.getParameter("trade_status"));
             Map<String, String> requestMap = this.getRequestMap(request.getParameterMap());
             log.error("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
             log.error(requestMap.toString());
             log.error("eeeeeeeeeeeeeeeewwwwwwwwwwww:");
-            if(requestMap.get("trade_status").equals("TRADE_SUCCESS")){
+            if (requestMap.get("trade_status").equals("TRADE_SUCCESS")) {
                 log.error("wwwwwwwwwww");
+                //更新状态 out_trade_no
+                log.error("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
+                System.out.println("异步通知 " + Instant.now());
+                return alipayService.notify(requestMap);
+            }else {
+                return "fail";
             }
-            log.error("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
-            System.out.println("异步通知 "+ Instant.now());
-        }else {
+        } else {
             System.out.println("验签失败");
             return "fail";
         }
-        return "success";
     }
+
     @ApiOperation(value = "订单支付成功后同步返回地址")
     @PostMapping("/return")
-    public ResultBody returnUrl(HttpServletRequest request,Map<String,Object> map) throws Exception{  //订单支付成功后同步返回地址
-        if (check(request.getParameterMap())){
+    public ResultBody returnUrl(HttpServletRequest request, Map<String, Object> map) throws Exception {  //订单支付成功后同步返回地址
+        if (check(request.getParameterMap())) {
             Map<String, String> requestMap = this.getRequestMap(request.getParameterMap());
             log.error("wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww");
             log.error(request.toString());
@@ -139,15 +148,15 @@
             log.error(map.toString());
             log.error("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
             String trade_status = requestMap.get("trade_status");
-            if(StringUtils.isNotBlank(trade_status)){
+            if (StringUtils.isNotBlank(trade_status)) {
                 //支付成功
-                if(trade_status.equals("TRADE_SUCCESS")){
+                if (trade_status.equals("TRADE_SUCCESS")) {
                     //更新状态 out_trade_no
                     QueryWrapper queryWrapper = new QueryWrapper();
-                    queryWrapper.eq("out_trade_no",requestMap.get("out_trade_no"));
-                    queryWrapper.eq("pay_status",0);
+                    queryWrapper.eq("out_trade_no", requestMap.get("out_trade_no"));
+                    queryWrapper.eq("pay_status", 0);
                     List<SaasClientPay> list = saasClientPayService.list(queryWrapper);
-                    if(!list.isEmpty()){
+                    if (!list.isEmpty()) {
                         SaasClientPay saasClientPay = list.get(0);
                         saasClientPay.setPayTime(DateUtils.parseDate(requestMap.get("gmt_payment")));
                         saasClientPay.setPayStatus(2);
@@ -157,12 +166,13 @@
                 }
             }
             return ResultBody.ok().data("success");
-        }else {
+        } else {
             return ResultBody.failed().data("false");
         }
     }
-    private Map<String,String> getRequestMap(Map<String,String[]> requestParams){
-        Map<String,String> params = new HashMap<>();
+
+    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 = "";
@@ -171,11 +181,12 @@
                         : valueStr + values[i] + ",";
             }
             params.put(name, valueStr);
-            System.out.println(name+" ==> "+valueStr);
+            System.out.println(name + " ==> " + valueStr);
         }
         return params;
     }
-    private boolean check(Map<String,String[]> requestParams) throws Exception{  //对return、notify参数进行验签
+
+    private boolean check(Map<String, String[]> requestParams) throws Exception {  //对return、notify参数进行验签
         Map<String, String> requestMap = this.getRequestMap(requestParams);
         return AlipaySignature.rsaCheckV1(requestMap, alipayProperties.getAlipayPublicKey(),
                 alipayProperties.getCharset(), alipayProperties.getSignType()); //调用SDK验证签名

--
Gitblit v1.8.0