原型分析报告
## 信游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初稿。
```