我正在尝试向金融机构实施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());
然而,现在我尝试使用OpenIso8583.Net轻松地将isoMessage作为十六进制字符串传递,如下所示:
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
非常感谢任何帮助!
答案 0 :(得分:1)
基本上,您需要扩展使用自己的Iso8583
进行初始化的Template
在Template
中,您可以为每个字段设置格式化程序,以便不使用BCD和二进制打包。请查看Iso8583
的源代码,了解其工作原理。