From b4ba29d8fb794a3a26162b1ed49fcf3d4003c5bc Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <279049017@qq.com> Date: Fri, 25 Sep 2020 15:55:33 +0800 Subject: [PATCH] 修改回调 --- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/alipay/AlipayController.java | 85 +++++++++++++++++++++++++----------------- 1 files changed, 51 insertions(+), 34 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..6331361 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 @@ -34,7 +34,7 @@ @RestController @RequestMapping("alipay") @Api(tags = "支付宝的支付controller") -public class AlipayController { +public class AlipayController { @Resource private AlipayClient alipayClient; @@ -45,28 +45,28 @@ @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 +74,79 @@ ); 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 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("out_trade_no", requestMap.get("out_trade_no")); + queryWrapper.eq("pay_status", 0); + List<SaasClientPay> list = saasClientPayService.list(queryWrapper); + if (!list.isEmpty()) { + SaasClientPay saasClientPay = list.get(0); + saasClientPay.setPayTime(DateUtils.parseDate(requestMap.get("gmt_payment"))); + saasClientPay.setPayStatus(2); + saasClientPay.setTradeNo(requestMap.get("trade_no")); + boolean b = saasClientPayService.saveOrUpdate(saasClientPay); + } } log.error("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"); - System.out.println("异步通知 "+ Instant.now()); - }else { + System.out.println("异步通知 " + Instant.now()); + } 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 +154,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 +172,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 +187,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