Чтение быстрого сообщения MT940
Читаю сообщение Swift MT940, оно читается нормально, пока не возникла небольшая проблема. Ниже приведен фрагмент сообщения, которое я читаю;
:61:140423C207430136,99S103R802316/103//3242612
3000024426
:86:/CODETYPTR/027
CBNINGLA
DBLNNGLA
SETL/1404230804+0000
:61:140423C50000000,S202TRONGNCASHSWAP1C//3242830
3000024426
:86:/CODETYPTR/001
FCMBNGLA
NONREF
SETL/1404230918+0000
и это код, который я использую, чтобы прочитать эту строку;
if (line.StartsWith(":61:"))
{
string strdateE = line.Substring(4, 6);
string dt = strdateE.Substring(0, 2) + "/" + strdateE.Substring(2, 2) + "/" + strdateE.Substring(4, 2);
inflow940.VALUE_DATE = DateTime.ParseExact(dt, "yy/MM/dd", null);
inflow940.DR_CR = line.Substring(10, 1);int sIndex = line.IndexOf('S');
inflow940.AMOUNT = decimal.Parse(line.Substring(11, sIndex - 11).Replace(',', '.'));
inflow940.TRXNTYPE_IDCODE = line.Substring(line.IndexOf('S'), 4);
string refr = line.Split(new string[] { "//" }, StringSplitOptions.None)[0];
string reft = "";
if (refr.Contains("S202"))
{
reft = refr.Replace("S202", "//");
}
if (refr.Contains("S103"))
{
reft = refr.Replace("S103", "//");
}
if (refr.Contains("S102"))
{
reft = refr.Replace("S102", "//");
}
if (refr.Contains("FTRF"))
{
reft = refr.Replace("FTRF", "//");
}
inflow940.REFERENCE = reft.Split(new string[] { "//" }, StringSplitOptions.None)[1];
pointer = 2;
}
Приведенный выше код работает хорошо, но после развертывания решения я заметил, что файл, с которого я читаю, может быть в этом формате
:61:140423C7000000000,FTRFNONREF//3242445
3000024426
Моя проблема: большинство сообщений всегда приходят либо с S202, либо с S103 или S102, встроенными в строку, в ситуации, когда я сталкиваюсь с чем-то противоположным, как, например, с этим сообщением ниже (FTRF), как я могу изменить свой код для обработки этого?
1 ответ
Пользователь stackru Jaco создал библиотеку с открытым исходным кодом SharpMt940Lib. С помощью этой библиотеки вы можете разобрать файл mt940. Я бы предложил проверить ваш файл с этой библиотекой. Я думаю, это делает это намного проще.