You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QuickFixN中FIX50SP2版本LOGON实现及认证问题咨询

FIX50SP2客户端LOGON实现问题解答

问题1:LOGON消息选择FIX50SP2还是FIXT11?

FIXT1.1是传输层协议,专门负责会话管理(包括Logon、Logout这类管理消息);而FIX50SP2是应用层的业务消息规范。当对接FIX50SP2版本的协议时,LOGON消息需使用FIXT1.1的版本,会话建立后,业务消息(如订单、成交回报)再使用FIX50SP2的消息类型。

问题2:显式发送Logon还是在ToAdmin中处理认证?

不需要显式发送Logon消息,QuickFixN框架会在会话初始化时自动生成并发送该消息。你只需要在ToAdmin方法中拦截框架生成的Logon消息,添加Coinbase要求的认证逻辑即可——这和你当前代码的思路完全一致。

代码补充示例(基于你的现有逻辑)

你已经正确命中了Logon消息,接下来只需完成Coinbase要求的签名计算并添加对应字段即可,示例如下:

public void ToAdmin(QuickFix.Message message, SessionID sessionId)
{
    string msgType = message.Header.GetString(Tags.MsgType);

    if (msgType == MsgType.LOGON)
    {
        // 从配置读取Coinbase认证信息
        string apiKey = _settings.Get(sessionId).GetString("SenderCompID");
        string secret = _settings.Get(sessionId).GetString("Secret");
        string passphrase = _settings.Get(sessionId).GetString("Passphrase");
        
        // 按Coinbase规则生成签名
        string timestamp = DateTime.UtcNow.ToString("yyyyMMdd-HH:mm:ss");
        string signData = timestamp + msgType + message.ToString();
        string signature = ComputeHmacSha256(secret, signData);
        
        // 将认证字段添加到Logon消息中(需替换为Coinbase指定的Tag编号)
        message.SetField(new StringField(96, passphrase));
        message.SetField(new StringField(554, apiKey));
        message.SetField(new StringField(95, signature));
    }
}

// 辅助方法:计算HMAC SHA256签名
private string ComputeHmacSha256(string secret, string data)
{
    using (var hmac = new System.Security.Cryptography.HMACSHA256(Convert.FromBase64String(secret)))
    {
        byte[] hashBytes = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(data));
        return Convert.ToBase64String(hashBytes);
    }
}

注意:请根据Coinbase FIX文档替换示例中的Tag编号为实际要求的字段标识。

内容的提问来源于stack exchange,提问作者Dmitry Dyachkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:33:26