Notification
交易异步通知
通知实例
{
"code": 100,
"appId": 3,
"isTest": true,
"uniqueId": "1867098610731065345",
"transactionType": "Sale",
"transactionCurrency": "USD",
"transactionAmount": "94.93",
"transactionId": "1733985972",
"billDescription": "description.com",
"transactionCardNumber": "485023******9618",
"transactionMessage": "Approved",
"message": "successful transaction",
"timestamp": 1733985979185,
"sign": "82647d814560b4104db20f65388068ee576036e155d7b9964b9f7fe3c12c8d77"
}{
"code": 111,
"transactionType": "Refund",
"appId": 3,
"uniqueId": "1867098610731065345",
"refundCurrency": "USD",
"refundAmount": "8.88",
"refundUniqueId": "1867098723574620161",
"refundMessage": "退款成功",
"merchantRefundId": "1733985999",
"message": "Refund successful",
"timestamp": 1733986022411,
"sign": "9769300b6821e0e0fe6a8044a1456066c226762e17ba3f0e493fd12ed12da9b8"
}{
"appId": 1862433537316352001,
"transactionType": "Chargeback",
"chargebackCurrency": "HKD",
"chargebackAmount": "11.00",
"uniqueId": "1862437361955270657",
"transactionId": "1732874641",
"chargebackUniqueId": "1864601282577305601",
"timestamp": 1733390573134,
"sign": "614363d4c65c4d15f6ee52cdef770db057a3613ddc7f92f65201b09a853c271c"
}通知签名 Sign
以上面通知实例-Sale为例,参数排序后顺序如下
appId,billDescription,code,isTest,message,timestamp,transactionAmount,transactionCardNumber, transactionCurrency,transactionId,transactionMessage,transactionType,uniqueId
取出非空字符串,组合字符串如下
3description.com100truesuccessful transaction173398597918594.93485023******9618USD 1733985972ApprovedSale1867098610731065345
最后添加 Secret Key 到末尾,测试用例 Secret Key 为 000000
3description.com100truesuccessful transaction173398597918594.93485023******9618USD 1733985972ApprovedSale1867098610731065345000000
使用 SHA256 加密得到 sign 参数
82647d814560b4104db20f65388068ee576036e155d7b9964b9f7fe3c12c8d77
参考 Demo (Java)
Map<String, Object> map = 通知返回报文 JSON 格式
StringBuffer buffer = new StringBuffer();
map.entrySet().stream().sorted(Map.Entry.comparingByKey())
.map(x -> x.getValue())
.filter(x -> ObjectUtils.isNotEmpty(x))
.forEachOrdered(x -> buffer.append(x));
buffer.append("商户交易 Secret Key");
String sign = Sha256.encode(buffer.toString());Last updated