CTP_API商密版本

如需使用商密连接必须使用商密版本API,如下所示:

如果不需要商密连接,则下载以下版本:

商密版本与普通版本的区别:

版本号:v6.6.2_P7_SM_20211105
后台版本:V6.6.1

补充变更说明:(如需使用商密连接必须使用商密版本API,请各终端厂商根据自身情况进行开发)

1、ReqUserLoginSM接口
CTP API新增ReqUserLoginSM接口:
int ReqUserLoginSM(CThostFtdcReqUserLoginSMField *pReqUserLoginSM, int nRequestID) ;

///商密用户登录请求
struct CThostFtdcReqUserLoginSMField
{
///交易日
TThostFtdcDateType TradingDay;
///经纪公司代码
TThostFtdcBrokerIDType BrokerID;
///用户代码
TThostFtdcUserIDType UserID;
///密码
TThostFtdcPasswordType Password;
///用户端产品信息
TThostFtdcProductInfoType UserProductInfo;
///接口端产品信息
TThostFtdcProductInfoType InterfaceProductInfo;
///协议信息
TThostFtdcProtocolInfoType ProtocolInfo;
///Mac地址
TThostFtdcMacAddressType MacAddress;
///动态密码
TThostFtdcPasswordType OneTimePassword;
///终端IP地址
TThostFtdcIPAddressType ClientIPAddress;
///登录备注
TThostFtdcLoginRemarkType LoginRemark;
///终端IP端口
TThostFtdcIPPortType ClientIPPort;
///认证码
TThostFtdcAuthCodeType AuthCode;
///App代码
TThostFtdcAppIDType AppID;
///PIN码
TThostFtdcPasswordType PIN;

};
此接口相比原ReqUserLogin接口,增加认证码、AppID与PIN字段。在用户调用ReqUserLoginSM成功后,API自动与商密安全网关进行用户证书校验、协同签名、建立双向认证的通讯链路过程。 通讯链路建立成功后,API根据用户调用接口时是否输入AuthCode字段,自动调用ReqAuthenticate接口进行客户端认证,或者直接调用原ReqUserLogin接口登录前置。
如调用ReqUserLoginSM返回为-5,表示当前连接上的是非商密前置,请继续原非商密代码流程。

2、GetSMProtocol
当客户端连接smagent (地址配置为:sma://…)时,客户端拿不到smagent代理的真实商密厂商协议类型,所以增加此接口。如客户端可以明确所连的商密协议,则无需调用此函数。

///获取真实商密厂商协议类型
///用于客户端连接smagent代理时
///@retrun THOST_SM_SMK:格尔; THOST_SM_SMI:信安;
/// THOST_SM_SMS:信雅达; THOST_SM_NOTSM:其他非商密协议
THOST_SM_PROTOCOL_TYPE GetSMProtocol();

3、客户端调用API改造
客户端需要改造的地方有两点:
1)RegisterFront的地址格式,改为商密地址格式,说明如下:

商密地址统一为sm开头的协议:
地址:sm*://CERTHOST:CERTPORT/SSLHOST:SSLPORT,示例如下:
示例一:smi://CERTHOST:CERTPORT/SSLHOST:SSLPORT
示例二:smk://CERTHOST:CERTPORT/SSLHOST:SSLPORT
示例三:sms://CERTHOST:CERTPORT/SSLHOST:SSLPORT
示例四:smagent:sma://CERTHOST:CERTPORT/SSLHOST:SSLPORT
(smagent是代替非商密tradeagent的组件)

其中CERTHOST是证书与协同签名地址;SSLHOST为通讯链路地址;CERTHOST与SSLHOST的值,根据实际方案可以一样也可以不一样。
IPv6的协议类型为sm*6,如:smi6, smk6, sms6, sma6

2)客户端登录时,需要调用新的ReqUserLoginSM接口,此接口兼容商密和非商密流程。

4、其他API相关说明
1)商密API不需要客户端手工调用客户端认证ReqAuthenticate函数,由API内部在通讯链路建立成功后,自动调用。

2)客户端自动重连逻辑:证书验证或者协同签名处理失败,返回客户端RspError,不自动重连;通讯链路连接过程中的错误,以及通讯链路连接上后断线,会自动重连。

3)针对多对多模式的中继系统,采集终端信息时仍需要在调用ReqUserLoginSM接口之前调用RegisterUserSystemInfo接口。 (客户端认证接口ReqAuthenticate已经包在ReqUserLoginSM内部)



   微信关注公众号:



   点击获取QQ、微信群聊