原型分析报告

## 信游xinsdk-结合原型对接口文档的评估报告 ### 相关文档资料 ``` 接口文档地址: https://docs.qq.com/doc/DV3djSXJmeXlGYUtF 原型文档地址: https://lanhuapp.com/url/XCa1d-zr58w 支付宝SDK下载地址: https://openhome.alipay.com/doc/sdkResPackageDownLoad.resource?code=639b8cd68566419fb01c1c45b77ab6a7 ``` ### 接口安全通讯 ``` 第一:安卓技术参考支付宝或者微信的支付SDK与服务端的通讯机制 第二:信游通讯机制---?搁浅 作为SDK的设计者与开发者: 1)我们必要保证接口的安全性 2)我们必要保证数据的安全性 3)我们必要保证接口的时效性 分析: 针对接口的安全性 ----我们要采用RSA非对称加密进行签名,保证接口的完整性安全 。 针对接口的数据安全性---我们要采用AES对业务数据进行加密 ,密文传输。 针对接口的时效性---我们要采用时间戳保证接口的有效请求。 签名算法: 1.对参与AES签名的业务参数序列化为JSON,然后对其进行AES加密。得到data参数 【AES加密模式:CBC 填充:PKCS7 数据块:128位 输出:base64 字符集:UTF-8】 2.然后对非sign、可空字段空值以外的所有参数字母ASCII码排序“&”连接,进行RSA签名,得到sign参数 注:data、sign需要url编码后传输 验签流程: 先对返回结果进行RSA验签,得到AES密文,先根据接口版本号,时间戳验证接口有效性、时效性,再对AES密文进行解密,得到返回结果明文 注:data、sign需要url解码 解密过程: 1)验证客户端参数必填项 2)验证客户端签名是否通过 3)验证接口版本号(接口迭代) 4)验证接口时间戳时效性 5)对AES密文data参数进行解密,得到明文JSON业务数据 示例 : 原请求参数: type pid nonce time version token gid gameSid gameSname 加密后请求参数: type pid nonce time version data sign data=对称加密DES(token=xxx&gid=1101&gameSid=1&gameSname=双线一服) 可空字段空值以外的所有参数字母ASCII码排序“&”连接 sign=RSA(type=xxx&pid=xx&nonce=xxx&time=xxx&version=1.0.0.1&data=xxx) 注释:RSA 里面的参数是跟根据参数字母ASCII码排序“&”连接得到的 ``` #### 公共模块问题 ``` 1)初始化接口 分析:此接口需要单独出来。 理由:上游调用sdk初始化接口,sdk需要跟服务端有交互行为,可能需要返回上游此游戏设置的一些关键信息或者验证初始化,故单独一个初始化的接口,返回值参考市面上sdk的初始化返回值。 2)现在的初始化接口修改成为获取系统设置接口 分析:按现有接口返回参数判断都是一些系统设置信息,故专门开放一个获取sdk系统设置的接口,方便以后拓展业务,增加新的功能模块 3) 公共请求参数我们需要再增加一个字段代表接口版本号--此功能为的是做开源以后准备,我们的接口文档肯定会不断 更新迭代。 ``` #### 注册模块 ``` 1)注册接口需要增加一个附加透传参数 例如 xy_extra 分析:因为服务文档开源面向的是所有的平台,增加一个透传参数可以满足各个平台特性功能。可以满足上游以及平台的特殊业务,亦可理解为附加参数。 ``` #### 登陆模块-业务搁浅 ``` 1)本机号码登陆-------业务搁浅 2)盒子登陆-----------业务搁浅 3)获取三方登陆配置接口 返回的数组参数里面需要加一个appname参数用于区分是那个三方平台!不然你无法知道具体那个三方平台用那套appid appkey! ``` #### 用户模块问题 ``` 1)获取详情接口缺少是否是星耀会员参数 1)获取详情接口一定不能返回玩家的支付密码,这个参数要去掉。可以返回这个用户有没有设置过支付密码 标记 状态 ``` #### 小号模块问题 ``` 1)缺少修改小号接口 2)缺少设置默认小号接口 3)缺少验证小号接口 分析:此功能是聚合时使用-用小号进游戏-必传小号uid编号我方验证。 现在的逻辑是通过小号列表选中对应的uid返回上游。现在要调整成为拿uid请求小号验证接口,由服务端返回uid。然后再提供给上游。以服务端返回的小号uid编号为准提供给上游。 ``` #### 钱包模块问题 ``` 1)获取充值金额接口缺少支付方式编号参数,并且原型业务需要调整,应该是先选择支付方式,再显示充值金额,充值金额跟随支付方式变化而变化 ! ``` #### 充值模块问题 ``` 1)缺少获取优惠券的接口-获取优惠券接口参数需要uid gid sid money 2)缺少获取支付方式列表接口-通过接口返回易拓展 后期新加支付方式不需要重新对接游戏,并且可以随意设计支付方式的显示隐藏 ! 3)获取充值金额接口缺少支付方式编号参数,并且原型业务需要调整,应该是先选择支付方式,再显示充值金额,充值金额跟随支付方式变化而变化 ! -----*******-----建议: 4)充值模块建议再参考其他sdk的充值再做一次调整,可以查询下市面上其他sdk对于充值这块的实现逻辑,感觉现在的接口还可以再整合优化。 ``` ### 优化模块 ``` 1)个别请求接口里面的参数还需进一步优化,举例:下载 管理模块的获取应用列表 参数 applog 建议修改成为 applogo 或者 appico 类似这样的其他接口还需再检查过滤一遍。 ---最后优化修订: 2)最后再对每个接口里面的参数命名再逐个评估。形成新版sdk的接口文档1.0初稿。 ```