diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/PayException.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/PayException.java index 8d605ec..ea1723b 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/PayException.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/PayException.java @@ -18,11 +18,17 @@ */ package cn.felord.payment; +import org.springframework.http.ResponseEntity; + /** * @author felord.cn * @since 1.0.0.RELEASE */ public class PayException extends RuntimeException { + /** + * response maybe null + */ + private ResponseEntity response; public PayException() { } @@ -42,4 +48,12 @@ public class PayException extends RuntimeException { public PayException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } + + public ResponseEntity getResponse() { + return response; + } + + public void setResponse(ResponseEntity response) { + this.response = response; + } } diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayClient.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayClient.java index 8c76203..0ce7876 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayClient.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayClient.java @@ -178,13 +178,14 @@ public class WechatPayClient { WechatRequestEntity wechatRequestEntity = WechatRequestEntity.of(requestEntity, this.responseBodyConsumer); return this.doDownload(this.header(wechatRequestEntity)); } + /** * Download string. * * @return the string * @since 1.0.6.RELEASE */ - public ResponseEntity resource() { + public ResponseEntity resource() { RequestEntity requestEntity = this.requestEntityBiFunction.apply(this.wechatPayV3Type, this.model); WechatRequestEntity wechatRequestEntity = WechatRequestEntity.of(requestEntity, this.responseBodyConsumer); return this.doResource(this.header(wechatRequestEntity)); @@ -253,7 +254,9 @@ public class WechatPayClient { // 微信请求id String requestId = headers.getFirst("Request-ID"); if (!statusCode.is2xxSuccessful()) { - throw new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + body); + PayException payException = new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + body); + payException.setResponse(responseEntity); + throw payException; } ResponseSignVerifyParams params = new ResponseSignVerifyParams(); @@ -276,7 +279,9 @@ public class WechatPayClient { responseConsumer.accept(responseEntity); } } else { - throw new PayException("wechat pay signature verify failed, Request-ID " + requestId); + PayException payException = new PayException("wechat pay signature verify failed, Request-ID " + requestId); + payException.setResponse(responseEntity); + throw payException; } } @@ -295,7 +300,9 @@ public class WechatPayClient { // 微信请求id String requestId = requestEntity.getHeaders().getFirst("Request-ID"); if (!statusCode.is2xxSuccessful()) { - throw new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + responseEntity); + PayException payException = new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + responseEntity); + payException.setResponse(responseEntity); + throw payException; } return Optional.ofNullable(responseEntity.getBody()).orElse(""); } @@ -309,7 +316,7 @@ public class WechatPayClient { * @return the resource * @since 1.0.6.RELEASE */ - private ResponseEntity doResource(WechatRequestEntity requestEntity) { + private ResponseEntity doResource(WechatRequestEntity requestEntity) { ResponseEntity responseEntity = restOperations.exchange(requestEntity, Resource.class); @@ -317,7 +324,9 @@ public class WechatPayClient { // 微信请求id String requestId = requestEntity.getHeaders().getFirst("Request-ID"); if (!statusCode.is2xxSuccessful()) { - throw new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + responseEntity); + PayException payException = new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + responseEntity); + payException.setResponse(responseEntity); + throw payException; } return responseEntity; }