供應商業(yè)務系統(tǒng)對接測試指南_第1頁
供應商業(yè)務系統(tǒng)對接測試指南_第2頁
供應商業(yè)務系統(tǒng)對接測試指南_第3頁
供應商業(yè)務系統(tǒng)對接測試指南_第4頁
供應商業(yè)務系統(tǒng)對接測試指南_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、供應商業(yè)務系統(tǒng)對接測試指南對接環(huán)境簡介供應鏈統(tǒng)一服務平臺作為外部用戶統(tǒng)一入口和外部數(shù)據(jù)集成中心,通過提供標準化的服務接口,為方便第三方更快速,更高效的集成到平臺,現(xiàn)已搭建完成模擬測試環(huán)境,模擬環(huán)境信息如下:用戶名密碼要加密,調用要對請求體進行sign簽名,相關介紹請仔細閱讀此文件。簽名規(guī)則使用的是HmacSHA256加密。下面流程圖中描述有誤 請以HmacSHA256 為準注:測試用戶名密碼及對接環(huán)境相關,以郵件回復的為準對接流程圖Postman模擬請求測試請求流程示例:圖中地址欄為示例地址,請求地址獲取access_token時,請將地址替換為 HYPERLINK 02:4170/api/W

2、ZGYL/scp-supplier-erp/auth/get_access_token http:/*/api/WZGYL/scp-supplier-erp/auth/get_access_token,在請求其他接口服務時,也請將地址替換為服務請求地址:http:/*/api/WZGYL/scp-supplier-erp + 服務相對地址,請參考文檔開頭服務地址示例上圖中body 中的賬戶密碼并未加密,不能直接請求獲取token,所以在獲取access_token時 請求體body 中的賬戶密碼請使用流程中經(jīng)過加密的賬戶密碼,然后用加密過后的賬戶密碼 去進行sign 計算,并將sign放在請求

3、頭header 中Token和請求參數(shù)簽名設置:在請求其他接口服務時,也請將地址替換為服務請求地址:http:/*/api/WZGYL/scp-supplier-erp + 服務相對地址,請參考文檔開頭服務地址示例按照流程填寫header內容請求參數(shù)簽名代碼示例s簽名密鑰:testKey簽名流程:簽名java代碼示例public class Test public static void main(String args) throws IOException String str = n + username:admin,n + password:aaa,n + aa:1,2,5,6,n +

4、 bb:n + aa:bb,n + aaa:1n + ,n + int:1,n + doube:1.2,n + boolen:truen + ; /清除換行符 str = Ppile(trn).matcher(str).replaceAll(); /jaskson解析 ObjectMapper OBJECT_MAPPER = new ObjectMapper(); /轉成map Map jsonNode = OBJECT_MAPPER.readValue(str, Map.class); /排序 OBJECT_MAPPER.configure(SerializationFeature.ORDE

5、R_MAP_ENTRIES_BY_KEYS, true); /生成json String string = OBJECT_MAPPER.writeValueAsString(jsonNode); /簽名密鑰 String signKey = testKey; /HmacSHA265 加密 String encode = DigestUtil.hmacDegist(DigestUtil.HmacSHA256, signKey.getBytes(), string).toBase64(); System.out.println(encode); 關于自動排序,各大JSON框架都有實現(xiàn),自行適配Hm

6、acSHA256加密示例:public static String hmacDegist(String algorithm, byte key, String data) try /還原密鑰,因為密鑰是以byte形式為消息傳遞算法所擁有 SecretKey secretKey = new SecretKeySpec(key, algorithm); /實例化Mac Mac mac = Mac.getInstance(secretKey.getAlgorithm(), BC); /初始化Mac mac.init(secretKey); /執(zhí)行消息摘要處理 byte result = mac.do

7、Final(data.getBytes(StandardCharsets.UTF_8); /加密后的字符 String string = new String(java.util.Base64.getEncoder().encode(result), StandardCharsets.UTF_8); return string; catch (Exception e) throw new SecurityException(e); Bouncycastle Maven坐標 org.bouncycastle bcprov-jdk15on 1.55RSA非對稱加密代碼示例公鑰:MIGfMA0GCS

8、qGSIb3DQEBAQUAA4GNADCBiQKBgQCVfisoOLrHQTZcAoQgKs36C0tOA4Kn6O6mYTxtBntO9dH/F+qYYXkNw8YJe2qDVIECeZSjgIZvsqItui9sJYNDAlIwW8QUguLjzrP/uJs9XjuniUvvDEEyTDBUOqUUr8164RUgGjt/7GhD5/EPnmir0hnji4bsP3bZX7QK6uOhUwIDAQABJava代碼示例:public static void main(String args) throws UnsupportedEncodingException, NoSuchAlgor

9、ithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException String publicKey = 公鑰; String testStr = 待加密的字符; byte data = testStr.getBytes(Charset.forName(utf-8); byte keyBytes = Base64Utils.decode(publicKey); X509EncodedKeySpec x

10、509KeySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(RSA); PublicKey key = keyFactory.generatePublic(x509KeySpec); Cipher cipher = Cipher.getInstance(RSA/ECB/PKCS1Padding); cipher.init(Cipher.ENCRYPT_MODE, key); byte result = doFinal(cipher, data, 128-11); /加

11、密后的字符 String string = new String(java.util.Base64.getEncoder().encode(result), StandardCharsets.UTF_8); System.out.println(string);private static byte doFinal(Cipher cipher, byte data, int key_len) throws BadPaddingException, IllegalBlockSizeException int inputLen = data.length, offset = 0; byte tmp

12、; ByteArrayOutputStream out = new ByteArrayOutputStream(getTmpArrayLength(inputLen); while (inputLen 0) tmp = cipher.doFinal(data, offset, Math.min(key_len, inputLen); out.write(tmp, 0, tmp.length); offset += key_len; inputLen -= key_len; return out.toByteArray();private static int getTmpArrayLength(int L) int S = 128; while (S L) S = 1; return S; 對接注意事項、獲取acces_token時,使用的用戶名和密碼需要是加密之后的用戶名和密碼,加密代碼參考文檔中“RSA非對稱加密代碼示例”部分,并且還需要將加密過后的用戶名

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論