注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > YunOS开放平台

轻服务出口网关

更新时间:2017/06/29 访问次数:10516

本文档是轻服务出口网关文档,详细描述了YunOS如何将数据传输到开发者的服务器上。

Yunos调用开发者服务器,主要有2种业务场景:

1,YunOS将用户菜单操作消息转发给开发者服务器。

2,YunOS根据用户行为或场景引擎调用开发者服务器获取轻服务数据。

SDK下载地址:http://yunpan.taobao.com/s/71sepP5fL7   提取码:HjGW3M

具体SDK是:请使用最新版本。

SDK提供了各种卡片模板需要的数据模型,以及加解密和签名验证方法。
  • 一,ISV服务端代码处理逻辑(明文模式:无加密有签名方式)
步骤一,对入参做签名验证
前提:把Map中名为sign的key删除,然后:
第1步: 把入参明文json转换后的Map参数按key升序排序。
第2步: 把排序后的key和它对应的value拼接成一个字符串。 
中间用 public static final char delimiter = 0; 非可见字符0分隔。
把签名signkey拼接在得到的字符串后面。 
Key1+delimiter+Value1+delimiter+Key2+delimiter+Value2+delimiter+signkey
第3步: 计算第3步字符串的md5值,使用md5值的16进制字符串作为sign的内容。
第4步:将入参sign和刚才计算出的sign进行比对,如果相等,说明校验通过。

步骤二,构造卡片需要的业务数据JSON

直接返回业务数据明文。构造业务数据,可以直接使用SDK中的数据模型定义。

详细业务数据结果说明,请参考轻服务模板参考

 SDK中的范例代码可以参考:轻服务SDK签名范例

  •  二,ISV服务端代码处理逻辑(安全模式:有加密有签名方式)

为了安全,推荐使用这个方式。YUNOS传递的入参只有2个,分别是k和data。

k是随机秘钥的密文,data是加密的入参数据。

步骤一,解密YUNOS传送过来的入参

1,用标准MD5算法对AES加密秘钥进行HASH,然后取前16位,得到新秘钥newAesKey。

String newAesKey = MD5Util.MD5(aesKey).substring(0, 16);// 对原始秘钥MD5,然后取前16位

2,用新秘钥newAesKey对入参中的k进行解密操作。算法是标准的AES算法。

String rKey1 = AESUtil.decodeClientTextWithSeed(newAesKey, k);

3,用解密后的秘钥rKey1,对入参中的data进行解密操作,得到入参明文。

String mingwen = AESUtil.decodeClientTextWithSeed(rKey1, data);

4,将入参明文json,转换为Map对象。

Map<String, String> bizMap = JacksonUtil.fromJsonStrToMap(mingwen);

目前入参data主要由下面这些key的数据组成 :详细见API接口说明

public static final String pageNo="pageNo";//当前页
public static final String pageSize="pageSize";//每页数量
public static final String geo ="geo";//经纬度海拔中间用*隔开
public static final String openId="openId";//YUNOS用户对应的OpenId
 public static final String traceId="traceId";//跟踪流水号,对账用
public static final String sysTime="sysTime";//系统时间
步骤二,对解密后的入参做签名验证
前提:把Map中名为sign的key删除,然后:
第1步: 把入参明文json转换后的Map参数按key升序排序。
第2步: 把排序后的key和它对应的value拼接成一个字符串。 
中间用 public static final char delimiter = 0; 非可见字符0分隔。
把签名signkey拼接在得到的字符串后面。 
Key1+delimiter+Value1+delimiter+Key2+delimiter+Value2+delimiter+signkey
第3步: 计算第3步字符串的md5值,使用md5值字符串作为sign的内容。
第4步:将入参sign和刚才计算出的sign进行比对,如果相等,说明校验通过。
 
步骤三,构造卡片需要的业务数据JSON
如果是java,可以使用SDK构造返回数据。
 
步骤四,返回数据加密
1,返回结果BaseResult对象转换为json格式字符串。
2,用标准MD5算法对AES加密秘钥进行HASH,然后取前16位,得到新秘钥newAesKey。
3,用新秘钥newAesKey对入参中的k进行解密操作。算法是标准的AES算法。
4,用解密后的秘钥rKey1,对返回结果数据进行加密操作。
 
SDK中的范例代码可以参考: 轻服务SDK加解密签名范例

FAQ

关于此文档暂时还没有FAQ
返回
顶部