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,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> resource() {
public ResponseEntity<Resource> 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 <T> ResponseEntity<Resource> doResource(WechatRequestEntity<T> requestEntity) {
private <T> ResponseEntity<Resource> doResource(WechatRequestEntity<T> requestEntity) {
ResponseEntity<Resource> 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;
}