public final class XPayIntlResponseVerifier extends Object
工具使用发起请求所对应的 API Secret,对响应 Timestamp、Nonce 和精确原始 Body
组成的三行原文验签。验签失败统一返回 false,调用方必须 fail-close,不能据此响应更新订单终态。
| Modifier and Type | Method and Description |
|---|---|
static String |
sign(String timestamp,
String nonce,
byte[] rawBody,
String apiSecret)
生成普通 API 响应签名。
|
static boolean |
verify(String timestampHeader,
String nonceHeader,
String signatureHeader,
byte[] rawBody,
String apiSecret,
long toleranceSeconds)
校验普通 API 响应签名。
|
static boolean |
verify(String timestampHeader,
String nonceHeader,
String signatureHeader,
String rawBody,
String apiSecret,
long toleranceSeconds)
校验 UTF-8 文本形式的普通 API 响应签名。
|
public static boolean verify(String timestampHeader, String nonceHeader, String signatureHeader, byte[] rawBody, String apiSecret, long toleranceSeconds)
每行后均包含一个换行字节,包括 Body 后的最后一个换行。方法先检查时间窗口,再执行常量时间比较;
Header 缺失、格式错误、超窗或密钥错误均 fail-close 返回 false。方法无事务、缓存、网络或异步副作用,
可并发调用。
timestampHeader - 响应 Timestamp HeadernonceHeader - 响应 Nonce HeadersignatureHeader - 响应 Signature Header,格式为 v1= 加 64 位小写十六进制rawBody - 实际收到且未经 JSON 解析、格式化或重编码的响应 Body 字节apiSecret - 本次请求 API Key 对应的 API SecrettoleranceSeconds - 与本机 Unix 时间允许的最大偏差秒数,必须大于零true,否则返回 falsepublic static boolean verify(String timestampHeader, String nonceHeader, String signatureHeader, String rawBody, String apiSecret, long toleranceSeconds)
该重载便于未修改响应字符串的轻量接入;若框架可获取原始字节,应优先使用字节重载避免字符集转换。
验签失败返回 false,不启动事务、缓存或异步任务。
timestampHeader - 响应 Timestamp HeadernonceHeader - 响应 Nonce HeadersignatureHeader - 响应 Signature HeaderrawBody - 未改写的 UTF-8 响应 BodyapiSecret - 本次请求 API Key 对应的 API SecrettoleranceSeconds - 时间戳最大允许偏差秒数,必须大于零true,否则返回 falsepublic static String sign(String timestamp, String nonce, byte[] rawBody, String apiSecret)
该方法用于对接测试、测试向量和服务端互操作验证;生产商户通常只需调用 verify(java.lang.String, java.lang.String, java.lang.String, byte[], java.lang.String, long)。签名原文严格
保留原始 Body 字节,方法无事务、缓存、网络或异步副作用。
timestamp - 响应 Unix 秒级时间戳nonce - 响应随机串rawBody - 原始响应 Body 字节apiSecret - API Secretv1= 加 64 位小写十六进制签名XPayIntlException - 参数含换行、密钥为空或加密算法异常时抛出Copyright © 1980. All rights reserved.