# 服务端SDK-SDOBASE

# 功能说明

用于和认证/计费服务端通信的客户端组件,包含以下功能

  • 拉取授权配置(授权联系王智涛处理)
  • 建立维护和认证/计费服务端的tcp链接
  • 使用自定义数据协议发送业务请求和解析业务响应

# 文件列表

# 开发文件

文件路径 文件作用 补充说明
SdoBase.h sdk提供的功能接口定义 有时提供的文件也会命名为CommonSDK.h
SdoBase.lib 静态链接库 有时提供的文件也会命名为CommonSDK.lib

# 运行文件

文件路径 文件作用 补充说明
sdobase.dll 动态链接库 有时提供的文件也会命名为CommonSDK.dll
services/ 业务接口描述文件存放目录 业务接口文件使用xml格式编制
client.conf 配置文件 配置项如下
1、ServerAddr:授权配置服务器地址,多个地址使用";"分隔,用于拉取授权信息
2、LocalPort:SDK绑定的本地端口
3、HostName:主机别名
4、StackMsgTimeOut:网络层消息超时时间(s)
5、MaxAckMsgCacheNumber:必答消息最大缓存数量
6、MaxAckMsgCacheSize:单个必答消息最大长度
7、BusinessMsgTimeOut:业务层消息超时时间
8、MaxMsgQueueSize:消息队列最大长度
9、AutoUnLock:是否自动发送解冻消息
KeyWordId.xml 授权配置项 内部使用,使用固定文件内容
log.properties 日志配置文件

# 接口定义

# 验证票据

<?xml version="1.0" encoding="UTF-8"?>
<service  name="VerifyServer" id="24" serviceencoding="utf-8" sdkencoding="gbk">
    <type name="App-Id-IN" class="int" code="2401"/>
    <type name="Area-Id-IN" class="int" code="2402"/>
    <type name="App-Id-OUT" class="int" code="2401"/>
    <type name="Area-Id-OUT" class="int" code="2402"/>
    <type name="Session-Id" class="string" code="2403"/>
    <type name="Verify-Cost" class="string" code="2404"/>
    <type name="Idcard-Checked" class="string" code="2405"/>
    <type name="PGT-Type" class="string" code="2406"/>
    <type name="RetIdcardFlag" class="string" code="2407"/>
  
    <type name="Pt-Id" class="string" code="1"/>
    <type name="Snda-Id" class="string" code="2"/>
    <type name="U-Id" class="string" code="3"/>
    <type name="Id-Card" class="string" code="4"/>
    <type name="Identity-State" class="string" code="5"/>
    <type name="Client-IP" class="string" code="6"/>
    <type name="Sub-App" class="string" code="7"/>
    <type name="Game-Account" class="string" code="8"/>
    <type name="Ekey-Type" class="string" code="9"/>
    <type name="Ekey-Bind-Flag" class="string" code="10"/>  
    <type name="Client-Signature" class="string" code="11"/>
    <type name="Ekey-SN" class="string" code="12"/>
    <type name="Ecard-Type" class="string" code="13" />
    <type name="Ecard-SN" class="string" code="14"/>
    <type name="Input-Account" class="string" code="15"/>
    <type name="Ecard-Bind-Flag" class="string" code="16"/>
    <type name="Auto-Login-Flag" class="string" code="17"/>
    <type name="Voice-Bind-Flag" class="string" code="18"/>
    <type name="Voice-SN" class="string" code="19"/>
    <type name="UpgradeFlag" class="string" code="20"/>
    <type name="CompanyId" class="string" code="21"/>
    <type name="AppIdTransFlag" class="string" code="22"/>
  
    <type name="Forbidden-Account" class="string" code="100"/>
    <type name="qinzi" class="string" code="101"/>
    <type name="Golden-Account" class="string" code="102"/>
    <type name="CdLock-Account" class="string" code="103"/>
    <type name="CdLock-Storage" class="string" code="104"/>
    <type name="Adult" class="string" code="105"/>
    <type name="Appling-Adult" class="string" code="106"/>
    <type name="Spreaded-User" class="string" code="107"/>
    <type name="OnlineSMS-Notice" class="string" code="108"/>
    <type name="Spreader" class="string" code="109"/>
    <type name="Wealth-Card" class="string" code="110"/>
    <type name="Item-Transfer" class="string" code="111"/>
    <type name="AppIds_type" class="string" code="112"/>
    <type name="FirstValidate" class="int" code="113"/>
  
    <type name="firstLoginValidate" class="int" code="114"/>
    <type name="firstLoginAppId" class="int" code="115"/>
    <type name="userIdType" class="int" code="116"/>
    <type name="loginEndpointIp" class="string" code="117"/>
    <type name="firstLoginApp" class="int" code="118"/>
    <type name="displayAccount" class="string" code="119"/>
    <type name="loginType" class="int" code="120"/>
    <type name="gameValue" class="string" code="121"/>
    <type name="isForbiddenNewActive" class="int" code="123"/>
    <type name="TI_verifyPhoneStatus" class="int" code="124"/>
    <type name="TI_isDynamicPwdSet" class="int" code="125" />  
    <type name="thirdUserId" class="string" code="126"/>
    <type name="TS_scene" class="string" code="127"/>
    <type name="isStaticPwdLocked" class="int" code="128" />
  
  
    <message name="ReserveNotify" id="101">
        <requestParameter>
            <field name="appId" type="App-Id-IN"  desc="[整数型] 应用id"/>
            <field name="areaId" type="Area-Id-IN" desc="[整数型] 区id"/>
            <field name="sessionId" type="Session-Id" desc="[字符串型] 票据"/>
        </requestParameter>

        <responseParameter>
            <field name="appId" type="App-Id-OUT" desc="[整数型] 应用id"/>
            <field name="areaId" type="Area-Id-OUT" desc="[整数型] 区id"/>
            <field name="verifyCost" type="Verify-Cost" desc="--废弃--"/>
            <field name="idcardChecked" type="Idcard-Checked" desc="--废弃--"/>
            <field name="proxyTicket" type="PGT-Type" desc="[字符串型] 代理票据"/>
            <field name="ptId" type="Pt-Id" desc="[字符串型] PT账号"/>
            <field name="sndaId" type="Snda-Id" desc="[字符串型] 数字账号"/>
            <field name="uId" type="U-Id" desc="--废弃--"/>
            <field name="idCard" type="Id-Card" desc="--废弃--"/>
            <field name="identityState" type="Identity-State" desc="--废弃--"/>
            <field name="clientIp" type="Client-IP" desc="[字符串型] 登录的客户端ip"/>
            <field name="subApp" type="Sub-App" desc="[字符串型] 账号属性标识(1=禁止登录、3=金牌账号、4=CD卡绑定账号、5=CD卡绑定仓库、6=成年人、7=已实名、8=下家、9=上线提醒、10=推广员、11=财富卡、12=极品道具异动),多个属性标识通过|分隔"/> 
            <field name="forbiddenAccount" type="Forbidden-Account" desc="[字符串型] 账号是否有‘禁止登录’属性:Y=是,N=否" />
            <field name="goldenAccount" type="Golden-Account" desc="[字符串型] 账号是否有‘金牌账号’属性:Y=是,N=否"/>
            <field name="cdLockAccount" type="CdLock-Account" desc="[字符串型] 账号是否有‘CD卡绑定账号’属性:Y=是,N=否"/>
            <field name="cdLockStorage" type="CdLock-Storage" desc="[字符串型] 账号是否有‘CD卡绑定仓库’属性:Y=是,N=否"/>
            <field name="adult" type="Adult" desc="[字符串型] 账号是否有‘成年人’属性:Y=是,N=否"/>
            <field name="applingAdult" type="Appling-Adult" desc="[字符串型] 账号是否有‘已实名’属性:Y=是,N=否"/>
            <field name="spreadedUser" type="Spreaded-User" desc="[字符串型] 账号是否有‘下家’属性:Y=是,N=否"/>
            <field name="onlineSMSNotice" type="OnlineSMS-Notice" desc="[字符串型] 账号是否有‘上线提醒’属性:Y=是,N=否"/>
            <field name="spreader" type="Spreader" desc="[字符串型] 账号是否有‘推广员’属性:Y=是,N=否"/>
            <field name="wealthCard" type="Wealth-Card" desc="[字符串型] 账号是否有‘财富卡’属性:Y=是,N=否"/>
            <field name="itemTransfer" type="Item-Transfer" desc="[字符串型] 账号是否有‘极品道具异动’属性:Y=是,N=否"/>
            <field name="gameAccount" type="Game-Account" desc="[字符串型] 登录的客户端ip"/>
            <field name="ekeyType" type="Ekey-Type" desc="[字符串型] 认证系统给游戏生成的账号标识(部分游戏需要)"/>
            <field name="ekeyBindFlag" type="Ekey-Bind-Flag" desc="[字符串型] 密宝绑定标志" />
            <field name="clientSignature" type="Client-Signature" desc="--废弃--"/>
            <field name="ekeySN" type="Ekey-SN" desc="[字符串型] 密宝序列号" />
            <field name="ecardType" type="Ecard-Type" desc="[字符串型] 安全卡绑定标志" />
            <field name="ecardSN" type="Ecard-SN" desc="[字符串型] 安全卡序列号" />
            <field name="inputAccount" type="Input-Account" desc="[字符串型] 输入账号" />
            <field name="ecardBindFlag" type="Ecard-Bind-Flag" desc="[字符串型] 安全卡绑定标志" />
            <field name="autoLoginFlag" type="Auto-Login-Flag" desc="[字符串型] 是否开启自动登录:1=是,0=否" />
            <field name="voiceBindFlag" type="Voice-Bind-Flag" desc="--废弃--"/>
            <field name="voiceSN" type="Voice-SN" desc="--废弃--"/>
            <field name="UpgradeFlag" type="UpgradeFlag" desc="--废弃--"/>
            <field name="CompanyId" type="CompanyId" desc="[字符串型] 合作三方标识"/>
            <field name="AppIdTransFlag" type="AppIdTransFlag" desc="--废弃--"/>

            <field name="loginEndpointIp" type="loginEndpointIp" desc="[字符串型] 登录客户端ip" />
            <field name="displayAccount" type="displayAccount" desc="[字符串型] 账号用于显示的字符串" />
            <field name="verifyPhoneStatus" type="TI_verifyPhoneStatus" desc="[整数型] 安全手机绑定状态,1=未绑定、2=绑定并验证期中、3=绑定并已通过验证期" />
            <field name="isDynamicPwdSet" type="TI_isDynamicPwdSet" desc="[整数型] 游戏锁设置情况:0=关闭、2=仓库/元宝开启、3=仓库/元宝/角色开启;开启了游戏锁的游戏资源需要验证叨鱼动密后解除限制" />
            <field name="thirdUserId" type="thirdUserId" desc="[字符串型] 合作三方账号标识" />
            <field name="isStaticPwdLocked" type="isStaticPwdLocked" desc="[字符串型]是否开启了静密锁:0=否、1=是" />
        </responseParameter>
    </message>
</service>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124

# 示例代码

引用头文件

#include "CommonSDK.h"
1

业务响应回调处理

int VerifyServerCallBack(EMsgDirection eMsgType, unsigned int dwRpcId, int nResult,const ISDOCommonMsg* pResponse)
{
    if(eMsgType==E_REQUEST)
    {
        return 0;
    }
    else 
    {
        ISDOCommonMsg *pMsg = (ISDOCommonMsg *)pResponse;
        char *pServiceName = pMsg->GetMsgName();

        if(pServiceName!=NULL && strcasecmp(pServiceName, "VerifyServer.ReserveNotify")== 0)
        {
            //处理业务响应
            char szSndaId[16] = {0};
            pMsg->GetValue("sndaId", &szSndaId);
        }
        return 0;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

初始化

ISDOCommonHandler *handle = sdoCreateCommonHandler();
if (null!=handle)
{
    if (0==handle->Initialize("client.conf", "v1.2.1"))
    {
        handle->RegisterCallback("VerifyServer", VerifyServerCallBack);
    }
}
1
2
3
4
5
6
7
8

业务请求

ISDOCommonMsg *request = sdoCreateMsg(E_REQUEST, "VerifyServer.ReserveNotify");
request->SetValue("appId", 1);
request->SetValue("areaId", 1);
request->SetValue("sessionId", "xxxxxx");
if (0==handle->ASyncSendMsg(request, handle->GetRpcId()))
{
    // 提交成功
}
else
{
    //提交失败
}
1
2
3
4
5
6
7
8
9
10
11
12

# 问题排查

Last Updated: 4/24/2024, 9:15:53 AM