该文档主要包含用户鉴权接口定义、游戏发货接口定义;
更新说明
日期 | 说明 |
---|---|
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;
上海中清龙图软件有限公司