Создать сообщение ISO 8583

Я пытаюсь создать сообщение ISO 8583, используя библиотеку openiso8583

Не было поля № 17 (Date, capture) поэтому я расширил класс.

Iso8583Finacle msg = new Iso8583Finacle();
msg.MessageType = Iso8583.MsgType._0120_AUTH_ADV;

msg[Iso8583Finacle.Bit._003_PROC_CODE] = "310000";
msg[Iso8583Finacle.Bit._004_TRAN_AMOUNT] = "0000000000000000";
msg[Iso8583Finacle.Bit._011_SYS_TRACE_AUDIT_NUM] = "380767397537";

msg[Iso8583Finacle.Bit._012_LOCAL_TRAN_DATETIME] = "20131003075957";
msg[Iso8583Finacle.Bit._017_CAPTURE_DATE] = "20131003";

Тем не менее, это выдает ошибку.

UnknownFieldException не было обработано
Поле 17 неизвестно

Может кто-нибудь сказать мне, как правильно расширить класс сообщения?

2 ответа

Когда вы расширяете класс, вам необходимо переопределить метод CreateField, чтобы вернуть правильно отформатированное поле. Взгляните на вики-страницу для расширения сообщения

https://code.google.com/p/openiso8583net/wiki/ExtendingIso8583

Корень вашей проблемы в том, что DE017 должен иметь длину 4 в формате MMDD, вы предоставляете дату формата YYYYDDMM для поля, которое слишком велико и может не пройти некоторые проверки редактирования, даже если оно попыталось усечь это не могло сделать месяц = ​​20, поскольку это неверно.

Другие вопросы по тегам