签名算法

签名生成的通用步骤如下

第一步
假设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序)
使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
参数名ASCII码从小到大排序(字典序);
如果参数的值为空(null 或 ""[空字符串] " "[空字符串] 字符均不参与签名)不参与签名;   
参数名区分大小写;   
验证调用返回或支付中心主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。   
支付中心接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步
在stringA最后拼接上key`[即 StringA +"&key=" + 私钥 ]` 得到stringSignTemp字符串,
并对stringSignTemp进行MD5运算
DEMO

如请求支付系统参数如下

{
  "merchantNo": 22190316182634888,
  "merchantOrderNo": "92e6f005b40746ea82360a36f7c2e8a2",
  "currency": 1,
  "notifyURL": "https://www.baidu.com/api/test/demo/webhook/pay",
  "wayCode": "ALI_PC",
  "extras": "{}",
  "amount": 100,
  "timestamp": 1767108249845,
  "returnURL": "https://www.baidu.com/api/test/demo/page/pay"
}

拼接成字符串stringA

amount=100.00&currency=1&extras={}&merchantNo=22190316182634496&merchantOrderNo=92e6f005b40746ea82360a36f7c2e8a2&notifyURL=https://www.baidu.com/api/test/demo/webhook/pay&returnURL=https://www.baidu.com/api/test/demo/page/pay&timestamp=1767108249845&wayCode=ALI_PC

待签名值stringSignTemp

 amount=100.00&currency=1&extras={}&merchantNo=22190316182634496&merchantOrderNo=92e6f005b40746ea82360a36f7c2e8a2&notifyURL=https://www.baidu.com/api/test/demo/webhook/pay&returnURL=https://www.baidu.com/api/test/demo/page/pay&timestamp=1767108249845&wayCode=ALI_PC&key=8ff81f5fdd065fc2e862

签名结果

md5(stringSignTemp)
08240cc7f7b6dd2749fc0bedfcea8bbe

最终请求支付系统参数

{
  "merchantNo": 22190316182634888,
  "merchantOrderNo": "92e6f005b40746ea82360a36f7c2e8a2",
  "currency": 1,
  "notifyURL": "https://www.baidu.com/api/test/demo/webhook/pay",
  "wayCode": "ALI_PC",
  "extras": "{}",
  "amount": 100,
  "timestamp": 1767108249845,
  "returnURL": "https://www.baidu.com/api/test/demo/page/pay",
  "sign": "08240cc7f7b6dd2749fc0bedfcea8bbe"
}

私钥请见商户管理后台

results matching ""

    No results matching ""