供应商业务系统对接测试指南_第1页
供应商业务系统对接测试指南_第2页
供应商业务系统对接测试指南_第3页
供应商业务系统对接测试指南_第4页
供应商业务系统对接测试指南_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、供应商业务系统对接测试指南对接环境简介供应链统一服务平台作为外部用户统一入口和外部数据集成中心,通过提供标准化的服务接口,为方便第三方更快速,更高效的集成到平台,现已搭建完成模拟测试环境,模拟环境信息如下:用户名密码要加密,调用要对请求体进行sign签名,相关介绍请仔细阅读此文件。签名规则使用的是HmacSHA256加密。下面流程图中描述有误 请以HmacSHA256 为准注:测试用户名密码及对接环境相关,以邮件回复的为准对接流程图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 中的账户密码请使用流程中经过加密的账户密码,然后用加密过后的账户密码 去进行sign 计算,并将sign放在请求

3、头header 中Token和请求参数签名设置:在请求其他接口服务时,也请将地址替换为服务请求地址:http:/*/api/WZGYL/scp-supplier-erp + 服务相对地址,请参考文档开头服务地址示例按照流程填写header内容请求参数签名代码示例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框架都有实现,自行适配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); /执行消息摘要处理 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论