API接入規則
大约 2 分鐘
協議規則
傳輸方式:採用HTTPS傳輸
測試環境:https://ts-api-pay.gnete.com.hk
生產環境:https://api-pay.gnete.com.hk
提交方式:POST
或 GET
內容類型:application/json
字符編碼:UTF-8
簽名算法:MD5
參數規範
交易金額:默認為人民幣交易,單位為分,參數值不能帶小數。
時間參數:所有涉及時間參數均使用精確到毫秒的13位數值,如:1622016572190。時間戳具體是指從格林尼治時間1970年01月01日00時00分00秒起至現在的毫秒數。
簽名算法
簽名生成的通用步驟如下
第一步: 設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特別注意以下重要規則:
- 參數名ASCII碼從小到大排序(字典序);
- 如果參數的值為空不參與簽名;
- 參數名區分大小寫;
- 驗證調用返回或支付中心主動通知簽名時,傳送的sign參數不參與簽名,將生成的簽名與該sign值作校驗。
- 支付中心接口可能增加字段,驗證簽名時必須支持增加的擴展字段
第二步: 在stringA最後拼接上key[即 StringA +"&key=" + 私鑰 ]
得到stringSignTemp字符串,並對stringSignTemp進行MD5運算,再將得到的字符串所有字符轉換為大寫,得到sign值signValue。
如請求支付系統參數如下:
Map signMap = new HashMap<>();
signMap.put("platId", "1000");
signMap.put("mchOrderNo", "P0123456789101");
signMap.put("amount", "10000");
signMap.put("clientIp", "192.168.0.111");
signMap.put("returnUrl", "https://www.baidu.com");
signMap.put("notifyUrl", "https://www.baidu.com");
signMap.put("reqTime", "20190723141000");
signMap.put("version", "1.0");
待簽名值:
amount=10000&clientIp=192.168.0.111&mchOrderNo=P0123456789101¬ifyUrl=https://www.baidu.com&platId=1000&reqTime=20190723141000&returnUrl=https://www.baidu.com&version=1.0&key=EWEFD123RGSRETYDFNGFGFGSHDFGH
簽名結果:
4A5078DABBCE0D9C4E7668DACB96FF7A
最終請求支付系統參數:
amount=10000&clientIp=192.168.0.111&mchOrderNo=P0123456789101¬ifyUrl=https://www.baidu.com&platId=1000&reqTime=20190723141000&returnUrl=https://www.baidu.com&version=1.0&sign=4A5078DABBCE0D9C4E7668DACB96FF7A