该文档主要包含用户鉴权接口定义、游戏发货接口定义;
更新说明
| 日期 | 说明 |
|---|---|
| 2022-01-28 | 4.1登录验证接口增加用户是否是预约用户的标识 4.9增加预约用户发奖接口 |
Method: POST
接口描述:
该接口由龙图运营技术平台提供,负责对用户信息进行验证,该接口可以避免客户端随意修改信息的漏洞;需要游戏服务端进行调用;中国大陆地址:http://auth.longtugame.cn/ucenter2.0/entry/authToken.htm
港澳台地址:http://auth-usa.longtugame.net/ucenter2.0/entry/authToken.htm
韩国地址:http://auth-kr.longtugame.net/ucenter2.0/entry/authToken.htm
日本地址:http://auth-jp.longtugame.net/ucenter2.0/entry/authToken.htm
全球地址:http://auth-usa.longtugame.net/ucenter2.0/entry/authToken.htm
| 响应码 | 描述 |
|---|---|
| 10000 | 成功 |
| 20001 | 请求的service有误 |
| 20002 | sessionId参数有误 |
| 20003 | session失效或无效 |
| 20004 | 请求方式异常 |
| 20009 | 服务异常 |
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/json | 是 |
Body
| 名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|---|
| service | string | 必须 | 接口标识,固定为:longtu.platform.ucenter.getUserInfo | ||
| sessionId | string | 必须 | 会话ID, 来源自SDK客户端登录成功之后的tokenId。 |
| 名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|---|
| status | string | 必须 | 状态码 0:失败 1:成功 | ||
| errorCode | string | 必须 | 响应码;10000:接收成功;详见响应码介绍 | ||
| errorDesc | string | 非必须 | 描述 | ||
| data | object | 必须 | 地域信息 | ||
| ├─ userId | string | 必须 | 用户ID | ||
| ├─ userPlatformId | string | 必须 | 用户系统ID | ||
| ├─ userName | string | 非必须 | 用户名 | ||
| ├─ nickName | string | 非必须 | 昵称 | ||
| ├─ phone | string | 非必须 | 登录手机号 | ||
| string | 非必须 | 用户邮箱 | |||
| ├─ identityLimit | object | 非必须 | |||
| ├─ preTimeCost | string | 非必须 | 用户每次限额 ,-1 代表不限额,单位:分 | ||
| ├─ monthTotalCost | string | 非必须 | 用户每月限额,-1 代表不限额,单位:分 | ||
| ├─ cardNo | string | 非必须 | 用户身份证号md5 | ||
| ├─ returnJson | JSONObject | 非必须 | 隐形登录返回的第三方数据 | ||
| ├─ loginType | string | 必须 | 登录类型(该字段已放弃维护,请使用客户端登录回调中的相关字段) speedyLogin:快速登录 speedyRegister:快速注册 commonLogin:普通登录 commonRegister:普通注册 phoneLogin:手机登录 phoneRegister:手机注册 thirdHiddenLogin:第三方用户登录 thirdHiddenRegister : 第三方用户注册 phoneVerifyCodeLogin:手机验证码登录 phoneVerifyCodeRegister:手机验证码注册 | ||
| ├─ originalUserType | string | 必须 | 原生用户登录类型(该字段已放弃维护,请使用客户端登录回调中的相关字段) speedy:快登用户 common:普通用户名密码用户 phone:手机号注册用户 thirdHidden:第三方隐性用户 thirdHiddenNeedBindingCommon:第三方需要绑定 官网账户 | ||
| ├─ currentUserType | string | 必须 | 当前用户登录类型(该字段已放弃维护,请使用客户端登录回调中的相关字段) speedy:快登用户 common:普通用户名密码用户 phone:手机号注册用户 thirdHidden:第三方隐性用户 thirdHiddenNeedBindingCommon:第三方需要绑定 官网账户 | ||
| ├─ appointmentUser | object [] | 必须 | 预约用户预约渠道信息;目前仅全球发行区域支持;若GSC上预约渠道开关关闭,则返回空 | item 类型:object | |
| ├─ channel | string | 必须 | 预约渠道标识: google标识谷歌渠道, appstore标识苹果预约, phone标识官网手机号预约 | ||
| ├─ status | string | 必须 | 是否领取过奖励;0:未领取;1:已领取 |
返回示例:
渠道用户
{"data": {"phone": "","userPlatformId": "0286","email": "","nickName": "","userId": "0102860000000000000000000000000022763457","identityLimit":{"preTimeCost":"-1","monthTotalCost":"-1","cardNo":"9d7ad320f04052c4fbcace636b6d8369"},"returnJson": {"sex": "","accessToken": "1.a3e0d5b2410e2b12aa7cf25541745695.55f048d5072366f7f6c03b7cb810e450.1494315064144","nickname": "CCNK1417056083257","brithday": "","highDefUrl": "","expires_in": "7776000","openid": "22763457","refresh_token": "4123dnasjonrfwjkr329439wijm3ir9u328faicy78ehc8m3urc329","rtn_code": "0","headIconUrl": ""},"userName": "CCNK1417056083257@coolyun_10000538.com","originalUserType": "0","currentUserType": "0","loginType":"thirdHiddenLogin"},"errorCode": "10000","errorDesc": "成功","status": "1"}
官网用户
{"data": {"phone": "13888886666","userPlatformId": "0001","email": "","nickName": "玩家001","userId": "0100010000000000000000000000000174323454","nickName": "玩家001","identityLimit":{"preTimeCost":"-1","monthTotalCost":"-1"},"returnJson": {},"userName": "longtuUser","originalUserType": "1","currentUserType": "1","loginType":"commonLogin"},"appointmentUser":[{"channel":"appstore","status":"0"},{"channel":"phone","status":"1"}],"errorCode": "10000","errorDesc": "成功","status": "1"}
该接口由游戏按规范提供,龙图运营技术平台通过该接口实现游戏发货功能;
| 响应码 | 描述 |
|---|---|
| 0001 | 成功 |
| 1000 | 订单异常(该订单已经发货) |
| 1001 | 用户异常 |
| 1002 | 角色异常 |
| 1003 | 逻辑服异常 |
| 1004 | 商品异常 |
| 1005 | 发货失败 |
| 1006 | 用户ID与角色ID不匹配 |
| 1007 | 限购商品,不允许发货 |
| 1100 | 预留扩展(该扩展由游戏方定义,定义后请反馈计费中心) |
自动重新通知:因网络抖动或游戏服务器维护导致请求超时或通知失败,平台会在间隔2、4、8、16分钟后重新进行通知,第四次(16分钟)如果还是通知失败,则不再进行重新通知,需要运营人员手动在GSC上进行“通知发货”;另外,重新通知在极端情况下(平台侧检测到请求超时,但是研发侧已经正常发货的情况)也会进行重发,因此需要研发确保相同平台侧的订单号(orderId)若已经正常发货则不可重复发货,此时返回“接收成功”即可。
| 参数父节点 | 参数名称 | 类型 | 限制策略 | 说明 |
|---|---|---|---|---|
| - | status | 字符串 | 必填 | 状态外码 1:消耗类 2:订阅类 |
| - | reset | 字符串 | 必填 | 内码;1000:发货成功, 2000:订阅商品首次订购成功 , 2001:退款成功, 2002:订阅商品续订成功, |
| - | resetDesc | 字符串 | 必填 | 状态详细描述 |
| - | subscription{expireTime} | 字符串 | 可选 | 订阅过期时间,时间戳格式 |
| - | serviceId | 字符串 | 必填 | 产品平台ID,查看如何从SDK中获取 |
| - | channelId | 字符串 | 必填 | 推广渠道ID,查看如何从SDK中获取 |
| - | deviceGroupId | 字符串 | 必填 | 机型组ID |
| - | localeId | 字符串 | 必填 | 语言ID |
| - | propId | 字符串 | 必填 | 商品ID |
| - | roleId | 字符串 | 必填 | 游戏角色ID |
| - | userId | 字符串 | 必填 | 游戏用户ID |
| - | serverId | 字符串 | 必填 | 逻辑服ID |
| - | payChannelId | 字符串 | 必填 | 支付方式ID |
| - | chargePrice | 字符串 | 必填 | 订单金额,建议用此字段进行商品价格校验;详见附录4货币类型及对应ID |
| - | actualPrice | 字符串 | 必填 | 实际支付金额,若存在商品打折情况,该字段可能和chargePrice不一致;详见附录4货币类型及对应ID |
| - | currencyType | 字符串 | 必填 | 货币类型,详见附录4货币类型及对应ID |
| - | orderId | 字符串 | 必填 | 订单号 |
| - | testOrder | 字符串 | 必填 | 是否是测试订单 0:不是 1:是 |
| strategy{rebate} | price | 字符串 | 可选 | 返利金额(为整数,如果有小数则进1) |
| strategy{rebate} | goodId | 字符串 | 可选 | 返利商品ID |
| strategy{rebate} | rebateType | 字符串 | 可选 | 返利类型 GOODID:按照商品ID返利 PRICE:按照充值金额进行返利 |
| - | extendParams | 字符串 | 可选 | 自定义扩展字段 |
| - | sign | 字符串 | 必填 | 签名 Md5(subscription.expireTime +serviceId +channelId +deviceGroupId +localeId +propId +roleId +userId +serverId +payChannelId +chargePrice +actualPrice +currencyType +orderId +testOrder +strategy.rebate.price +strategy.rebate.goodId +strategy.rebate.rebateType +extendParams +secretKey(约定秘钥)) 不存在的字段则“”(空串)代替。 |
| 父节点 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| common | deliverCode | 字符串 | 响应码;0001:接收成功;失败详见响应码介绍 |
| common | deliverDesc | 字符串 | 通知结果描述(需要做UrlEncode,编码方式UTF-8) |
{"status":"2","reset":"2000","resetDesc":"","subscription":{"expireTime":"1568877748000"},"serviceId":"1000053831111600000","channelId":"3111160031111600","deviceGroupId":"0000","localeId":"01","propId":"0001","roleId":"14325","userId":"0103400000000000000000000000000000150595","serverId":"10","payChannelId":"211116000014000051014300","chargePrice":"100","actualPrice":"100","currencyType":"1","orderId":"0992017101611521566000","testOrder":"0","extendParams":"测试-我是扩展参数","sign":"8bccb12d3095b898accdebd895fd14c5"}
{"common":{"deliverCode":"0001","deliverDesc":"通知成功"}}
该接口由游戏按规范提供,龙图运营技术平台通过该接口实现礼包码发货功能;
注意:
自动重新通知:因网络抖动或游戏服务器维护导致请求超时或通知失败,平台会在间隔2、4、8、16分钟后重新进行通知,第四次(16分钟)如果还是通知失败,则不再进行重新通知;重新通知时有可能研发侧已经给玩家发过该礼包(平台侧请求超时时,可能出现这种情况),需要给平台返回对应的状态,已经领取并且不能再给此玩家再次发放礼包。所以需要游戏方面对礼包发放进行判断。同一个角色+同一个礼包码,一天内最多能领取一次,不能重复发。避免在特殊情况下可能会给玩家重复发礼包。
响应码介绍
| 响应码 | 描述 |
|---|---|
| 0001 | 成功 |
| 1000 | 订单异常(该订单已经发货) |
| 1001 | 用户异常 |
| 1002 | 角色异常 |
| 1003 | 逻辑服异常 |
| 1004 | 商品异常 |
| 1005 | 发货失败 |
| 1006 | 用户ID与角色ID不匹配 |
| 1100 | 预留扩展(该扩展由游戏方定义,定义后请反馈计费中心) |
4.3.1 安全验证
1.为了保证数据安全性,建议游戏服务器对平台的请求IP地址做鉴权处理,需要认证的IP详见附录五。
4.3.2 请求参数
| 参数父节点 | 参数名称 | 类型 | 限制策略 | 说明 |
|---|---|---|---|---|
| - | serviceId | 字符串 | 必填 | 产品平台ID,查看如何从SDK中获取 |
| - | channelId | 字符串 | 必填 | 推广渠道ID,查看如何从SDK中获取 |
| - | deviceGroupId | 字符串 | 必填 | 机型组ID |
| - | localeId | 字符串 | 必填 | 语言ID |
| - | roleId | 字符串 | 必填 | 游戏角色ID |
| - | userId | 字符串 | 必填 | 游戏用户ID |
| - | serverId | 字符串 | 必填 | 逻辑服ID |
| - | gamePackageId | 字符串 | 可选 | 礼包ID,即游戏内的物品包ID;gamePackageId和goodsInfo必须选择一项 |
| - | gamePackageName | 字符串 | 必填 | 礼包名称,需要做urlencoding |
| - | gamePackageDesc | 字符串 | 必填 | 礼包描述,需要做urlencoding |
| - | gameCode | 字符串 | 必填 | 礼包码(用户输入的码号) |
| - | extendParams | 字符串 | 必填 | 自定义字段,多个参数之间 以“|” 分隔 |
| - | goodsInfo | 字符串 | 可选 | 道具信息,数组 |
| goodsInfo | goodsId | 字符串 | 可选 | 商品ID |
| goodsInfo | goodsNum | 字符串 | 可选 | 商品数量 |
| goodsInfo | goodsName | 字符串 | 可选 | 商品名称,需要做urlencoding |
| goodsInfo | goodsDesc | 字符串 | 可选 | 商品描述,需要做urlencoding |
| goodsInfo | extendInfo | 字符串 | 可选 | 物品扩展信息 |
| - | sign | 字符串 | 必填 | 签名 Md5(serviceId +channelId +deviceGroupId +localeId +roleId +userId +serverId +gamePackageId +gamePackageName +gamePackageDesc +gameCode +extendParams +goodsInfo[0].goodsId +goodsInfo[0].goodsNum +goodsInfo[0].goodsName +goodsInfo[0].goodsDesc +goodsInfo[0].extendInfo +…+goodInfos[n].goodsId +goodsInfo[n].goodsNum +goodsInfo[n].goodsName +goodsInfo[n].goodsDesc +goodsInfo[n].extendInfo +secretKey(约定秘钥)) 注:goodsInfo数组中的数据要循环依次加到字符串中,然后算取sign值, 不存在的字段则“”(空串)代替。 |
| 父节点 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| common | deliverCode | 字符串 | 响应码;0001:接收成功;失败详见响应码介绍 |
| common | deliverDesc | 字符串 | 通知结果描述(需要做UrlEncode,编码方式UTF-8) |
{"serviceId":"1000053831111600000","channelId":"3111160031111600","deviceGroupId":"0000","localeId":"01","roleId":"143235","userId":"0103400000000000000000000000000000150595","serverId":"10","gamePackageId":"374","gamePackageName":"测试礼包","gamePackageDesc":"测试礼包","gameCode":"2E2A3VPR8NNTM1","extendParams":"","goodsInfo":[{"goodsId":"13452","goodsNum":"1","goodsName":"测试商品","goodsDesc":"测试商品","extendInfo":""}],"sign":"ccae56d2aed76fa2dca6b90fb0ef4e42"}
{"common":{"deliverCode":"0001","deliverDesc":"通知成功"}}
该接口由平台提供,游戏通过该接口查询用户绑定的第三方渠道;
4.6.1 接口地址
台湾地址:https://auth-tw.t-time.com.tw/ucenter2.0/entry/getUserBindInfo.htm
新美西地址:https://auth-usa.longtugame.net/ucenter2.0/entry/getUserBindInfo.htm
响应码介绍
| 响应码 | 描述 |
|---|---|
| 10000 | 成功 |
| 20001 | 请求的service有误 |
| 20002 | sessionId参数有误 |
| 20003 | session失效或无效 |
| 20004 | 请求方式异常 |
| 20009 | 服务异常 |
| 参数父节点 | 参数名称 | 类型 | 限制策略 | 说明 |
|---|---|---|---|---|
| - | service | 字符串 | 必填 | 接口标识,固定为:longtu.platform.ucenter.getUserBindInfo |
| - | sessionId | 字符串 | 必填 | 会话ID |
| 父节点 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| - | status | 字符串 | 状态码 0:失败 1:成功 |
| - | errorCode | 字符串 | 响应码;10000:接收成功;其他详见响应码介绍 |
| - | errorDesc | 字符串 | 描述 |
| data | userId | 字符串 | 用户ID |
| data | bindChannelIds | list字符串 | 绑定的渠道id(4位数字) 0001:官网 0231:facebook 0329:gameCenter 0493:apple 0494:google |
{"data": {"bindChannelIds": ["0231","0494","0001"],"userId": "0800010000000000000000000000000025655354"},"errorCode": "10000","errorDesc": "成功","status": "1"}
该接口由游戏按规范提供,龙图平台通过该接口实现用户绑定渠道;
该接口在接入海外SDK Applovin功能的IronSource和Tapjoy积分墙时需要接入。
详见安卓海外SDK接入的ApplovinSDK功能接入【选接】
| 参数父节点 | 参数名称 | 类型 | 限制策略 | 说明 |
|---|---|---|---|---|
| - | localeId | 字符串 | 必填 | 语言ID |
| - | channelId | 字符串 | 必填 | 通道id |
| - | userId | 字符串 | 必填 | 用户id |
| - | serverId | 字符串 | 必填 | 游戏服务器id |
| - | productId | 字符串 | 必填 | 游戏ID,同gameId |
| - | transtionid | 字符串 | 必填 | 积分墙唯一标识, |
| - | extendParams | 字符串 | 可选 | 扩展参数 |
| - | roleId | 字符串 | 必填 | 角色id |
| - | rewards | 字符串 | 必填 | 积分 (注意:如果是正数就是添加积分,负数为扣减积分。。。这个参数也是翻倍后的数) |
| - | sign | 字符串 | 必填 | MD5(localeId +productId +serverId +roleId +channelId +userId +rewards +transtionid +extendParams +secretKey(约定秘钥))) |
{"sign": "403a50fc55e9290703ec7d7b79461e5a","localeId": "01","channelId": "210017000114000051014300","userId": "0100010000000000000000000000000141765589","serverId": "1","productId": "20000034","roleId": "1","transtionid":"3e9c0c01fa7b47903cfb14acbf9bda21","rewards":"2"}
{"common": {"deliverCode": "0001","deliverDesc": "通知成功"}}
4.8.1 接口地址
国内地址:http://auth.longtugame.cn/api/ucenter/gameserver/ip/region/query
目前仅国内支持
校验码规则
校验码规则
4.8.2 请求头部信息
| 参数名称 | 类型 | 说明 | |
|---|---|---|---|
| Content-Type | 字符串 | 必填 | application/json |
| platform-auth-version | 字符串 | 必填 | 固定写死 v3 |
| platform-auth-timestamp | 字符串 | 必填 | 时间戳 |
| platform-auth-key-id | 字符串 | 必填 | 秘钥keyId, |
| platform-auth-checksum | 字符串 | 必填 | 详见校验码规则 |
| 参数父节点 | 参数名称 | 类型 | 限制策略 | 说明 |
|---|---|---|---|---|
| - | ip | string [] | 必填 | ip数组 |
| ip[i] | - | string | 必填 | IP |
示例
(单次请求ip不可以超过200个,逗号分隔)
{"ip":["1.0.1.0","0.0.1.0","1.18.122.0"]}
| 父节点 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| - | status | 字符串 | 状态码;1:成功;0:失败; |
| - | errorCode | 字符串 | 具体响应码; |
| - | errorDesc | 字符串 | 状态描述 |
| - | data | JSON对象 | 该数据为数组 |
| data[i] | ip | 字符串 | IP |
| data[i] | ipCity | 字符串 | 地市级编码 |
| data[i] | ipProvince | 字符串 | 省级编码 |
| data[i] | ipCountry | 字符串 | 国家编码 |
示例
{"status": "1","errorCode": "10000","errorDesc": "成功","data": [{"ip": "1.0.1.0","ipCountry": "156","ipProvince": "35","ipCity": "00"},{"ip": "0.0.1.0","ipCountry": null,"ipProvince": null,"ipCity": null},{"ip": "1.18.122.0","ipCountry": "840","ipProvince": "00","ipCity": "00"}]}
响应码介绍
| 响应码 | 描述 |
|---|---|
| 10000 | 成功 |
| 204401 | 参数不正确 |
| 204402 | 参数不能为空 |
| 204403 | 校验码未通过 |
| 204404 | 参数值超过规定长度 |
| 204405 | 请求已过有效期 |
| 204406 | header参数缺失 |
| 204999 | 未知异常错误 |
Method: POST
接口描述:
1.该接口由龙图运营技术平台提供,游戏服务端进行调用, 目的是实现对预约用户发放预约礼包;注意:每个用户ID在每个预约渠道中只能发放一次; 调用该接口后,平台会再次进行判断该用户是否可以发放该渠道的预约礼包,若预约状态正常且未发放过则启动异步线程通过4.3的礼包发放接口进行通知游戏服服务端,游戏服端需要在收到4.3的礼包发放接口通知后才可进行预约奖励礼包发放;
2 接口地址
国内地址:http://billing.longtugame.cn/billingcenter2.0/gameServer/appointment.do
全球地址:http://billing-usa.longtugame.net/billingcenter2.0/gameServer/appointment.do
韩国地址:暂时不支持
3 校验码规则
校验码规则
4 状态内码,
若出现非 0001 2002 2003的内码,需要支持重新发起对平台的调用
| 状态内码 | 介绍 |
|---|---|
| 0001 | 成功 |
| 2001 | session失效或不存在,需要重新登录; |
| 2002 | 该用户非该预约渠道的预约用户 |
| 2003 | 该用户已经领取过该预约渠道的礼包 |
| 2999 | 其他错误 |
5 请求示例
{"sessionId":"69c551db2241b-4224-bf59-b045304bc86f","userId":"0100010000000000000000000000000155964419","extendParams":"","gameServerId":"1001","roleId":"800110001","roleLevel":"5","roleName":"testrole","roleVipLevel":"1","channel":"appstore"}
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/json | 是 | ||
| platform-auth-checksum | 请求数据计算后的校验码 | 是 | 校验码规则详见描述 | |
| platform-auth-key-id | 秘钥keyId(即业务代码),接入时,找相关负责人获取 | 是 | ||
| platform-auth-timestamp | 时间戳,毫秒数 | 是 | ||
| platform-auth-version | v3 | 是 | 固定值 |
Body
| 名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|---|
| sessionId | string | 必须 | 平台用户登录后的sessionId | ||
| userId | string | 必须 | 用户ID | ||
| extendParams | string | 必须 | 透传参数可为空 | ||
| gameServerId | string | 必须 | 服务器id | ||
| roleId | string | 必须 | 角色id | ||
| roleLevel | string | 必须 | 角色等级 | ||
| roleName | string | 必须 | 角色名 | ||
| roleVipLevel | string | 必须 | 角色vip等级 | ||
| channel | string | 必须 | 预约渠道,注意不是游戏包的渠道,对应4.1接口中返回的appointmentUser下的channel;google标识谷歌渠道,appstore标识苹果预约,phone标识官网手机号预约 |
| 名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|---|
| status | string | 非必须 | 状态码 0:失败 1:成功 | ||
| errorCode | string | 非必须 | 状态内码 | ||
| errorDesc | string | 非必须 | 状态描述 |
| 货币ID | 货币名称 | 货币单位 |
|---|---|---|
| 1 | 人民币 | 分 |
| 2 | 美元 | 美分 |
| 3 | 日元 | 円 |
| 4 | 港币 | 分 |
| 5 | 英镑 | 便士 |
| 6 | 新加坡币 | 分 |
| 7 | 越南盾 | 盾 |
| 8 | 台币 | 元 |
| 9 | 韩元 | 元 |
| 10 | 泰铢 | 萨当 |
为了保证数据安全性,游戏服务器务必要对平台的请求IP地址做鉴权处理,需要认证的IP如下:
韩国:150.109.251.150 , 150.109.251.83,150.109.251.176
日本:124.156.229.117 , 124.156.229.124
港澳台:47.56.235.244 , 47.91.226.95
全球:34.83.139.53 , 35.185.215.4 , 35.227.137.164 , 43.153.65.35 , 43.153.65.245 , 49.51.247.105
大陆:121.40.90.246 , 121.40.98.30 , 121.196.220.70;

上海中清龙图软件有限公司