From f0369596b78bab9e41926340697e9110b1256589 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Tue, 26 Jan 2021 09:53:05 +0800 Subject: [PATCH 1/7] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9D=20bean=20=E6=97=A0=E6=B3=95=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=B3=A8=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/META-INF/spring.factories | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/resources/META-INF/spring.factories b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/resources/META-INF/spring.factories index 32cd7dde..50d45749 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/resources/META-INF/spring.factories +++ b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/resources/META-INF/spring.factories @@ -1,2 +1,3 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.hccake.starter.pay.virtual.VirtualPayAutoConfiguration \ No newline at end of file + com.hccake.starter.pay.virtual.VirtualPayAutoConfiguration,\ + com.hccake.starter.pay.ali.AliPayAutoConfiguration \ No newline at end of file From 17930872911823c86a65a3e397cdc86ccc40d123 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Tue, 26 Jan 2021 11:24:02 +0800 Subject: [PATCH 2/7] =?UTF-8?q?:zap:=20=E5=8C=85=E8=A3=85=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=BB=93=E6=9E=9C,=20=E7=AE=80=E5=8C=96=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hccake/starte/pay/ali/AliPay.java | 10 +- .../pay/ali/constants/AliPayConstant.java | 5 + .../starte/pay/ali/domain/AliPayQuery.java | 149 ++++++++++++++++++ 3 files changed, 159 insertions(+), 5 deletions(-) create mode 100644 ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java diff --git a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java index 67d9d615..0212fc9b 100644 --- a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java +++ b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java @@ -15,9 +15,9 @@ import com.alipay.api.request.AlipayTradeRefundRequest; import com.alipay.api.request.AlipayTradeWapPayRequest; import com.alipay.api.response.AlipayTradeAppPayResponse; import com.alipay.api.response.AlipayTradePayResponse; -import com.alipay.api.response.AlipayTradeQueryResponse; import com.alipay.api.response.AlipayTradeRefundResponse; import com.alipay.api.response.AlipayTradeWapPayResponse; +import com.hccake.starte.pay.ali.domain.AliPayQuery; import java.math.BigDecimal; import java.math.RoundingMode; import lombok.Data; @@ -286,7 +286,7 @@ public class AliPay { * @return com.alipay.api.response.AlipayTradeQueryResponse * @author lingting 2021-01-25 11:12 */ - public AlipayTradeQueryResponse query(String sn) throws AlipayApiException { + public AliPayQuery query(String sn) throws AlipayApiException { return query(sn, null); } @@ -297,7 +297,7 @@ public class AliPay { * @return com.alipay.api.response.AlipayTradeQueryResponse * @author lingting 2021-01-25 11:12 */ - public AlipayTradeQueryResponse query(String sn, String tradeNo) throws AlipayApiException { + public AliPayQuery query(String sn, String tradeNo) throws AlipayApiException { AlipayTradeQueryModel model = new AlipayTradeQueryModel(); model.setOutTradeNo(sn); model.setTradeNo(tradeNo); @@ -309,10 +309,10 @@ public class AliPay { * @return com.alipay.api.response.AlipayTradeQueryResponse * @author lingting 2021-01-25 11:12 */ - public AlipayTradeQueryResponse query(AlipayTradeQueryModel model) throws AlipayApiException { + public AliPayQuery query(AlipayTradeQueryModel model) throws AlipayApiException { AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); request.setBizModel(model); - return client.execute(request); + return AliPayQuery.of(client.execute(request)); } /** diff --git a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/constants/AliPayConstant.java b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/constants/AliPayConstant.java index 633d84f2..a752f908 100644 --- a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/constants/AliPayConstant.java +++ b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/constants/AliPayConstant.java @@ -22,4 +22,9 @@ public class AliPayConstant { */ public static final String SERVER_URL_DEV = "https://openapi.alipaydev.com/gateway.do"; + /** + * 查询支付成功返回code + */ + public static final String CODE_SUCCESS = "10000"; + } diff --git a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java new file mode 100644 index 00000000..d651308d --- /dev/null +++ b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java @@ -0,0 +1,149 @@ +package com.hccake.starte.pay.ali.domain; + +import static com.hccake.starte.pay.ali.constants.AliPayConstant.CODE_SUCCESS; + +import cn.hutool.core.util.StrUtil; +import com.alipay.api.response.AlipayTradeQueryResponse; +import java.math.BigDecimal; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +/** + * 简化查询结果 + * + * @author lingting 2021/1/26 10:34 + */ +@Getter +@ToString +@Accessors(chain = true) +@Setter(AccessLevel.PRIVATE) +public class AliPayQuery { + + public static AliPayQuery of(AlipayTradeQueryResponse raw) { + AliPayQuery query = new AliPayQuery(); + if (raw == null) { + return query; + } + // 状态处理 + if (CODE_SUCCESS.equals(raw.getCode())) { + // 成功 + query.setStatus(Status.of(raw.getTradeStatus())); + } + // 异常 + else { + query.setStatus(Status.ERROR); + } + + // 金额 + if (StrUtil.isBlank(raw.getTotalAmount())) { + query.setAmount(BigDecimal.ZERO); + } + else { + query.setAmount(new BigDecimal(raw.getTotalAmount())); + } + + // 信息 + query.setCode(raw.getCode()).setMsg(raw.getMsg()).setSubCode(raw.getSubCode()).setSubMsg(raw.getSubMsg()); + + // 基础数据 + return query.setTradeNo(raw.getTradeNo()).setSn(raw.getOutTradeNo()).setId(raw.getBuyerLogonId()) + .setUserId(raw.getBuyerUserId()).setUserName(raw.getBuyerUserName()) + .setUserType(raw.getBuyerUserType()); + } + + /** + * 原始数据 + */ + private AlipayTradeQueryResponse raw; + + /** + * 订单状态 + */ + private Status status; + + private String code; + + private String msg; + + private String subCode; + + private String subMsg; + + /** + * 金额(单位: 元) + */ + private BigDecimal amount; + + /** + * 平台订单号 + */ + private String sn; + + /** + * 支付宝订单号 + */ + private String tradeNo; + + /** + * 支付用户支付宝账号信息 + */ + private String id; + + /** + * 支付用户id + */ + private String userId; + + private String userName; + + private String userType; + + /** + * 交易状态 + */ + public enum Status { + + /** + * 成功 + */ + SUCCESS, + /** + * 未支付 + */ + WAIT, + /** + * 未付款交易超时关闭,或支付完成后全额退款 + */ + CLOSED, + /** + * 交易结束,不可退款 + */ + FINISHED, + /** + * 异常. 具体信息查询 subCode和subMsg + */ + ERROR, + + ; + + public static Status of(String status) { + switch (status) { + case "WAIT_BUYER_PAY": + return WAIT; + case "TRADE_CLOSED": + return CLOSED; + case "TRADE_SUCCESS": + return SUCCESS; + case "TRADE_FINISHED": + return FINISHED; + default: + return ERROR; + } + } + + } + +} From e52e59ddd8bda73c09e8edb29b6f1c6f745e88e1 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Tue, 26 Jan 2021 15:21:14 +0800 Subject: [PATCH 3/7] =?UTF-8?q?:zap:=20=E6=B7=BB=E5=8A=A0=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9D=E6=94=AF=E4=BB=98=E5=9B=9E=E8=B0=83=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E4=BB=A5=E5=8F=8A=E9=AA=8C=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hccake/starte/pay/ali/AliPay.java | 33 ++++- .../starte/pay/ali/domain/AliPayCallback.java | 121 ++++++++++++++++++ .../starte/pay/ali/domain/AliPayQuery.java | 52 +------- .../starte/pay/ali/enums/TradeStatus.java | 49 +++++++ ballcat-samples/ballcat-sample-pay/pom.xml | 4 + .../com/hccake/sample/pay/ali/Controller.java | 20 ++- .../src/main/resources/application.yml | 4 + 7 files changed, 227 insertions(+), 56 deletions(-) create mode 100644 ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayCallback.java create mode 100644 ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/enums/TradeStatus.java diff --git a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java index 0212fc9b..1cc2872f 100644 --- a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java +++ b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/AliPay.java @@ -8,6 +8,7 @@ import com.alipay.api.DefaultAlipayClient; import com.alipay.api.domain.AlipayTradePayModel; import com.alipay.api.domain.AlipayTradeQueryModel; import com.alipay.api.domain.AlipayTradeRefundModel; +import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.AlipayTradeAppPayRequest; import com.alipay.api.request.AlipayTradePayRequest; import com.alipay.api.request.AlipayTradeQueryRequest; @@ -20,8 +21,8 @@ import com.alipay.api.response.AlipayTradeWapPayResponse; import com.hccake.starte.pay.ali.domain.AliPayQuery; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.Map; import lombok.Data; -import lombok.NoArgsConstructor; /** * api文档: https://opendocs.alipay.com/apis. @@ -286,7 +287,7 @@ public class AliPay { * @return com.alipay.api.response.AlipayTradeQueryResponse * @author lingting 2021-01-25 11:12 */ - public AliPayQuery query(String sn) throws AlipayApiException { + public AliPayQuery query(String sn) throws AlipayApiException { return query(sn, null); } @@ -297,7 +298,7 @@ public class AliPay { * @return com.alipay.api.response.AlipayTradeQueryResponse * @author lingting 2021-01-25 11:12 */ - public AliPayQuery query(String sn, String tradeNo) throws AlipayApiException { + public AliPayQuery query(String sn, String tradeNo) throws AlipayApiException { AlipayTradeQueryModel model = new AlipayTradeQueryModel(); model.setOutTradeNo(sn); model.setTradeNo(tradeNo); @@ -309,7 +310,7 @@ public class AliPay { * @return com.alipay.api.response.AlipayTradeQueryResponse * @author lingting 2021-01-25 11:12 */ - public AliPayQuery query(AlipayTradeQueryModel model) throws AlipayApiException { + public AliPayQuery query(AlipayTradeQueryModel model) throws AlipayApiException { AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); request.setBizModel(model); return AliPayQuery.of(client.execute(request)); @@ -353,6 +354,30 @@ public class AliPay { return client.execute(request); } + /** + * v1 版本验签 + * @param map 所有参数 + * @return boolean + * @author lingting 2021-01-26 14:46 + */ + public boolean checkSignV1(Map map) throws AlipayApiException { + // 验签需要先移除 fund_bill_list 参数值中的 " 否则会导致正确的签名验签失败 + map.put("fund_bill_list", map.get("fund_bill_list").replaceAll(""","\"")); + return AlipaySignature.rsaCheckV1(map, alipayPublicKey, charset, signType); + } + + /** + * v2 版本验签 + * @param map 所有参数 + * @return boolean + * @author lingting 2021-01-26 14:46 + */ + public boolean checkSignV2(Map map) throws AlipayApiException { + // 验签需要先移除 fund_bill_list 参数值中的 " 否则会导致正确的签名验签失败 + map.put("fund_bill_list", map.get("fund_bill_list").replaceAll(""","\"")); + return AlipaySignature.rsaCheckV2(map, alipayPublicKey, charset, signType); + } + /** * 金额单位转换, 元 转为 分 * @param amount 支付金额, 单位 元 diff --git a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayCallback.java b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayCallback.java new file mode 100644 index 00000000..fd6c940a --- /dev/null +++ b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayCallback.java @@ -0,0 +1,121 @@ +package com.hccake.starte.pay.ali.domain; + +import static com.hccake.ballcat.common.core.util.JacksonUtils.toJson; +import static com.hccake.ballcat.common.core.util.JacksonUtils.toObj; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.hccake.starte.pay.ali.enums.TradeStatus; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author lingting 2021/1/26 13:31 + */ +@NoArgsConstructor +@Data +public class AliPayCallback { + + /** + * 解析回调参数 + * @param callbackParams 所有回调参数 + * @return com.hccake.starte.pay.ali.domain.AliPayCallback + * @author lingting 2021-01-26 14:39 + */ + public static AliPayCallback of(Map callbackParams) { + Map map = new HashMap<>(callbackParams); + String fundBillListStr = callbackParams.get("fund_bill_list").replaceAll(""", "\""); + map.put("fund_bill_list", toObj(fundBillListStr, List.class)); + // 覆盖原值 + callbackParams.put("fund_bill_list", fundBillListStr); + return toObj(toJson(map), AliPayCallback.class); + } + + @JsonProperty("gmt_create") + private String gmtCreate; + + @JsonProperty("charset") + private String charset; + + @JsonProperty("seller_email") + private String sellerEmail; + + @JsonProperty("subject") + private String subject; + + @JsonProperty("sign") + private String sign; + + @JsonProperty("buyer_id") + private String buyerId; + + @JsonProperty("invoice_amount") + private BigDecimal invoiceAmount; + + @JsonProperty("notify_id") + private String notifyId; + + @JsonProperty("fund_bill_list") + private List fundBillList; + + @JsonProperty("notify_type") + private String notifyType; + + @JsonProperty("trade_status") + private TradeStatus tradeStatus; + + @JsonProperty("receipt_amount") + private BigDecimal receiptAmount; + + @JsonProperty("app_id") + private String appId; + + @JsonProperty("buyer_pay_amount") + private BigDecimal buyerPayAmount; + + @JsonProperty("sign_type") + private String signType; + + @JsonProperty("seller_id") + private String sellerId; + + @JsonProperty("gmt_payment") + private String gmtPayment; + + @JsonProperty("notify_time") + private String notifyTime; + + @JsonProperty("version") + private String version; + + @JsonProperty("out_trade_no") + private String outTradeNo; + + @JsonProperty("total_amount") + private BigDecimal totalAmount; + + @JsonProperty("trade_no") + private String tradeNo; + + @JsonProperty("auth_app_id") + private String authAppId; + + @JsonProperty("buyer_logon_id") + private String buyerLogonId; + + @JsonProperty("point_amount") + private BigDecimal pointAmount; + + @Data + public static class FundBill { + + private BigDecimal amount; + + private String fundChannel; + + } + +} diff --git a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java index d651308d..1a875c55 100644 --- a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java +++ b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/domain/AliPayQuery.java @@ -4,6 +4,7 @@ import static com.hccake.starte.pay.ali.constants.AliPayConstant.CODE_SUCCESS; import cn.hutool.core.util.StrUtil; import com.alipay.api.response.AlipayTradeQueryResponse; +import com.hccake.starte.pay.ali.enums.TradeStatus; import java.math.BigDecimal; import lombok.AccessLevel; import lombok.Getter; @@ -30,11 +31,11 @@ public class AliPayQuery { // 状态处理 if (CODE_SUCCESS.equals(raw.getCode())) { // 成功 - query.setStatus(Status.of(raw.getTradeStatus())); + query.setStatus(TradeStatus.of(raw.getTradeStatus())); } // 异常 else { - query.setStatus(Status.ERROR); + query.setStatus(TradeStatus.ERROR); } // 金额 @@ -62,7 +63,7 @@ public class AliPayQuery { /** * 订单状态 */ - private Status status; + private TradeStatus status; private String code; @@ -101,49 +102,4 @@ public class AliPayQuery { private String userType; - /** - * 交易状态 - */ - public enum Status { - - /** - * 成功 - */ - SUCCESS, - /** - * 未支付 - */ - WAIT, - /** - * 未付款交易超时关闭,或支付完成后全额退款 - */ - CLOSED, - /** - * 交易结束,不可退款 - */ - FINISHED, - /** - * 异常. 具体信息查询 subCode和subMsg - */ - ERROR, - - ; - - public static Status of(String status) { - switch (status) { - case "WAIT_BUYER_PAY": - return WAIT; - case "TRADE_CLOSED": - return CLOSED; - case "TRADE_SUCCESS": - return SUCCESS; - case "TRADE_FINISHED": - return FINISHED; - default: - return ERROR; - } - } - - } - } diff --git a/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/enums/TradeStatus.java b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/enums/TradeStatus.java new file mode 100644 index 00000000..4ac7e7bf --- /dev/null +++ b/ballcat-extends/ballcat-extend-pay-ali/src/main/java/com/hccake/starte/pay/ali/enums/TradeStatus.java @@ -0,0 +1,49 @@ +package com.hccake.starte.pay.ali.enums; + +import com.fasterxml.jackson.annotation.JsonCreator; + +/** + * 交易状态 + */ +public enum TradeStatus { + + /** + * 成功 + */ + SUCCESS, + /** + * 未支付 + */ + WAIT, + /** + * 未付款交易超时关闭,或支付完成后全额退款 + */ + CLOSED, + /** + * 交易结束,不可退款 + */ + FINISHED, + /** + * 异常. 具体信息查询 subCode和subMsg + */ + ERROR, + + ; + + @JsonCreator + public static TradeStatus of(String status) { + switch (status) { + case "WAIT_BUYER_PAY": + return WAIT; + case "TRADE_CLOSED": + return CLOSED; + case "TRADE_SUCCESS": + return SUCCESS; + case "TRADE_FINISHED": + return FINISHED; + default: + return ERROR; + } + } + +} diff --git a/ballcat-samples/ballcat-sample-pay/pom.xml b/ballcat-samples/ballcat-sample-pay/pom.xml index dfd72a4a..9a746ec8 100644 --- a/ballcat-samples/ballcat-sample-pay/pom.xml +++ b/ballcat-samples/ballcat-sample-pay/pom.xml @@ -17,6 +17,10 @@ + + com.hccake + ballcat-common-conf + com.hccake ballcat-spring-boot-starter-pay diff --git a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/ali/Controller.java b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/ali/Controller.java index 9b2fd7cd..4e3b6d96 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/ali/Controller.java +++ b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/ali/Controller.java @@ -3,12 +3,15 @@ package com.hccake.sample.pay.ali; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import com.hccake.starte.pay.ali.AliPay; +import com.hccake.starte.pay.ali.domain.AliPayCallback; import java.math.BigDecimal; import java.util.Map; +import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** @@ -21,18 +24,27 @@ public class Controller { private final AliPay aliPay; + BigDecimal amount = new BigDecimal("100"); + + BigDecimal zero = new BigDecimal("0.01"); + private static final Snowflake snowflake = IdUtil.createSnowflake(1, 1); + /** + * 支付宝支付回调 + * @param callback 回调参数 + * @return java.lang.String + * @author lingting 2021-01-26 15:18 + */ @PostMapping - public String notice(Map params) { - + public String notice(HttpServletRequest request, @RequestParam Map callback) { + System.out.println("notice"); + AliPayCallback of = AliPayCallback.of(callback); return "success"; } @GetMapping public String debug() { - String sn = snowflake.nextIdStr(); - BigDecimal amount = new BigDecimal("100"); // System.out.printf(sn); // aliPay.codePay(sn, amount, "280528061260052112", "测试"); return "success"; diff --git a/ballcat-samples/ballcat-sample-pay/src/main/resources/application.yml b/ballcat-samples/ballcat-sample-pay/src/main/resources/application.yml index 748e8a62..8514efe9 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/resources/application.yml +++ b/ballcat-samples/ballcat-sample-pay/src/main/resources/application.yml @@ -1,3 +1,7 @@ +spring: + application: + name: 支付演示 + ballcat: pay: bitcoin: From 02e7bd123b2b1ba6666cdd7b4551faeaa40f4a02 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Fri, 19 Feb 2021 17:20:46 +0800 Subject: [PATCH 4/7] =?UTF-8?q?:art:=20=E5=AF=86=E7=A0=81=E5=8A=A0?= =?UTF-8?q?=E8=A7=A3=E5=AF=86=E5=AF=86=E9=92=A5=E9=85=8D=E7=BD=AE=E7=94=B1?= =?UTF-8?q?=20password.secret-key=20=E5=8F=98=E6=9B=B4=E4=B8=BA=20ballcat.?= =?UTF-8?q?password.secret-key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/modules/sys/service/impl/SysUserServiceImpl.java | 2 +- .../ballcat/admin/oauth/filter/LoginPasswordDecoderFilter.java | 2 +- .../src/main/resources/application.yml | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java index 531595f9..2c8e2336 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java @@ -60,7 +60,7 @@ public class SysUserServiceImpl extends ExtendServiceImpl Date: Fri, 19 Feb 2021 17:21:31 +0800 Subject: [PATCH 5/7] =?UTF-8?q?:zap:=20=E5=9B=BE=E5=BD=A2=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=E6=B7=BB=E5=8A=A0=E5=BC=80=E5=85=B3=E9=85=8D?= =?UTF-8?q?=E7=BD=AE,=20=E9=BB=98=E8=AE=A4=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hccake/ballcat/admin/UpmsAutoConfiguration.java | 3 +++ .../src/main/resources/application.yml | 8 +++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/UpmsAutoConfiguration.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/UpmsAutoConfiguration.java index de79e563..5e79abf2 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/UpmsAutoConfiguration.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/UpmsAutoConfiguration.java @@ -13,6 +13,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletComponentScan; @@ -46,6 +47,8 @@ public class UpmsAutoConfiguration { } @Bean + @ConditionalOnProperty(prefix = "ballcat.login.captcha", name = "enabled", havingValue = "true", + matchIfMissing = true) public FilterRegistrationBean filterRegistrationBean(ObjectMapper objectMapper, CaptchaService captchaService) { FilterRegistrationBean bean = new FilterRegistrationBean<>(); diff --git a/ballcat-samples/ballcat-sample-admin-application/src/main/resources/application.yml b/ballcat-samples/ballcat-sample-admin-application/src/main/resources/application.yml index c562feaa..dc4ba44f 100644 --- a/ballcat-samples/ballcat-sample-admin-application/src/main/resources/application.yml +++ b/ballcat-samples/ballcat-sample-admin-application/src/main/resources/application.yml @@ -45,6 +45,9 @@ ballcat: aggregator: provider-resources: - { name: ballcat-api, url: http://ballcat-api:9090/v2/api-docs, swagger-version: 2.0 } + login: + captcha: + enabled: true security: oauth2: @@ -84,11 +87,6 @@ mybatis-plus: logic-delete-value: "NOW()" # 逻辑已删除值(使用当前时间标识) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) - -# 密码加解密密钥 -password: - secret-key: '==BallCat-Auth==' - # 定时任务相关配置 xxl: job: From a0dc99ac03b2cfd36e3c35f5f87d441a807e7810 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Fri, 19 Feb 2021 17:21:52 +0800 Subject: [PATCH 6/7] =?UTF-8?q?:zap:=20=E6=B7=BB=E5=8A=A0=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84yml=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../additional-spring-configuration-metadata.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 ballcat-admin/ballcat-admin-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json diff --git a/ballcat-admin/ballcat-admin-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/ballcat-admin/ballcat-admin-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 00000000..31fbd623 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,15 @@ +{ + "properties": [ + { + "name": "ballcat.login.captcha.enabled", + "type": "java.lang.Boolean", + "description": "是否开启登录验证码.", + "defaultValue": true + }, + { + "name": "ballcat.password.secret-key", + "type": "java.lang.String", + "description": "密码加解密密钥." + } + ] +} \ No newline at end of file From 442adbf6ac30e0f08e907d1589168b4648167cbb Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Fri, 19 Feb 2021 17:26:46 +0800 Subject: [PATCH 7/7] =?UTF-8?q?:zap:=20=E6=9B=B4=E6=94=B9=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E5=8A=A0=E8=A7=A3=E5=AF=86=E5=AF=86=E9=92=A5=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ballcat/admin/modules/sys/controller/SysUserController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysUserController.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysUserController.java index 09ef5c71..45b34b67 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysUserController.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysUserController.java @@ -59,7 +59,7 @@ public class SysUserController { /** * TODO 封装为实体对象,方便归档系统参数 */ - @Value("${password.secret-key}") + @Value("${ballcat.password.secret-key}") private String passwordSecretKey; /**