【问题标题】:ISO8583 message header in Trx libraryTrx 库中的 ISO8583 消息头
【发布时间】:2013-07-25 06:30:58
【问题描述】:

我使用了 Trx ISO 8583 库。这个库以十六进制发送消息长度。但我需要发送 4 个字节的 Ascii 字符作为消息头。该怎么做?

【问题讨论】:

  • 请提供您尝试过的代码示例。
  • 嗨,巴霍迪尔。你用的是连接插座还是按需插座?

标签: c# iso8583 trx


【解决方案1】:

要更改消息头,您应该更改 NboFrameLengthSink 类在 Trx=>Communication=>Sinks=>NboFrameLengthSink.cs

更改代码下方的 public void Send(PipelineContext context) 函数

buffer.Write(true, _bytesInHeader == 2
                ? new[] {(byte) (length >> 8), (byte) length}
                : new[] {(byte) (length >> 24), (byte) (length >> 16), (byte) (length >> 8), (byte) (length)});

string ls_length;

ls_length = length.ToString("####").PadLeft(4,'0');

byte[] ascii = System.Text.Encoding.ASCII.GetBytes(ls_length);

buffer.Write(true, _bytesInHeader == 2
 ? new[] { (byte)(length >> 8), (byte)length }
 : ascii);

在函数 public bool Receive(PipelineContext context)中

代码

context.ExpectedBytes = ( header[0] << 24 ) | ( header[1] << 16 ) | ( header[2] << 8 ) | header[3];

改成

context.ExpectedBytes = header[0] | header[1] | header[2] | header[3];

如果您需要在 Ascii 中发送消息,但位图为 HEX 执行以下操作:

输入 iso8583Ascii1987.xml congif文件更改

<!-- Add first bitmap -->
<Invoke Name="Add">
  <Parameter Type="BitMapFieldFormatterFactory">
    <Property Name="FieldNumber" Value="0" />
    <Property Name="Description" Value="Primary bitmap" />
    <Property Name="Encoder" Reference="DataEncoderFactory" />
    <Property Name="LowerFieldNumber" Value="1" />
    <Property Name="UpperFieldNumber" Value="64" />
  </Parameter>
</Invoke>

<!-- Add secondary bitmap (field number 1) -->
<Invoke Name="Add">
  <Parameter Type="BitMapFieldFormatterFactory">
    <Property Name="FieldNumber" Value="1" />
    <Property Name="Description" Value="Secondary bitmap" />
    <Property Name="Encoder" Reference="DataEncoderFactory" />
    <Property Name="LowerFieldNumber" Value="65" />
    <Property Name="UpperFieldNumber" Value="128" />
  </Parameter>
</Invoke>

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 2016-05-21
    • 2016-01-20
    • 2014-02-12
    • 2019-06-01
    • 2012-03-23
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多