1

我正在尝试向金融机构实施 ISO8589 消息。然而,他们有一个我调用的 Web 服务,然后我将 ISO8589 有效负载加载到 WCF 服务的适当字段中。

我以这种方式创建了一条 ISO8589 消息:

var isoMessage = new OpenIso8583.Net.Iso8583();
isoMessage.MessageType = Iso8583.MsgType._0100_AUTH_REQ;
isoMessage.TransactionAmount = (long) 123.00;
isoMessage[Iso8583.Bit._002_PAN] = "4111111111111111";
// More after this.

我似乎无法弄清楚如何将 isoMessage 转换为人类可读的 ASCII 格式,以便将其传递给 Web 服务。

任何人都知道如何使用这个库来做到这一点?还是我以错误的方式使用这个库?

谢谢。

更新:

我已经想出了如何做到这一点:

var asciiFormatter = new AsciiFormatter();
var asciiValue = asciiFormatter.GetString(isoMessage.ToMsg());

但是,现在我正在尝试获取 isoMessage 并使用 OpenIso8583.Net 轻松地将整个内容作为十六进制字符串传递,如下所示:

var isoMessage = new OpenIso8583Net.Iso8583();
isoMessage.MessageType = Iso8583.MsgType._0800_NWRK_MNG_REQ;
isoMessage[Iso8583.Bit._003_PROC_CODE] = "000000";
isoMessage[Iso8583.Bit._011_SYS_TRACE_AUDIT_NUM] = "000001";
isoMessage[Iso8583.Bit._041_CARD_ACCEPTOR_TERMINAL_ID] = "29110001";

我知道这很棘手,因为有些字段是 BCD、AlpahNumeric、Numeric 等。但是,使用 OpenIso8583.Net 应该真的很容易(或者我认为)?我想得到的结果是:

Msg   Bitmap (3, 11, 41)      ProcCode Audit    Terminal ID
----- ----------------------- -------- -------- -----------------------
08 00 20 20 00 00 00 80 00 00 00 00 00 00 00 01 32 39 31 31 30 30 30 31

任何帮助将不胜感激!

4

1 回答 1

1

本质上,您需要扩展Iso8583您自己初始化的内容Template 在 中Template,您可以为每个字段设置格式化程序,以便不使用 BCD 和二进制打包。查看源代码Iso8583以了解其工作原理。

于 2012-11-05T09:18:40.017 回答