refactor: 在异常返回时对非2xx状态返回的元信息进行包装方便序列化

用户需要判断非空

Closes #16
This commit is contained in:
felord.cn
2021-03-09 23:44:48 +08:00
committed by felord.cn
parent ec77604b99
commit 4f71f419a7
2 changed files with 29 additions and 6 deletions

View File

@@ -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;
}
}

View File

@@ -178,6 +178,7 @@ public class WechatPayClient {
WechatRequestEntity<?> wechatRequestEntity = WechatRequestEntity.of(requestEntity, this.responseBodyConsumer);
return this.doDownload(this.header(wechatRequestEntity));
}
/**
* Download string.
*
@@ -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("");
}
@@ -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;
}