### 協議規則
* * * * *
<table>
<tbody>
<tr>
<th width="15%">傳輸方式</th>
<td>為保證交易安全性,采用HTTPS傳輸</td>
</tr>
<tr>
<th>提交方式</th>
<td>采用POST方法提交</td>
</tr>
<tr>
<th>數據格式</th>
<td>提交和返回數據都為Json格式,基本數據 {
"result_code":"OK",
"result_msg":"SUCCESS",
"charge": {
}
}</td>
</tr>
<tr>
<th>字符編碼</th>
<td>統一采用UTF-8字符編碼</td>
</tr>
<tr>
<th>簽名算法</th>
<td>RSA2,后續會兼容SHA1、MD5等。</td>
</tr>
<tr>
<th>簽名要求</th>
<td>請求和接收數據均需要校驗簽名</td>
</tr>
<tr>
<th>證書要求</th>
<td>所有API操作都要求使用證書</td>
</tr>
<tr>
<th>判斷邏輯</th>
<td>先判斷協議字段返回,再判斷業務返回,最后判斷交易狀態</td>
</tr>
</tbody>
</table>
### 參數規范
* * * * *
1、交易金額
交易金額默認為人民幣交易,接口中參數支付金額單位為【元】。
2、交易類型
WXSCAN--微信掃碼支付、QQSCAN--QQ掃碼支付,統一下單接口channel的傳參可參考這里
3、貨幣類型
貨幣類型的取值列表:
CNY:人民幣
### 簽名算法
* * * * *
>[success]第一步:設所有發送或者接收到的數據為集合A,將集合M內非空參數值的參數按照參數名`ASCII`碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串`string`。
特別注意以下重要規則:
◆ 參數名ASCII碼從小到大排序(字典序);
◆ 如果參數的值為空不參與簽名;
◆ 參數名區分大小寫;
◆ 驗證調用返回或支付中心主動通知簽名時,傳送的sign參數不參與簽名,將生成的簽名與該sign值作校驗。
◆ 支付中心接口可能增加字段,驗證簽名時必須支持增加的擴展字段
>[warning]第二步:在`string`最后拼接上`key`得到`stringSignTemp`字符串,并對`stringSignTemp`進行`Base64`運算,再將得到的字符串所有字符轉換為大寫,得到`sign`值并入RSA進行簽名運算得出最后的`signature`。
>商戶中心會分配業務系統key,業務系統會有API請求key以及商戶公鑰`cretKey`:
`key:業務系統請求支付中心對應的key
`
`cretKey:支付中心業務系統數據處理Key`
>[danger]示例 :`RmLCFirMbwv1I9s3Wdq6sTzLYOQrMm/ZlHZFj+oyNToFFJzAx79pG+aCMJ56v81vmtIlCrksvXCyXlW4QqJJGF0HfM23ypB6hK2DWDeIO8irluig7mbx7BjlKPl30yCMejdnIVBYNh2v4oVF+85M2IgsdDpeyWhPofXfyxmKU6ibIr5U+Ir6CNjtvX9PRVSk9PbChmwKNuOzAGRRc0qCLXumD118huaWTa2kKemyInt2CvU6hbxkG0G5Xq0Xt86aduLwGXFzNGVhusb00nQVa44GkzOQ2+4BBQrYFZ1ZY9NQZz/OSgwOcNJ4Q1NY1uQVdL9cHhX15sdYgt2zjxLnwg==`