```
### > 簽名生成的通用步驟如下:(整套系統簽名方式均采用以下簽名算法)
```
### 簽名生成的通用步驟如下:(整套系統簽名方式均采用以下簽名算法)
第一步:設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序)
第二步:將ASCII排序后的參數取參數鍵值對拼接起來(即**value1value2value3**)拼接成字符串stringA。
* * *
特別注意以下重要規則:
◆ 參數名ASCII碼從小到大排序(字典序);
◆ 如果參數的值為空不參與簽名;
◆ 參數名區分大小寫;
* * *
第三步:在stringA拼接上key得到stringSignTemp字符串,并對stringSignTemp進行MD5運算(32位小寫),將結果賦值給Sign。例如,密鑰為123456,加密明文為:stringA&key=123456,再進行Md5加密。
*****
◆ key獲取路徑:商戶平臺([https://admin.fanweyun.cn/](https://admin.fanweyun.cn//))-->開發者-->應用配置-->商戶密鑰
舉例:
假設傳送的參數:
~~~
api_id:10000
order_id:201702080118441263011007
order_amount:100
pay_type:alipay_qr
~~~
第一步:按照參數名ASCII字典序排序:
~~~
api_id:10000
order_amount:100
order_id:201702080118441263011007
pay_type:alipay_qr
~~~
第二步:將ASCII字典序排序后的參數取參數值依次拼接成字符串:
~~~
stringA = "api_id=10000&order_amount=100&order_id=201702080118441263011007&pay_type=alipay_qr"
~~~
第三步:拼接商戶密鑰(key)并完成MD5加密:
~~~
stringSignTemp = stringA + key” //注:密鑰為商戶密鑰在后臺獲取
Sign = md5(stringSignTemp)
~~~
得到最終發送的數據:
~~~
api_id:10000
order_id:201702080118441263011007
order_amount:100
pay_type:alipay_qr
sign:c0bb4ff923d9d2c53c7a1b13d4f65a13
~~~