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

时间:2017-10-24 14:48:03

标签: parsing swift-mt

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

1 个答案:

答案 0 :(得分: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来处理这些字段。

设置程序和获取程序已添加到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());
}