## **數據格式說明及簽名規則等**
**數據格式:**
- `為保證交易安全性,建議采用HTTPS傳輸`
- `采用POST方法提交`
- `提交數據格式:application/x-www-form-urlencoded`
- `返回數據格式:text/xml`
- `字符編碼:統一采用UTF-8字符編碼`
- `簽名算法:MD5`
- `簽名要求:請求和接收數據均需要校驗簽名`
- `判斷邏輯:先判斷協議字段返回,再判斷業務返回,最后判斷交易狀態`
**請求數據:**
```
amount=1&merchant_id=9605008025&nonce_str=66318&pay_way=WXZF&service=get_tdcode&
sign=8a7167c448baef94e2d22c4d78d4d07c&third_order_id=NL2019032218253280439
```
**響應數據:**
- `正常返回`
```
<leshua>
<resp_code><![CDATA[0]]></resp_code>
<merchant_id><![CDATA[9605008025]]></merchant_id>
<sign><![CDATA[DB45DA9E55DD666C49F3963733D2602E]]></sign>
<result_code><![CDATA[0]]></result_code>
<third_order_id><![CDATA[NL2019032218253138930]]></third_order_id>
<nonce_str><![CDATA[rzmkrvsvprjjoqgjpzrmubbdeovjhrcu]]></nonce_str>
<td_code><![CDATA[weixin://wxpay/bizpayurl?pr=kZF1s1X]]></td_code>
<pay_way><![CDATA[WXZF]]></pay_way>
<leshua_order_id><![CDATA[0003495002500081]]></leshua_order_id>
</leshua>
```
- `業務級錯誤返回`
```
<leshua>
<resp_code><![CDATA[0]]></resp_code>
<merchant_id><![CDATA[9605008025]]></merchant_id>
<sign><![CDATA[22B542D7A1EE3EACE9DD90537B5D8D68]]></sign>
<result_code><![CDATA[1]]></result_code>
<third_order_id><![CDATA[NL2019032218253291474]]></third_order_id>
<pay_way><![CDATA[WXZF]]></pay_way>
<nonce_str><![CDATA[acvlgvqgwekjujypttfhulneqsgubnvc]]></nonce_str>
<error_msg><![CDATA[超出單筆支付限額,無法支付]]></error_msg>
<error_code><![CDATA[-1041]]></error_code>
</leshua>
```
**數字簽名:**
- 為了保證數據傳輸過程中的數據真實性和完整性,我們需要對數據進行數字簽名,在接收簽名數據之后進行簽名校驗。
- 簽名有兩個步驟,先按一定規則拼接要簽名的原始串,再選擇具體的算法和密鑰計算出簽名結果。
- 原始串中,字段名和字段值都采用原始值,不進行URL Encode。
- 平臺返回的應答或通知消息可能會由于升級增加參數,請驗證應答簽名時注意允許這種情況。
**簽名方法:**
- 設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
- 在stringA最后拼接上key得到stringSignTemp字符串,并對stringSignTemp進行MD5運算,再將得到的字符串所有字符轉換為大寫,得到sign值signValue。
**簽名樣例:**
- 假設需要傳遞的參數如下:
```
server:query_status
merchant_id:1234567890
third_order_id:12345678901
nonce_str:12345678901
```
- 對參數按照key=value的格式,并按照參數名ASCII字典序排序如下
```
stringA=merchant_id=1234567890&nonce_str=12345678901&server=query_status&third_order_id=12345678901
```
- 拼接商戶秘鑰key
```
stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key為商戶密鑰key
```
- 計算簽名
```
交易報文MD5計算:sign=MD5(stringSignTemp).toUpperCase()
通知報文MD5計算:sign=MD5(stringSignTemp).toLowerCase()
```
**特別注意:**
- 請求數據驗簽方法
```
除sign、leshua、resp_code字段外,其他參數按照簽名方法驗簽,空值不傳遞,不參與簽名組串。
```
- 應答數據驗簽方法
```
除sign、leshua、resp_code字段外,其他參數按照簽名方法驗簽,空值參與簽名組串。
```
- 產品介紹
- 1、概述
- 2、變更記錄
- 應用場景
- 進件應用場景
- 交易應用場景
- 對賬應用場景
- 交易錯誤碼信息參照表
- 進件接口
- 接口指南及簽名算法等說明
- 圖片上傳
- 商戶進件
- 商戶開通業務
- 商戶信息修改
- 商戶查詢
- 商戶支付參數-新增
- 商戶支付參數-查詢
- 商戶審核回調
- 子商戶號查詢
- 商戶微信實名認證-申請
- 商戶微信實名認證-撤銷
- 商戶微信實名認證-查詢
- 交易接口
- 數據格式及簽名規則說明
- 統一下單
- 條碼支付
- 交易結果查詢
- 訂單關閉
- 退款
- 退款查詢
- 授權碼查詢用戶openid
- 授權碼獲取銀聯云閃付用戶ID
- 退款結果通知
- 支付結果通知
- 打款查詢
- 商戶打款單結果查詢
- 查詢商戶指定日期打款情況
- 查詢旗下商戶打款失敗明細
- 打款回調
- 對賬單文件
- 交易對賬單
- 代理商分潤對賬單
- 代理商退貨分潤對賬單
- 商戶打款單
- POS機具通知
- 數據格式及數據簽名說明
- 掃碼支付成功通知
- 掃碼退款通知
- 刷卡交易通知
- FAQ
- 進件相關
- 交易相關
- POS相關
- 手續費及分潤計算
- Demo相關下載
- Demo與進件相關數據和對賬單文件示例下載
- Java-SDK使用說明
- 商戶進件資料提交規范
- 商戶信息提交規范
- 商戶結算信息提交規范
- 圖片上傳提交規范
- 結算
- 常見打款失敗原因
- 商戶修改結算卡流程
- 商戶特殊業務
- 商戶申請關注公眾號
- 商戶申請手續費開票流程
- 機具購買流程
- saasPOS機具清單信息
- 服務商機具購買流程
- saas刷臉設備清單信息
- 商戶微信認證操作指引
- 商戶微信認證操作指引
- 重要通知