供应商业务系统对接测试指南对接环境简介供应链统一服务平台作为外部用户统一入口和外部数据集成中心,通过提供标准化的服务接口,为方便第三方更快速,更高效的集成到平台,现已搭建完成模拟测试环境,模拟环境信息如下:用户名密码要加密,调用要对请求体进行sign签名,相关介绍请仔细阅读此文件.
签名规则使用的是HmacSHA256加密.
下面流程图中描述有误请以HmacSHA256为准注:测试用户名密码及对接环境相关,以邮件回复的为准对接流程图Postman模拟请求测试请求流程示例:图中地址栏为示例地址,请求地址获取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放在请求头header中Token和请求参数签名设置:在请求其他接口服务时,也请将地址替换为服务请求地址:http://****/api/WZGYL/scp-supplier-erp+服务相对地址,请参考文档开头服务地址示例按照流程填写header内容请求参数签名代码示例s签名密钥:testKey签名流程:签名java代码示例publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{Stringstr="{\n"+"\"username\":\"admin\",\n"+"\"password\":\"aaa\",\n"+"\"aa\":[1,2,5,6],\n"+"\"bb\":{\n"+"\"aa\":\"bb\",\n"+"\"aaa\":1\n"n"+"\"int\":1,\n"+"\"doube\":1.
2,\n"+"\"boolen\":true\n"清除换行符str=Pattern.
compile("[\t\r\n]").
matcher(str).
replaceAll("");//jaskson解析ObjectMapperOBJECT_MAPPER=newObjectMapper();//转成mapMapjsonNode=OBJECT_MAPPER.
readValue(str,Map.
class);//排序OBJECT_MAPPER.
configure(SerializationFeature.
ORDER_MAP_ENTRIES_BY_KEYS,true);//生成jsonStringstring=OBJECT_MAPPER.
writeValueAsString(jsonNode);//签名密钥StringsignKey="testKey";//HmacSHA265加密Stringencode=DigestUtil.
hmacDegist(DigestUtil.
HmacSHA256,signKey.
getBytes(),string).
toBase64();System.
out.
println(encode);}}关于自动排序,各大JSON框架都有实现,自行适配HmacSHA256加密示例:publicstaticStringhmacDegist(Stringalgorithm,byte[]key,Stringdata){try{//还原密钥,因为密钥是以byte形式为消息传递算法所拥有SecretKeysecretKey=newSecretKeySpec(key,algorithm);//实例化MacMacmac=Mac.
getInstance(secretKey.
getAlgorithm(),"BC");//初始化Macmac.
init(secretKey);//执行消息摘要处理byte[]result=mac.
doFinal(data.
getBytes(StandardCharsets.
UTF_8));//加密后的字符Stringstring=newString(java.
util.
Base64.
getEncoder().
encode(result),StandardCharsets.
UTF_8);returnstring;}catch(Exceptione){thrownewSecurityException(e);}}BouncycastleMaven坐标org.
bouncycastlebcprov-jdk15on1.
55RSA非对称加密代码示例公钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVfisoOLrHQTZcAoQgKs36C0tOA4Kn6O6mYTxtBntO9dH/F+qYYXkNw8YJe2qDVIECeZSjgIZvsqItui9sJYNDAlIwW8QUguLjzrP/uJs9XjuniUvvDEEyTDBUOqUUr8164RUgGjt/7GhD5/EPnmir0hnji4bsP3bZX7QK6uOhUwIDAQABJava代码示例:publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException,NoSuchAlgorithmException,InvalidKeySpecException,NoSuchPaddingException,InvalidKeyException,BadPaddingException,IllegalBlockSizeException{StringpublicKey="公钥";StringtestStr="待加密的字符";byte[]data=testStr.
getBytes(Charset.
forName("utf-8"));byte[]keyBytes=Base64Utils.
decode(publicKey);X509EncodedKeySpecx509KeySpec=newX509EncodedKeySpec(keyBytes);KeyFactorykeyFactory=KeyFactory.
getInstance("RSA");PublicKeykey=keyFactory.
generatePublic(x509KeySpec);Ciphercipher=Cipher.
getInstance("RSA/ECB/PKCS1Padding");cipher.
init(Cipher.
ENCRYPT_MODE,key);byte[]result=doFinal(cipher,data,128-11);//加密后的字符Stringstring=newString(java.
util.
Base64.
getEncoder().
encode(result),StandardCharsets.
UTF_8);System.
out.
println(string);}privatestaticbyte[]doFinal(Ciphercipher,byte[]data,intkey_len)throwsBadPaddingException,IllegalBlockSizeException{intinputLen=data.
length,offset=0;byte[]tmp;ByteArrayOutputStreamout=newByteArrayOutputStream(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;}returnout.
toByteArray();}privatestaticintgetTmpArrayLength(intL){intS=128;while(S签名代码参考文档中"请求参数签名代码示例"部分,获取到的sign需要放入到请求报文Header中.
、发出请求前,需要将请求报文body部分进行签名,签名代码参考文档中"请求参数签名代码示例"部分,获取到的sign需要放入到请求报文Header中;并且需要将开始获取到的acces_token需要放入请求报文Header中.
野草云服务器怎么样?野草云是一家成立了9年的国人主机商家,隶属于香港 LucidaCloud Limited (HongKong Registration No. 2736053 / 香港網上查冊中心)。目前,野草云主要销售香港、美国的VPS、虚拟主机及独立服务器等产品,本站也给大家分享过多次他家的优惠了,目前商家开启了优惠活动,香港/美国洛杉矶CN2+BGP云服务器,1核1G仅38元/月起!点击...
今天CloudCone发布了最新的消息,推送了几款特价独立服务器/杜甫产品,美国洛杉矶MC机房,分配100Mbps带宽不限流量,可以选择G口限制流量计划方案,存储分配的比较大,选择HDD硬盘的话2TB起,MC机房到大陆地区线路还不错,有需要美国特价独立服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2...
RackNerd 商家给的感觉就是一直蹭节日热点,然后时不时通过修改配置结构不断的提供低价年付的VPS主机,不过他们家还是在做事的,这么两年多的发展,居然已经有新增至十几个数据中心,而且产品线发展也是比较丰富。比如也有独立服务器业务,不过在他们轮番的低价年付VPS主机活动下,他们的服务器估摸着销路不是太好的。这里,今天有看到RackNerd商家的独立服务器业务有促销。这次提供美国多个机房的高配独立...