加签是开放平台和商户对于交互消息完整性的校验。加签行为主要发生两个部分:
request.body 进行签名(SHA256WithRSA 计算原始数据的SHA-256哈希值。 使用私钥对哈希值进行签名,即使用私钥对哈希值进行RSA加密。此时得到的加密结果就是数字签名。);Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
// 计算 SHA256withRSA 签名时,需要以 utf-8 的编码转换 byte 流,否则可能导致含中文参数的签名计算不正确
signature.update(request.body);
byte[] signedHash = signature.sign();String signature = Base64.getEncoder().encodeToString(signedHash);交互数据的编码【utf-8】
"UTF-8"
接口版本,当前版本为【2.0.0】,目前只能传2.0.0,不能不传
8"2.0.0"
交易类型
- 支付类交易使用 PAY
- VCC 卡交易使用 VCC
PAY, CREDIT_CARD, 3D_PREAUTH_VOIDS, 3D_PREAUTH_COMPLETION, REFUND, VOIDS, QUERY, TRANSFER, DOWNLOAD, REGISTRATION, FILEUPLOAD, INQUIRYREGISTRATIONSTATUS, AUTHORIZE, VCC 接口访问类型
"s2s"
报文签名类型
"RSA"
机构号
"2023010558663764"
商户号
32"2023010558663764"
请求时间,符合rfc3339规范,格式:yyyy-MM-dd'T'HH:mm:ss.SSSXXX 时间需要在当前时间两分钟内
32"2024-05-24T14:29:32.682+08:00"
密钥版本 当前值为:1
8商户订单号
"20230105586637641001"
商户订单的时间,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ssSSS+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35.262+08:00表示,北京时间2015年5月20日13点29分35秒。 需要在当前时间两分钟内
"2024-07-18T17:19:59.74+08:00"
交易金额
"100.01"
原商户订单号
"20230105586637641001"
异步通知地址
"https://www.google.com"
原订单号
"TR1654008732742455296"
商户扩展
"扩展"
保留域
"保留"
OK
是否成功
响应状态码,errCode为00000000表示响应成功,其他状态码表示响应失败。具体系统错误码可以参考系统错误码。
"00000003"
错误消息
"处理中"
订单状态(见补充说明)
"PENDING"
请求消息唯一标识。traceId为本次调用产生的流水号,接口调用异常,可以提供此流水号用于排查问题。
"33fae7b7aed1233f"