1

我们正在使用 Prowide Software (WIFE) API 来解析 swift 消息。在处理 swift 消息时,我们在 MT103 swift message.due 中获得标签 111 和 121,因为解析器代码失败。谁能帮我知道如何使用 WIFE API 处理这个问题?

4

1 回答 1

0

我是图书馆的作者之一。字段 111 和 121 是可选用户标头(块 3)的一部分,因此为了获取这些字段值,您必须执行以下操作:

String msg ="{1:F01CCRTIT2TA15A0000000000}{2:I103CCRTIT2TXXXXN}{3:{103:TGT}{113:NNBI}{108:FOO123}{111:001}{121:8579f4a4-a547-463e-ae63-e7c6620d59b4}}{4:\n" +
   ":20:0013355630808057\n" +
   etc
   ":71A:SHA\n" +
   "-}";
MT103 mt = MT103.parse(msg);
String UETR = mt.getSwiftMessage().getBlock3().getTagValue("121");

为了将来参考,自 SRU 2018 起,对 SWIFT gpi(SWIFT 全球支付创新)字段的支持已成为强制性要求。因此,即将推出的 Prowide Core 版本(自 2018 年 10 月起)包括许多新的 API 来处理这些领域。

Setter 和 getter 已添加到 SwiftMessage 对象中,包括一个空的 setter setUETR() ,它将自动生成一个有效的唯一标识符。

SwiftMessage m = new SwiftMessage();
String uetr = m.setUETR();
// the uetr will contain the generated identifier such as //"eb6305c9-1f7f-49de-aed0-16487c27b42d"

此外,如果消息是使用 MT103、MT103_STP、MT103_REMIT、MT202、MT205、MT202COV 或 MT205COV 类创建的,其中 UETR 是强制性的,则 block3 将已使用适当的字段 121 (UETR) 进行初始化。

MT103 mt = new MT103(sender, receiver);
mt.append(new Field20("MYREF"));
String uetr = mt.getSwiftMessage().getUETR()

最后,在处理收款时,可以使用 getter 直接检索 gpi 字段:

MT103 mt = MT103.parse(fin);
if (mt.getSwiftMessage().isGpi()) {
    System.out.println(mt.getSwiftMessage().getServiceIdentifier());
    System.out.println(mt.getSwiftMessage().getUETR());
}
于 2018-07-30T16:51:49.963 回答