From 5783656f0cd2f9424d5a1026042596863741a34a Mon Sep 17 00:00:00 2001 From: yuyang <2265829957@qq.com> Date: Mon, 27 Sep 2021 20:11:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/web/domain/AjaxResult.java | 10 -- .../mapper/XhpcChargingStationMapper.xml | 3 +- .../XhpcHistoryOrderController.java | 104 ++++++++++++----- xhpc-modules/xhpc-payment/pom.xml | 6 + .../controller/AlipayPaymentController.java | 106 +++++++++++++----- .../src/main/resources/bootstrap.yml | 8 +- .../src/main/resources/bootstrap.yml | 4 +- 7 files changed, 171 insertions(+), 70 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/web/domain/AjaxResult.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/web/domain/AjaxResult.java index 5c4cfd9b..14b46284 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/web/domain/AjaxResult.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/web/domain/AjaxResult.java @@ -93,16 +93,6 @@ public class AjaxResult extends HashMap return AjaxResult.success("操作成功", data); } - /** - * 返回成功消息 - * - * @param msg 返回内容 - * @return 成功消息 - */ - public static AjaxResult success(String msg) - { - return AjaxResult.success(msg, null); - } /** * 返回成功消息 diff --git a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml index c8ca39f0..1782603b 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml +++ b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml @@ -270,8 +270,9 @@ and ra.rate_id = ( select rate_id from xhpc_rate_time where charging_station_id = cs.charging_station_id + and cs.rate_model_id = rate_model_id and start_time <= #{date} - and end_time >= #{date} + and replace(end_time, '00:00:00', '24:00:00') >= #{date} and status = 0 and del_flag = 0)) money, (select GROUP_CONCAT(dict_value) from xhpc_dict_biz where FIND_IN_SET(dict_key,cs.service_facilities ) and code diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java index 0df55c2f..5b813b21 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java @@ -22,10 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 历史订单 @@ -292,6 +289,11 @@ public class XhpcHistoryOrderController extends BaseController { Long terminalId = xhpc.getTerminalId(); Long historyOrderId = xhpc.getHistoryOrderId(); Date data = Calendar.getInstance().getTime(); + + //小时多少度电 + BigDecimal v = new BigDecimal((endTime.getTime() - startTime.getTime())).divide(new BigDecimal(60000),2,RoundingMode.HALF_UP); + BigDecimal multiply = v.divide(xhpc.getChargingDegree(),2,RoundingMode.HALF_UP); + //1时间没有跨天 DateTime parse = DateUtil.parse(DateUtil.format(startTime, "yyyy-MM-dd"), "yyyy-MM-dd"); DateTime parse1 = DateUtil.parse(DateUtil.format(endTime, "yyyy-MM-dd"), "yyyy-MM-dd"); @@ -306,10 +308,10 @@ public class XhpcHistoryOrderController extends BaseController { XhpcStatisticsTimeInterval xhpcSt = new XhpcStatisticsTimeInterval(); xhpcSt.setStatus(endHour+1); xhpcSt.setChargingDegree(xhpc.getChargingDegree()); - xhpcSt.setChargingTime(new BigDecimal(xhpc.getChargingTimeNumber()/3600).setScale(2, RoundingMode.HALF_UP)); + xhpcSt.setChargingTime(new BigDecimal(xhpc.getChargingTimeNumber()).divide(new BigDecimal(3600),2, RoundingMode.HALF_UP)); xhpcSt.setChargingNumber(1); - xhpcSt.setPowerPrice(xhpc.getActPowerPrice()); - xhpcSt.setServicePrice(xhpc.getActServicePrice()); + xhpcSt.setPowerPrice(xhpc.getPowerPriceTotal()); + xhpcSt.setServicePrice(xhpc.getServicePriceTotal()); xhpcSt.setTotalPrice(xhpc.getTotalPrice()); xhpcSt.setPromotionDiscount(xhpc.getPromotionDiscount()); xhpcSt.setActPrice(xhpc.getActPrice()); @@ -329,24 +331,33 @@ public class XhpcHistoryOrderController extends BaseController { if(xhpc.getSource()==1){ xhpcSt.setInternetUserId(xhpc.getUserId()); } + List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(DateUtil.formatTime(startTime), DateUtil.formatTime(endTime), rateModelId); + Map map = reatTimeList.get(0); + xhpcSt.setElecPriceEvcs(new BigDecimal(map.get("powerFee").toString())); + xhpcSt.setServicePriceEvcs(new BigDecimal(map.get("serviceFee").toString())); + xhpcSt.setStartTimeEvcs(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss")); + xhpcSt.setEndTimeEvcs(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss")); xhpcStatisticsService.addStatisticsTime(xhpcSt); }else { //跨时段 //总共时段 endHour+1-startHour - addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour); + String yyyyMMdd = DateUtil.format(startTime, "yyyy-MM-dd"); + addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour,yyyyMMdd,multiply); } }else{ //跨天 Date updateTime2= DateUtil.parse(parse+" 23:59:59"); int startHour = DateUtil.hour(startTime, true); int endHour = DateUtil.hour(updateTime2, true); - addInterval(xhpc, startTime, updateTime2, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour); + String yyyyMMdd = DateUtil.format(startTime, "yyyy-MM-dd"); + addInterval(xhpc, startTime, updateTime2, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour,yyyyMMdd,multiply); //明天 DateTime tomorrow = DateUtil.offsetDay(startTime,1); Date startTime3 =DateUtil.beginOfDay(tomorrow); int startHour1 = DateUtil.hour(startTime3, true); int endHour1 = DateUtil.hour(endTime, true); - addInterval(xhpc, startTime3, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour1, endHour1); + String yyyyMMdd1 = DateUtil.format(startTime3, "yyyy-MM-dd"); + addInterval(xhpc, startTime3, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour1, endHour1,yyyyMMdd1,multiply); } //修改状态 //修改历史订单表状态 @@ -358,23 +369,23 @@ public class XhpcHistoryOrderController extends BaseController { } } - private void addStatisTime(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour) { + private void addStatisTime(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour,String yyyyMMdd,BigDecimal multiply) { BigDecimal number = new BigDecimal(endHour + 1 - startHour); for (int i = startHour; i < endHour + 1; i++) { //获取费率 if (i == startHour) { //开始时间、结束时间 - addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, DateUtil.formatTime(startTime), i + ":59:59"); + addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, DateUtil.formatTime(startTime), i + ":59:59",yyyyMMdd,multiply); } else if (i != endHour) { - addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", i + ":59:59"); + addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", i + ":59:59",yyyyMMdd,multiply); } else { - addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", DateUtil.formatTime(endTime)); + addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", DateUtil.formatTime(endTime),yyyyMMdd,multiply); } } } - private void addInterval(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour) { + private void addInterval(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour,String yyyyMMdd,BigDecimal multiply) { Date data = Calendar.getInstance().getTime(); if(endHour==startHour){ //没有跨时段 @@ -405,43 +416,79 @@ public class XhpcHistoryOrderController extends BaseController { if(xhpc.getSource()==1){ xhpcSt.setInternetUserId(xhpc.getUserId()); } + List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(DateUtil.formatTime(startTime), DateUtil.formatTime(endTime), rateModelId); + Map map = reatTimeList.get(0); + xhpcSt.setElecPriceEvcs(new BigDecimal(map.get("powerFee").toString())); + xhpcSt.setServicePriceEvcs(new BigDecimal(map.get("serviceFee").toString())); + xhpcSt.setStartTimeEvcs(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss")); + xhpcSt.setEndTimeEvcs(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss")); xhpcStatisticsService.addStatisticsTime(xhpcSt); }else{ //跨时段 //总共时段 endHour+1-startHour - addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour); + addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour,yyyyMMdd,multiply); } } - private void addStatis(XhpcChargeHistoryOrder xhpc, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, String start, String end) { + private void addStatis(XhpcChargeHistoryOrder xhpc, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, String start, String end,String yyyyMMdd,BigDecimal multiply) { List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(start, end, rateModelId); if (reatTimeList != null && reatTimeList.size() > 0) { if (reatTimeList.size() == 1) { - addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, 0, 1); + addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, -1, 1,start,end,yyyyMMdd,multiply); } else { for (int j = 0; j < reatTimeList.size(); j++) { - addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, j, 2); + addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, j, 2,start,end,yyyyMMdd,multiply); } } } } - private void addSte(XhpcChargeHistoryOrder xhpc, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, List> reatTimeList, int j, int type) { + private void addSte(XhpcChargeHistoryOrder xhpc, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, List> reatTimeList, int j, int type, String start, String end,String yyyyMMdd,BigDecimal multiply) { Date data = Calendar.getInstance().getTime(); - Map map = reatTimeList.get(j); + Map map =new HashMap<>(); + if(j==-1){ + map = reatTimeList.get(0); + }else{ + map = reatTimeList.get(j); + } BigDecimal size = new BigDecimal(reatTimeList.size()); - long time3 = DateUtil.parse(map.get("endTime").toString()).getTime(); - long time4 = DateUtil.parse(map.get("startTime").toString()).getTime(); - BigDecimal time5 = new BigDecimal((time3-time4)/6000); + XhpcStatisticsTimeInterval xhpcSt = new XhpcStatisticsTimeInterval(); + long time3 =0L; + long time4 =0L; + if(j==-1){ + time3 = DateUtil.parse(end).getTime(); + time4 = DateUtil.parse(start).getTime(); + xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+start); + xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+end); + }else if(j==0){ + time3 = DateUtil.parse(map.get("endTime").toString()).getTime(); + time4 = DateUtil.parse(start).getTime(); + xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+start); + xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+map.get("endTime").toString()); + }else if(j!=reatTimeList.size()){ + time3 = DateUtil.parse(map.get("endTime").toString()).getTime(); + time4 = DateUtil.parse(map.get("startTime").toString()).getTime(); + xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+map.get("startTime").toString()); + xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+map.get("endTime").toString()); + }else{ + time3 = DateUtil.parse(end).getTime(); + time4 = DateUtil.parse(map.get("startTime").toString()).getTime(); + xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+map.get("startTime").toString()); + xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+end); + } + BigDecimal time5 = new BigDecimal((time3-time4)).divide(new BigDecimal(60000),2, RoundingMode.HALF_UP); + //每分钟多少度电 + BigDecimal decimal = multiply.multiply(time5).setScale(2,RoundingMode.HALF_UP); BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString()); BigDecimal serviceFee =new BigDecimal(map.get("serviceFee").toString()); - XhpcStatisticsTimeInterval xhpcSt = new XhpcStatisticsTimeInterval(); + xhpcSt.setElecPriceEvcs(powerFee); + xhpcSt.setServicePriceEvcs(serviceFee); xhpcSt.setStatus(status+1); - xhpcSt.setChargingDegree(xhpc.getChargingDegree()); + xhpcSt.setChargingDegree(decimal); xhpcSt.setChargingTime(time5); xhpcSt.setChargingNumber(1); - BigDecimal powerFee1 = powerFee.multiply(time5).setScale(2, RoundingMode.HALF_UP); - BigDecimal serviceFee1 = serviceFee.multiply(time5).setScale(2, RoundingMode.HALF_UP); + BigDecimal powerFee1 = powerFee.multiply(decimal).setScale(2, RoundingMode.HALF_UP); + BigDecimal serviceFee1 = serviceFee.multiply(decimal).setScale(2, RoundingMode.HALF_UP); xhpcSt.setPowerPrice(powerFee1); xhpcSt.setServicePrice(serviceFee1); xhpcSt.setTotalPrice(powerFee1.add(serviceFee1)); @@ -476,6 +523,7 @@ public class XhpcHistoryOrderController extends BaseController { if(xhpc.getSource()==1){ xhpcSt.setInternetUserId(xhpc.getUserId()); } + xhpcStatisticsService.addStatisticsTime(xhpcSt); } diff --git a/xhpc-modules/xhpc-payment/pom.xml b/xhpc-modules/xhpc-payment/pom.xml index bb3ef119..06f45798 100644 --- a/xhpc-modules/xhpc-payment/pom.xml +++ b/xhpc-modules/xhpc-payment/pom.xml @@ -81,6 +81,12 @@ 3.0.0 compile + + cn.hutool + hutool-all + 4.6.1 + compile + diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java index aceff8c7..5e4a58bb 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java @@ -1,22 +1,34 @@ package com.xhpc.payment.controller; +import cn.hutool.core.map.MapUtil; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayTradeAppPayModel; import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.AlipayTradeCreateRequest; +import com.alipay.api.response.AlipayTradeAppPayResponse; import com.alipay.api.response.AlipayTradeCreateResponse; -import com.xhpc.common.core.utils.DateUtils; +import com.xhpc.common.core.constant.HttpStatus; +import com.xhpc.common.core.constant.StatusConstants; +import com.xhpc.common.core.utils.StringUtils; +import com.xhpc.common.core.web.domain.AjaxResult; +import com.xhpc.payment.domain.XhpcRechargeOrder; +import com.xhpc.payment.mapper.XhpcUserAccountStatementMapper; +import com.xhpc.payment.service.IXhpcRechargeOrderService; +import com.xhpc.payment.service.IXhpcRefundOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -28,41 +40,73 @@ public class AlipayPaymentController { @Autowired private Environment environment; + @Autowired + private IXhpcRechargeOrderService iXhpcRechargeOrderService; + //@Autowired + //private XhpcUserAccountStatementMapper xhpcUserAccountStatementMapper; + @Autowired + private IXhpcRefundOrderService iXhpcRefundOrderService; - @GetMapping("/payment") + @PostMapping("/payment") @ApiOperation(value = "支付宝支付") - private String newPay() throws Exception { + private AjaxResult payment(HttpServletRequest servletRequest, @RequestBody Map map) throws Exception { + String openid = StringUtils.valueOf(map.get("openid")); + if (StringUtils.isEmpty(openid)) { + return AjaxResult.error(HttpStatus.NOT_NULL, "openid不能为空"); + } + //总金额(是)订单总金额,单位为元 + String amount = StringUtils.valueOf(map.get("amount")); + if (StringUtils.isEmpty(amount)) { + return AjaxResult.error(HttpStatus.NOT_NULL, "充值金额不能为空"); + }else{ + if(new BigDecimal(5).compareTo(new BigDecimal(amount))==1){ + return AjaxResult.error(HttpStatus.NOT_NULL, "充值金额不能少于5元"); + } + } + //用户信息id + String userId = StringUtils.valueOf(map.get("userId")); + if (StringUtils.isEmpty(userId)) { + return AjaxResult.error(HttpStatus.NOT_NULL, "用户信息不能为空"); + } + Map refundOrder = iXhpcRefundOrderService.getNotRefundOrder(Long.parseLong(userId)); + if (StringUtils.isNotNull(refundOrder)) { + return AjaxResult.error(HttpStatus.ALREADY_EXISTING, "用户存正在退款"); + } + String orderNumber = StringUtils.numFormat(Long.parseLong(userId), 1, StatusConstants.FLOWING_WATER_RECHARGE_TYPE); - String orderNumber = "alipay" + DateUtils.timePath(); + //生成充值订单 + XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.addRechargeOrder(userId, BigDecimal.valueOf(Double.parseDouble(amount)), "2", orderNumber); + String attach = attachYu(StringUtils.valueOf(xhpcRechargeOrder.getRechargeOrderId()), StringUtils.valueOf(amount), null, orderNumber); AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", environment.getProperty("ALIPAYAPPID"), environment.getProperty("ALIPAYPRIVATEKEY"), "json", "utf-8", environment.getProperty("ALIPAYPUBLICKEY"), "RSA2"); AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); - JSONObject json = new JSONObject(); - String out_trade_no = orderNumber; - //订单号 - json.put("out_trade_no", out_trade_no); - //金额 这里的金额是以元为单位的可以不转换但必须是字符串 - json.put("total_amount", "0.01"); - //描述 - json.put("subject", "测试"); - //用户唯一标识id 这里必须使用buyer_id 参考文档 - json.put("buyer_id", "123"); - //对象转化为json字符串 - String jsonStr = json.toString(); - //商户通过该接口进行交易的创建下单 - request.setBizContent(jsonStr); - request.setNotifyUrl("https://cdz.project2.tingsun.net/alipay/notifyUrl");//回调地址 + + request.setBizContent("{" + + "\"out_trade_no\":\""+orderNumber+"\"," + + "\"total_amount\":"+amount+"," + + "\"subject\":\"小华充电\"," + + "\"timeout_express\":\"30m\"," + + "\"buyer_id\":\""+openid+"\"" + + "}"); + //"\"passback_params\":\""+attach+"\"," + + request.setNotifyUrl(environment.getProperty("ALIPAYPSERVERDOMAIN")); try { - //使用的是execute + //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeCreateResponse response = alipayClient.execute(request); - String trade_no = response.getTradeNo();//获取返回的tradeNO。 + if(response.isSuccess()){ + String trade_no = response.getTradeNo();// 获取返回的tradeNO。 + return AjaxResult.success(trade_no); + } else { + return AjaxResult.error("生成订单失败,请稍后在试!"); + } } catch (AlipayApiException e) { e.printStackTrace(); } - return ""; + return AjaxResult.error("生成订单失败,请稍后在试"); } + /** * 2 * 支付宝服务器异步通知url * 3 * @throws Exception @@ -105,4 +149,16 @@ public class AlipayPaymentController { System.out.println(AlipaySignature.getSignCheckContentV1(params)); } } + + + //附加参数 + public String attachYu(String id, String money, String payStyle, String out_trade_no) { + // 发送请求参数 业务参数 + StringBuilder attachSB = new StringBuilder(); + attachSB.append(",{\"customerId\":" + id); + attachSB.append(",\"money\":\"" + money + "\""); + attachSB.append(",\"out_trade_no\":\"" + out_trade_no + "\"}"); + String attach = attachSB.substring(1); + return attach; + } } diff --git a/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml index de3f3c0b..243c4671 100644 --- a/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-payment/src/main/resources/bootstrap.yml @@ -43,10 +43,10 @@ SERVERDOMAIN: "http://xhpc.scxhua.com/prod-api/xhpc-payment/wx/paymentCallback" WXTRANSFERS: "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers" #支付宝支付回调地址 -ALIPAYPSERVERDOMAIN: "https://cdz.project2.tingsun.net/alipay/paymentCallback" +ALIPAYPSERVERDOMAIN: "https://xhpc.scxhua.com/prod-api/alipay/notifyUrl" #支付宝公钥 -ALIPAYPUBLICKEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5NOLLMj/cWU+SOZ6NR6vXnmeEZPq7UYeuyPvouFzqphQ9nuGPB7GkhZQnzGdhXVnUWw01HjezDzOkKCW9Jl4cG6+tVyqJt4FWrAylEeSxkbnNLeRohXg1ZaBV4hU76Y/WOW2R4uHD/9oX9pna7U8NJJJrqQiBdRAjSTt1cHTgXlkDKzhmiBm6Nw71rZeaETeBOnq3FnQUc91PFhmJRbrVCjDxA7gJryxRadHGBJDlgWkzTs09Q6PVpNj5x+QWtSawQgs5EEZNBh5T6AhmjlJFd4F9AsaNzcMrZGXVRGc3QcB3l+zP1nmmT7EZed1nIpjpQs5zGYFTA/yzvYh+WJ7hQIDAQAB" -#支付宝私钥 -ALIPAYPRIVATEKEY: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDk04ssyP9xZT5I5no1Hq9eeZ4Rk+rtRh67I++i4XOqmFD2e4Y8HsaSFlCfMZ2FdWdRbDTUeN7MPM6QoJb0mXhwbr61XKom3gVasDKUR5LGRuc0t5GiFeDVloFXiFTvpj9Y5bZHi4cP/2hf2mdrtTw0kkmupCIF1ECNJO3VwdOBeWQMrOGaIGbo3DvWtl5oRN4E6ercWdBRz3U8WGYlFutUKMPEDuAmvLFFp0cYEkOWBaTNOzT1Do9Wk2PnH5Ba1JrBCCzkQRk0GHlPoCGaOUkV3gX0Cxo3NwytkZdVEZzdBwHeX7M/WeaZPsRl53WcimOlCznMZgVMD/LO9iH5YnuFAgMBAAECggEAML3+/2MxRm5SfiTaE0aeBHnTedsQR8qP8T0OZpuvj78yP87AIT5M/gFS2xYuf6cqguWRu1Cj5M1vEs+iWCf4x7pPVUKP3AefDFpL69nzIdkolsojc2tFoTmWA5c+wG2hQMZttX+7HWVCTmivbvoEAQ7IMzMzLBqyRV6AavAGpaVWzmoYFZMX5qMwqucOu2voQ/S5qkJUaQJmTzwInsMvLl7VZN5eJBrlLaKHaTCdW45b6HYvi+fdabq5TQ5J2sMMdqaO4t73iUJnwlf/qvVrhDSCKPGqE64gk4kq9Qcgi+viQp8x/mzMGeU+9avYKG3lcnUGXfHMTl91KciaHfU7AQKBgQD32U3xneeZhcWm4HQitAwoSW1GvCaaSCqu4wZiVhHYclkHbdtl5xpMbUvwDtEMlHI/gvvEs+XDoFVa8zUPXgBsO00vKNAkSqoeE+7lUaQTG8rTtX9lFiJDkX0v9NHzeyVzZi8ZxkpT6GFV2eDRa/+XGht7KdRoiSpvvvEK0QslfQKBgQDsWhWcz0WcpjjsbtrsSoutX2lR180g/2VpKU4Od4OSMYI03DhpCevembgclFSbRpsIvaqIbCeZEcidkaGcjIJ7N8ZVJF/lEEWzUNKAJ1WRozmptXQIXA2E3IZGQPZai8Hm0C+idy0DrXdPPs7JX9EcDN8m40M7DYAS9REyB+5sqQKBgQDnwOFaOZ3Tdzu/dAgEXzky/p3Y05yBDVQkHhLdJsAfFaVcBgRuP+/eYSDtwt0FF1XRP4hugQ0qpKTLm7kUuoBItBbTLyWZmduCrn7nHTT/zTAWUJNkEZNOfR+DFTiwpIj7ZCRMxJbB6PwDC+1lxcfEIdxqiU2dxgzRWskHpTr3/QKBgB3HJ8vu7WVUJ/3Z5ak5pyl7yOgv2T9cDinWs2ftNN15cV85k73gKyCLm3+2TIaXuba7Nr4jakXF0NHRZFw188aUe1+EyrQwfaee+jZ9PjGwL/aqzuiyuF1R73TwgFleHFr5RdchTsGU3GBWmHUUpmLzWDYtEe5hwA4jZDw6dZapAoGBAKsr9GImz8vsKjfzQJMj8OC18ch+U29nwkhjHPnjtE4Zjf7izUC2x8b1EWa59pqXIPv9Kgb2aP2MX/fQHtUwNaRza9vfbRcG4qaATKWNIsV2BR+yI/SP7Hdt7fNfv1Jbivj42zj0HyTNXA7E4GPiZpKMYaXt56JouyoRbBnMoakO" +ALIPAYPUBLICKEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjHDksTgZTpf0wh7oeTVRp0h3SqzTM2smjEJnx9jF1+q3WSXLRB4OzSzq7VsJ/szcyK10ZGO5PxeQ4u9GAG/U+7xhs7ei1cJB/Er55Sg9SbjfkTpwlDv181UJCRJJ/IAcqyqezwTpB8e2trYmHKovUdt0KR9/tVkGa7hsNd5GfxTOUaAFc3zADqRVM+wGimtG0NYfOF2f8tkmBEAiMMLKq5pbAnHU723a1cm/nfVp7gvXfsnO0k2GvRuHzb8mxIhWLiAnwdK9gEu5za/jWxo/xIvf2sdJPYdWj+yfyzA2e1fJkx4uRUzX31CXxZvP2/tfEcnTdI0gxN+OH2eAMiPVswIDAQAB" +#应用私钥 +ALIPAYPRIVATEKEY: "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCG0ynEzKW/LwXLgtcOQ9BQCWN1ILdK8/X8DIiKy2XiebirTkU2LF9u6NpNKju3TIZTq02GBpjz/5kuCdXoFTqZXB6W/6vDbRskIT42ctT6nzZtkBaYt4BaC/HSPWAQJ+9z+JtKr8bDYUgN/9YwdwV/J3sEg/HYPlsXRczrnJdfhR/d5zno1V6avK2p052/IWKV5daZg3aQpDDi7QdZp8W88hbrItb0aoaDwhsq90ZBDA8ZjUUUAiqnSFPl0OxBAvwbS1U1Y7SYQd6AeD3M9MugrDjPNng+TeZgZ0zXaB2uh3u+i1PsDvQAEq72MM+1z097de2t01u6jmvsqFPj9ANrAgMBAAECggEAZln344bYbQLti0mQqSuiAKCf+FMV0rjRjL6XCYbPmdZ98s5AjJey+yeaUeo12zkk4G+zMoPfqZvoVaLx2HYFPldIgakmY/14FT2HVR5nwLsNPq+b9+OWdMWMluYw/xLSHWAlw9UdN0WqxbXqjHBOo/D82riv6FGuJUTABD2kTMZQngzOaoMcgrfIb4y5f2oTzXXvOidOA5u2UW9vbPaV/G+eqvsBTMNgJUY3uYO0fMvGVrQ6u5lHPiZzYjdIhyYXBa0L7MUs6oi4YcJwSHt0OXrxVPjJFR6Kpl2hkzOptgrhn8Jun0DYCd0s02NxIaVLkF6pNhqZaovLWTcCoal+wQKBgQDEfVQoOZ5eZYtL6XEnJBH7alVT87RywgDc4Jz4AYIKijt4KWZCWqu6GoR3Ku/u+/PWAak3j9pHv0HoKVAmDANJOU0W6pyUXNXLoeYlc/2kOmlRHbNReAnaUwHauIRiUOfqZ8+qWS5Ly6TmuF0GJRrbXr1gah75Ow0T02af618IlwKBgQCvqLUWwEpFSt1EZ6Y20jOm75RQgl+0wckwdTaoPyE6qwHkuPXG0nILD0OqgWPY2iYUR6DIfBuv6CkSvGgvY7ouj876hsofSW4d7gitt5+ybTjtyUDOCQk5g3QkRmFW9SAAbWTF7VvyiIqlICWEIuMQ1hJdKQK4/6nm1IqgSoTCTQKBgEk7lOQxJW91VUeDyCKYdQNJjGfvyu+CkyO/q4FbvoYDI0sT0wMkHCEOxRRNMoPV7/lxQQpuWSKoi/3ld/PWQltGOg8yfg1l1GFDBC4tXvmYs6wB79WLcdCnY2eLofuqv+VDr8iD2JdzXRCI4lLp/WqJkveeVdD6S1N6VSOBbDgdAoGAJF54x/IeLoSWlXAkYNtaqGiYO6cSq7knr6nFHEad2ajIZpPJB1ZRGGsbpnTNuHtKQQ6ngnr3vI8D2gY6R/2M8dECmKpJtPqeGwJKt7T6EpY8oDb3/PCwAUFvTYdo5fkwnAYKRFSloeyVUCT8v4P9oWHBQZqZHraIdetxnEhxfk0CgYAaqweBwOdAiRk/ivbgtf9fhSSnM3p40KZ9MF66wsnb4oc/+qH/Nq/SxeQBIIwx0ouW7Ho7xr0yYcmnnrk+xEHfDsGSxNYEd0NClGRBpPCy0ynEpsXeaj2yjr0zWzcDYI/wRaDpzCcUQf8BJ4l++klXvwhGvJiRDOFaLPiZ9zscBA==" #支付宝appid ALIPAYAPPID: "2021002156615717" diff --git a/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml index 11d5a940..202147fe 100644 --- a/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-user/src/main/resources/bootstrap.yml @@ -27,7 +27,7 @@ spring: WXGETJSCODE: "https://api.weixin.qq.com/sns/jscode2session?appid=wxd0a48e00319ef8a7&secret=e26d9088b58e24af69411d5933cece47&js_code=" #支付宝公钥 ALIPAYPUBLICKEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjHDksTgZTpf0wh7oeTVRp0h3SqzTM2smjEJnx9jF1+q3WSXLRB4OzSzq7VsJ/szcyK10ZGO5PxeQ4u9GAG/U+7xhs7ei1cJB/Er55Sg9SbjfkTpwlDv181UJCRJJ/IAcqyqezwTpB8e2trYmHKovUdt0KR9/tVkGa7hsNd5GfxTOUaAFc3zADqRVM+wGimtG0NYfOF2f8tkmBEAiMMLKq5pbAnHU723a1cm/nfVp7gvXfsnO0k2GvRuHzb8mxIhWLiAnwdK9gEu5za/jWxo/xIvf2sdJPYdWj+yfyzA2e1fJkx4uRUzX31CXxZvP2/tfEcnTdI0gxN+OH2eAMiPVswIDAQAB" -#支付宝私钥 -ALIPAYPRIVATEKEY: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDk04ssyP9xZT5I5no1Hq9eeZ4Rk+rtRh67I++i4XOqmFD2e4Y8HsaSFlCfMZ2FdWdRbDTUeN7MPM6QoJb0mXhwbr61XKom3gVasDKUR5LGRuc0t5GiFeDVloFXiFTvpj9Y5bZHi4cP/2hf2mdrtTw0kkmupCIF1ECNJO3VwdOBeWQMrOGaIGbo3DvWtl5oRN4E6ercWdBRz3U8WGYlFutUKMPEDuAmvLFFp0cYEkOWBaTNOzT1Do9Wk2PnH5Ba1JrBCCzkQRk0GHlPoCGaOUkV3gX0Cxo3NwytkZdVEZzdBwHeX7M/WeaZPsRl53WcimOlCznMZgVMD/LO9iH5YnuFAgMBAAECggEAML3+/2MxRm5SfiTaE0aeBHnTedsQR8qP8T0OZpuvj78yP87AIT5M/gFS2xYuf6cqguWRu1Cj5M1vEs+iWCf4x7pPVUKP3AefDFpL69nzIdkolsojc2tFoTmWA5c+wG2hQMZttX+7HWVCTmivbvoEAQ7IMzMzLBqyRV6AavAGpaVWzmoYFZMX5qMwqucOu2voQ/S5qkJUaQJmTzwInsMvLl7VZN5eJBrlLaKHaTCdW45b6HYvi+fdabq5TQ5J2sMMdqaO4t73iUJnwlf/qvVrhDSCKPGqE64gk4kq9Qcgi+viQp8x/mzMGeU+9avYKG3lcnUGXfHMTl91KciaHfU7AQKBgQD32U3xneeZhcWm4HQitAwoSW1GvCaaSCqu4wZiVhHYclkHbdtl5xpMbUvwDtEMlHI/gvvEs+XDoFVa8zUPXgBsO00vKNAkSqoeE+7lUaQTG8rTtX9lFiJDkX0v9NHzeyVzZi8ZxkpT6GFV2eDRa/+XGht7KdRoiSpvvvEK0QslfQKBgQDsWhWcz0WcpjjsbtrsSoutX2lR180g/2VpKU4Od4OSMYI03DhpCevembgclFSbRpsIvaqIbCeZEcidkaGcjIJ7N8ZVJF/lEEWzUNKAJ1WRozmptXQIXA2E3IZGQPZai8Hm0C+idy0DrXdPPs7JX9EcDN8m40M7DYAS9REyB+5sqQKBgQDnwOFaOZ3Tdzu/dAgEXzky/p3Y05yBDVQkHhLdJsAfFaVcBgRuP+/eYSDtwt0FF1XRP4hugQ0qpKTLm7kUuoBItBbTLyWZmduCrn7nHTT/zTAWUJNkEZNOfR+DFTiwpIj7ZCRMxJbB6PwDC+1lxcfEIdxqiU2dxgzRWskHpTr3/QKBgB3HJ8vu7WVUJ/3Z5ak5pyl7yOgv2T9cDinWs2ftNN15cV85k73gKyCLm3+2TIaXuba7Nr4jakXF0NHRZFw188aUe1+EyrQwfaee+jZ9PjGwL/aqzuiyuF1R73TwgFleHFr5RdchTsGU3GBWmHUUpmLzWDYtEe5hwA4jZDw6dZapAoGBAKsr9GImz8vsKjfzQJMj8OC18ch+U29nwkhjHPnjtE4Zjf7izUC2x8b1EWa59pqXIPv9Kgb2aP2MX/fQHtUwNaRza9vfbRcG4qaATKWNIsV2BR+yI/SP7Hdt7fNfv1Jbivj42zj0HyTNXA7E4GPiZpKMYaXt56JouyoRbBnMoakO" +#应用私钥 +ALIPAYPRIVATEKEY: "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCG0ynEzKW/LwXLgtcOQ9BQCWN1ILdK8/X8DIiKy2XiebirTkU2LF9u6NpNKju3TIZTq02GBpjz/5kuCdXoFTqZXB6W/6vDbRskIT42ctT6nzZtkBaYt4BaC/HSPWAQJ+9z+JtKr8bDYUgN/9YwdwV/J3sEg/HYPlsXRczrnJdfhR/d5zno1V6avK2p052/IWKV5daZg3aQpDDi7QdZp8W88hbrItb0aoaDwhsq90ZBDA8ZjUUUAiqnSFPl0OxBAvwbS1U1Y7SYQd6AeD3M9MugrDjPNng+TeZgZ0zXaB2uh3u+i1PsDvQAEq72MM+1z097de2t01u6jmvsqFPj9ANrAgMBAAECggEAZln344bYbQLti0mQqSuiAKCf+FMV0rjRjL6XCYbPmdZ98s5AjJey+yeaUeo12zkk4G+zMoPfqZvoVaLx2HYFPldIgakmY/14FT2HVR5nwLsNPq+b9+OWdMWMluYw/xLSHWAlw9UdN0WqxbXqjHBOo/D82riv6FGuJUTABD2kTMZQngzOaoMcgrfIb4y5f2oTzXXvOidOA5u2UW9vbPaV/G+eqvsBTMNgJUY3uYO0fMvGVrQ6u5lHPiZzYjdIhyYXBa0L7MUs6oi4YcJwSHt0OXrxVPjJFR6Kpl2hkzOptgrhn8Jun0DYCd0s02NxIaVLkF6pNhqZaovLWTcCoal+wQKBgQDEfVQoOZ5eZYtL6XEnJBH7alVT87RywgDc4Jz4AYIKijt4KWZCWqu6GoR3Ku/u+/PWAak3j9pHv0HoKVAmDANJOU0W6pyUXNXLoeYlc/2kOmlRHbNReAnaUwHauIRiUOfqZ8+qWS5Ly6TmuF0GJRrbXr1gah75Ow0T02af618IlwKBgQCvqLUWwEpFSt1EZ6Y20jOm75RQgl+0wckwdTaoPyE6qwHkuPXG0nILD0OqgWPY2iYUR6DIfBuv6CkSvGgvY7ouj876hsofSW4d7gitt5+ybTjtyUDOCQk5g3QkRmFW9SAAbWTF7VvyiIqlICWEIuMQ1hJdKQK4/6nm1IqgSoTCTQKBgEk7lOQxJW91VUeDyCKYdQNJjGfvyu+CkyO/q4FbvoYDI0sT0wMkHCEOxRRNMoPV7/lxQQpuWSKoi/3ld/PWQltGOg8yfg1l1GFDBC4tXvmYs6wB79WLcdCnY2eLofuqv+VDr8iD2JdzXRCI4lLp/WqJkveeVdD6S1N6VSOBbDgdAoGAJF54x/IeLoSWlXAkYNtaqGiYO6cSq7knr6nFHEad2ajIZpPJB1ZRGGsbpnTNuHtKQQ6ngnr3vI8D2gY6R/2M8dECmKpJtPqeGwJKt7T6EpY8oDb3/PCwAUFvTYdo5fkwnAYKRFSloeyVUCT8v4P9oWHBQZqZHraIdetxnEhxfk0CgYAaqweBwOdAiRk/ivbgtf9fhSSnM3p40KZ9MF66wsnb4oc/+qH/Nq/SxeQBIIwx0ouW7Ho7xr0yYcmnnrk+xEHfDsGSxNYEd0NClGRBpPCy0ynEpsXeaj2yjr0zWzcDYI/wRaDpzCcUQf8BJ4l++klXvwhGvJiRDOFaLPiZ9zscBA==" #支付宝appid ALIPAYAPPID: "2021002156615717"