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