|
|
@@ -94,17 +94,27 @@ public class OmgPay {
|
|
|
params.put("TimeStamp", String.valueOf(System.currentTimeMillis() / 1000L));
|
|
|
params.put("CheckMacValue", OmgCheckMacValue.generate(params, cfg.getHashKey(), cfg.getHashIv()));
|
|
|
String resp = postForm(endpoint(baseUrl, URL_QUERY_TRADE_INFO), params);
|
|
|
+ log.info("[OMG] queryTrade 查询返回 resp={}",resp);
|
|
|
Map<String, String> result;
|
|
|
try {
|
|
|
result = parseKvResponse(resp);
|
|
|
} catch (RuntimeException e) {
|
|
|
- log.error("[OMG] queryTrade 解析响应失败 MerchantTradeNo={} resp={}", merchantTradeNo, truncate(resp, 500), e);
|
|
|
+ log.error("[OMG] queryTrade 解析响应失败 MerchantTradeNo={} resp={}", merchantTradeNo, resp, e);
|
|
|
throw e;
|
|
|
}
|
|
|
try {
|
|
|
verifyResponse(result, cfg, true);
|
|
|
} catch (RuntimeException e) {
|
|
|
- log.error("[OMG] queryTrade 验签失败 MerchantTradeNo={} resp={}", merchantTradeNo, truncate(resp, 500), e);
|
|
|
+ String receivedCmv = result.get("CheckMacValue");
|
|
|
+ String computedCmv;
|
|
|
+ try {
|
|
|
+ computedCmv = OmgCheckMacValue.generate(result, cfg.getHashKey(), cfg.getHashIv());
|
|
|
+ } catch (Exception ce) {
|
|
|
+ computedCmv = "generate-error:" + ce.getClass().getName() + ":" + ce.getMessage();
|
|
|
+ }
|
|
|
+ log.error("[OMG] queryTrade 验签失败 MerchantTradeNo={} TradeStatus={} RtnCode={} receivedCMV={} computedCMV={} hashKey={} hashIv={} resp={}",
|
|
|
+ merchantTradeNo, result.get("TradeStatus"), result.get("RtnCode"),
|
|
|
+ receivedCmv, computedCmv, mask(cfg.getHashKey()), mask(cfg.getHashIv()), resp, e);
|
|
|
throw e;
|
|
|
}
|
|
|
verifyCorrelation(result, "MerchantID", cfg.getMerchantId());
|
|
|
@@ -260,11 +270,14 @@ public class OmgPay {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /** 截断响应文本用于诊断日志(null 安全)。 */
|
|
|
- private static String truncate(String s, int max) {
|
|
|
+ /** 脱敏凭证用于日志:前2后2+长度,够排查贴错又不泄露完整值。 */
|
|
|
+ private static String mask(String s) {
|
|
|
if (s == null) {
|
|
|
- return null;
|
|
|
+ return "null";
|
|
|
+ }
|
|
|
+ if (s.length() <= 4) {
|
|
|
+ return "***(len=" + s.length() + ")";
|
|
|
}
|
|
|
- return s.length() <= max ? s : s.substring(0, max);
|
|
|
+ return s.substring(0, 2) + "***" + s.substring(s.length() - 2) + "(len=" + s.length() + ")";
|
|
|
}
|
|
|
}
|