使用 Prowide 软件 API(WIFE) 处理 121 和 111 swift 标签

Handle 121 and 111 swift tag using Prowide Software API(WIFE)

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

我是图书馆的作者之一。字段 111 和 121 是可选用户 header(块 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 object,包括一个空的 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()

最后,在处理收款时,可以直接用getters获取gpi字段:

MT103 mt = MT103.parse(fin);
if (mt.getSwiftMessage().isGpi()) {
    System.out.println(mt.getSwiftMessage().getServiceIdentifier());
    System.out.println(mt.getSwiftMessage().getUETR());
}