### :-: 簽名算法
簽名生成的通用步驟如下:
第一步,設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序)
第二步,將ASCII排序后的參數取參數值拼接起來(即`value1value2value3`)拼接成字符串stringA。
特別注意以下重要規則:
◆ 參數名ASCII碼從小到大排序(字典序);
◆ 如果參數的值為空不參與簽名;
◆ 參數名區分大小寫;
◆ 參數名區分大小寫;
第三步,在stringA拼接上payKey得到stringSignTemp字符串,并對stringSignTemp進行MD5運算(32位小寫),將結果賦值給Sign。
◆ payKey獲取路徑:ISPAY商戶平臺([https://www.ispay.cn]())-->開發者-->應用配置-->商戶密鑰
舉例:
假設傳送的參數:
```
payId:10000
payChannel:wxpay
Subject:測試標題
Money:100
orderNumber:201702080118441263011007
attachData:test
```
第一步:按照參數名ASCII字典序排序:
```
Money:100
Subject:測試標題
attachData:test
orderNumber:201702080118441263011007
payChannel:wxpay
payId:10000
```
第二步:將ASCII字典序排序后的參數取參數值依次拼接成字符串:
```
stringA = "100測試標題test201702080118441263011007wxpay10000"
```
第三步:拼接商戶密鑰(payKey)并完成MD5加密:
```
stringSignTemp = stringA + payKey //注:payKey為商戶密鑰在后臺獲取
Sign = md5(stringSignTemp)
```
得到最終發送的數據:
```
payId:10000
payChannel:wxpay
Subject:測試標題
Money:100
orderNumber:201702080118441263011007
attachData:test
Sign:d03a67eda097c2ecfaceb170a8527035
```