|
|
@@ -141,13 +141,11 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
|
|
|
// 解析响应
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 创建订单响应: body={}", responseBody);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
|
|
|
String outOrderNo = getJsonString(respJson, "out_order_no");
|
|
|
String state = getJsonString(respJson, "state");
|
|
|
@@ -157,7 +155,7 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
result.setPackageStr(packageStr);
|
|
|
|
|
|
Map<String, Object> rawData = new HashMap<>();
|
|
|
- rawData.put("response", responseBody);
|
|
|
+ rawData.put("response", respJson.toString());
|
|
|
result.setRawData(rawData);
|
|
|
|
|
|
log.info("[微信支付分] 创建订单成功 - 订单号: {}, 状态: {}, package: {}", outOrderNo, state, packageStr);
|
|
|
@@ -267,14 +265,12 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
|
|
|
// 解析响应体
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 完结订单响应: body={}", responseBody);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- if (responseBody != null && !responseBody.isEmpty()) {
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
+ if (respJson != null && respJson.size() > 0) {
|
|
|
String outOrderNo = getJsonString(respJson, "out_order_no");
|
|
|
String state = getJsonString(respJson, "state");
|
|
|
log.info("[微信支付分] 完结订单成功 - 订单号: {}, 状态: {}", outOrderNo, state);
|
|
|
@@ -330,14 +326,12 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
|
|
|
// 解析响应体
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 取消订单响应: body={}", responseBody);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- if (responseBody != null && !responseBody.isEmpty()) {
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
+ if (respJson != null && respJson.size() > 0) {
|
|
|
String outOrderNo = getJsonString(respJson, "out_order_no");
|
|
|
String state = getJsonString(respJson, "state");
|
|
|
log.info("[微信支付分] 取消订单成功 - 订单号: {}, 状态: {}", outOrderNo, state);
|
|
|
@@ -388,13 +382,11 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
|
|
|
// 解析响应
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 查询订单响应: body={}", responseBody);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
|
|
|
String respOutOrderNo = getJsonString(respJson, "out_order_no");
|
|
|
String state = getJsonString(respJson, "state");
|
|
|
@@ -408,7 +400,7 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
}
|
|
|
|
|
|
Map<String, Object> rawData = new HashMap<>();
|
|
|
- rawData.put("response", responseBody);
|
|
|
+ rawData.put("response", respJson.toString());
|
|
|
result.setRawData(rawData);
|
|
|
|
|
|
log.info("[微信支付分] 查询订单成功 - 订单号: {}, 状态: {}, 金额: {}元",
|
|
|
@@ -476,11 +468,9 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 修改金额响应: body={}", responseBody);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
String outOrderNo = getJsonString(respJson, "out_order_no");
|
|
|
String state = getJsonString(respJson, "state");
|
|
|
|
|
|
@@ -531,11 +521,9 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 同步订单响应: body={}", responseBody);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
String outOrderNo = getJsonString(respJson, "out_order_no");
|
|
|
String state = getJsonString(respJson, "state");
|
|
|
|
|
|
@@ -584,11 +572,9 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 退款响应: body={}", responseBody);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
String outOrderNo = getJsonString(respJson, "out_order_no");
|
|
|
String refundId = getJsonString(respJson, "refund_id");
|
|
|
|
|
|
@@ -632,11 +618,9 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
.addHeader("Accept", MediaType.APPLICATION_JSON.getValue())
|
|
|
.build();
|
|
|
|
|
|
- HttpResponse<String> response = wxPayHttpClient.execute(httpRequest, String.class);
|
|
|
- String responseBody = response.getServiceResponse();
|
|
|
- log.info("[微信支付分] 查询退款响应: body={}", responseBody);
|
|
|
+ HttpResponse<JsonNode> response = wxPayHttpClient.execute(httpRequest, JsonNode.class);
|
|
|
+ JsonNode respJson = response.getServiceResponse();
|
|
|
|
|
|
- JsonNode respJson = objectMapper.readTree(responseBody);
|
|
|
String status = getJsonString(respJson, "status");
|
|
|
|
|
|
PayScoreResult result = PayScoreResult.success(outOrderNo, status);
|
|
|
@@ -797,6 +781,25 @@ public class WxPayScoreStrategy implements PayScoreStrategy {
|
|
|
return json.get(key).asText();
|
|
|
}
|
|
|
return null;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从 MalformedMessageException 中提取 JSON 响应体
|
|
|
+ * SDK 的 String.class 反序列化会抛此异常,响应体在异常消息中
|
|
|
+ */
|
|
|
+ private JsonNode parseResponseFromException(MalformedMessageException e) throws Exception {
|
|
|
+ String message = e.getMessage();
|
|
|
+ if (message != null) {
|
|
|
+ int start = message.indexOf("{");
|
|
|
+ int end = message.lastIndexOf("}");
|
|
|
+ if (start >= 0 && end > start) {
|
|
|
+ String body = message.substring(start, end + 1);
|
|
|
+ log.info("[微信支付分] 从异常中提取响应体: {}", body);
|
|
|
+ return objectMapper.readTree(body);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ throw e;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|