Commit 97c75817 by chengzhuoshen

根据官方mapping文档完成camt054001转MT900910。

parent d5e16b5c
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>1.2.24</version> <version>1.2.83</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -24,37 +24,37 @@ public class Field13CGenerate extends AbstractMx2MtTagsGenerate { ...@@ -24,37 +24,37 @@ public class Field13CGenerate extends AbstractMx2MtTagsGenerate {
String dbtDtTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmIndctn.DbtDtTm"); String dbtDtTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmIndctn.DbtDtTm");
if (StringUtil.isNotEmpty(dbtDtTmStr)) { if (StringUtil.isNotEmpty(dbtDtTmStr)) {
XMLGregorianCalendar dbtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(dbtDtTmStr); XMLGregorianCalendar dbtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(dbtDtTmStr);
String value = "/SNDTIME/" + String.valueOf(dbtDtTm.getHour()) + String.valueOf(dbtDtTm.getMinute()) + dbtDtTmStr.substring(dbtDtTmStr.length()-6); String value = "/SNDTIME/" + (dbtDtTm.getHour()<10?"0"+dbtDtTm.getHour():dbtDtTm.getHour()) + (dbtDtTm.getMinute()<10?"0"+dbtDtTm.getMinute():dbtDtTm.getMinute()) + dbtDtTmStr.substring(dbtDtTmStr.length()-6);
tags.add(new Tag(name, value)); tags.add(new Tag(name, value));
} }
String cdtDtTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmIndctn.CdtDtTm"); String cdtDtTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmIndctn.CdtDtTm");
if (StringUtil.isNotEmpty(cdtDtTmStr)) { if (StringUtil.isNotEmpty(cdtDtTmStr)) {
XMLGregorianCalendar cdtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(cdtDtTmStr); XMLGregorianCalendar cdtDtTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(cdtDtTmStr);
String value = "/RNCTIME/" + String.valueOf(cdtDtTm.getHour()) + String.valueOf(cdtDtTm.getMinute()) + dbtDtTmStr.substring(cdtDtTmStr.length()-6); String value = "/RNCTIME/" + (cdtDtTm.getHour()<10?"0"+cdtDtTm.getHour():cdtDtTm.getHour()) + (cdtDtTm.getMinute()<10?"0"+cdtDtTm.getMinute():cdtDtTm.getMinute()) + dbtDtTmStr.substring(cdtDtTmStr.length()-6);
tags.add(new Tag(name, value)); tags.add(new Tag(name, value));
} }
String clsTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.CLSTm"); String clsTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.CLSTm");
if (StringUtil.isNotEmpty(clsTmStr)) { if (StringUtil.isNotEmpty(clsTmStr)) {
XMLGregorianCalendar clsTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(clsTmStr); XMLGregorianCalendar clsTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(clsTmStr);
String value = "/CLSTIME/" + String.valueOf(clsTm.getHour()) + String.valueOf(clsTm.getMinute()) + clsTmStr.substring(clsTmStr.length()-6); String value = "/CLSTIME/" + (clsTm.getHour()<10?"0"+clsTm.getHour():clsTm.getHour()) + (clsTm.getMinute()<10?"0"+clsTm.getMinute():clsTm.getMinute()) + clsTmStr.substring(clsTmStr.length()-6);
tags.add(new Tag(name, value)); tags.add(new Tag(name, value));
} }
String tillTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.TillTm"); String tillTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.TillTm");
if (StringUtil.isNotEmpty(tillTmStr)) { if (StringUtil.isNotEmpty(tillTmStr)) {
XMLGregorianCalendar tillTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(tillTmStr); XMLGregorianCalendar tillTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(tillTmStr);
String value = "/TILTIME/" + String.valueOf(tillTm.getHour()) + String.valueOf(tillTm.getMinute()) + tillTmStr.substring(tillTmStr.length()-6); String value = "/TILTIME/" + (tillTm.getHour()<10?"0"+tillTm.getHour():tillTm.getHour()) + (tillTm.getMinute()<10?"0"+tillTm.getMinute():tillTm.getMinute()) + tillTmStr.substring(tillTmStr.length()-6);
tags.add(new Tag(name, value)); tags.add(new Tag(name, value));
} }
String frTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.FrTm"); String frTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.FrTm");
if (StringUtil.isNotEmpty(frTmStr)) { if (StringUtil.isNotEmpty(frTmStr)) {
XMLGregorianCalendar frTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(frTmStr); XMLGregorianCalendar frTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(frTmStr);
String value = "/FROTIME/" + String.valueOf(frTm.getHour()) + String.valueOf(frTm.getMinute()) + frTmStr.substring(frTmStr.length()-6); String value = "/FROTIME/" + (frTm.getHour()<10?"0"+frTm.getHour():frTm.getHour()) + (frTm.getMinute()<10?"0"+frTm.getMinute():frTm.getMinute()) + frTmStr.substring(frTmStr.length()-6);
tags.add(new Tag(name, value)); tags.add(new Tag(name, value));
} }
String rejTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.RjctTm"); String rejTmStr = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.SttlmTmReq.RjctTm");
if (StringUtil.isNotEmpty(rejTmStr)) { if (StringUtil.isNotEmpty(rejTmStr)) {
XMLGregorianCalendar rejTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(rejTmStr); XMLGregorianCalendar rejTm = DatatypeFactory.newInstance().newXMLGregorianCalendar(rejTmStr);
String value = "/REJTIME/" + String.valueOf(rejTm.getHour()) + String.valueOf(rejTm.getMinute()) + rejTmStr.substring(rejTmStr.length()-6); String value = "/REJTIME/" + (rejTm.getHour()<10?"0"+rejTm.getHour():rejTm.getHour()) + (rejTm.getMinute()<10?"0"+rejTm.getMinute():rejTm.getMinute()) + rejTmStr.substring(rejTmStr.length()-6);
tags.add(new Tag(name, value)); tags.add(new Tag(name, value));
} }
} catch(DatatypeConfigurationException e) { } catch(DatatypeConfigurationException e) {
......
...@@ -22,10 +22,13 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate { ...@@ -22,10 +22,13 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate {
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
//TODO 为F条件待补充
SwiftMessage swiftMessage = context.get(SwiftMessage.class); SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags(); List<Tag> tags = swiftMessage.getBlock4().getTags();
String partyPath = bodyHdrParentElementName + ".CdtTrfTxInf.Dbtr";
String bicCode = mx_to_mtAnyBIC(bodyHdrParentElementName + ".CdtTrfTxInf.Dbtr"); String bicCode = mx_to_mtAnyBIC(bodyHdrParentElementName + ".CdtTrfTxInf.Dbtr");
String countryCode = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.Dbtr.PstlAdr.Ctry");
String name = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.Dbtr.Nm");
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "CdtTrfTxInf.Dbtr.PstlAdr.AdrLine");
String account = mx_to_mtAccount(bodyHdrParentElementName + ".CdtTrfTxInf.DbtrAcct"); String account = mx_to_mtAccount(bodyHdrParentElementName + ".CdtTrfTxInf.DbtrAcct");
String value = ""; String value = "";
if (StringUtil.isNotEmpty(bicCode)) { if (StringUtil.isNotEmpty(bicCode)) {
...@@ -35,25 +38,51 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate { ...@@ -35,25 +38,51 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate {
value = bicCode; value = bicCode;
} }
tags.add(new Tag(name_A, value)); tags.add(new Tag(name_A, value));
} else { } else if (StringUtil.isNotEmpty(countryCode)) {
String name = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.Dbtr.Nm"); String nameAddress = mx_to_mtFATFNameAndAddress(partyPath);
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "CdtTrfTxInf.Dbtr.PstlAdr.AdrLine"); if (StringUtil.isEmpty(account)) {
if (addressLineCount > 0) { account = mx_to_mtFATFIdentification(partyPath);
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(bodyHdrParentElementName + ".CdtTrfTxInf.Dbtr"); if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
}
if (StringUtil.isEmpty(account)) {
account = "/" + Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE;
}
value = account + Mx2MtConstants.NEW_LINE + nameAddress;
tags.add(new Tag(name_F, value));
} else if (addressLineCount > 0) {
boolean structuredAddressIndicator = mx_to_mtAddressLineType(partyPath);
if (structuredAddressIndicator) {
String nameAddress = mx_to_mtFATFNameAndAddress2(partyPath);
if (StringUtil.isEmpty(account)) {
account = mx_to_mtFATFIdentification(partyPath);
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
}
if (StringUtil.isEmpty(account)) {
account = "/" + Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE;
}
value = account + Mx2MtConstants.NEW_LINE + nameAddress;
tags.add(new Tag(name_F, value));
} else {
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(partyPath);
if (StringUtil.isNotEmpty(account)) { if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress; value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else { } else {
value = mtNameAddress; value = mtNameAddress;
} }
tags.add(new Tag(name_K, value)); tags.add(new Tag(name_K, value));
} else if (StringUtil.isNotEmpty(name)) {
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + name;
} else {
value = name;
}
tags.add(new Tag(name_K, value));
} }
} else if (StringUtil.isNotEmpty(name)) {
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(partyPath);
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_K, value));
} }
} }
} }
...@@ -56,7 +56,7 @@ public class Field59Generate extends AbstractMx2MtTagsGenerate { ...@@ -56,7 +56,7 @@ public class Field59Generate extends AbstractMx2MtTagsGenerate {
} else if (addressLineCount > 0){ } else if (addressLineCount > 0){
boolean structuredAddressIndicator = mx_to_mtAddressLineType(partyPath); boolean structuredAddressIndicator = mx_to_mtAddressLineType(partyPath);
if (structuredAddressIndicator) { if (structuredAddressIndicator) {
String nameAddress = mx_to_mtPartyNameAndAddressLEI2(partyPath); String nameAddress = mx_to_mtPartyNameAndAddressLEI2(partyPath, "3/");
if (StringUtil.isNotEmpty(account)) { if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + nameAddress; value = account + Mx2MtConstants.NEW_LINE + nameAddress;
} else { } else {
......
...@@ -21,11 +21,14 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate { ...@@ -21,11 +21,14 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate {
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
//TODO 为F条件待补充
boolean covFlag = false; boolean covFlag = false;
SwiftMessage swiftMessage = context.get(SwiftMessage.class); SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags(); List<Tag> tags = swiftMessage.getBlock4().getTags();
String partyPath = bodyHdrParentElementName + ".CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr";
String bicCode = mx_to_mtAnyBIC(bodyHdrParentElementName + ".CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr"); String bicCode = mx_to_mtAnyBIC(bodyHdrParentElementName + ".CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr");
String countryCode = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.PstlAdr.Ctry");
String name = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.Nm");
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.PstlAdr.AdrLine");
String account = mx_to_mtAccount(bodyHdrParentElementName + ".CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAcct"); String account = mx_to_mtAccount(bodyHdrParentElementName + ".CdtTrfTxInf.UndrlygCstmrCdtTrf.DbtrAcct");
String value = ""; String value = "";
if (StringUtil.isNotEmpty(bicCode)) { if (StringUtil.isNotEmpty(bicCode)) {
...@@ -36,26 +39,55 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate { ...@@ -36,26 +39,55 @@ public class Field50AGenerate extends AbstractMx2MtTagsGenerate {
} }
tags.add(new Tag(name_A, value)); tags.add(new Tag(name_A, value));
covFlag = true; covFlag = true;
} else { } else if (StringUtil.isNotEmpty(countryCode)) {
String name = getXmlNodeValue(bodyHdrParentElementName, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.Nm"); String nameAddress = mx_to_mtFATFNameAndAddress(partyPath);
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr.PstlAdr.AdrLine"); if (StringUtil.isEmpty(account)) {
if (addressLineCount > 0) { account = mx_to_mtFATFIdentification(partyPath);
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(bodyHdrParentElementName + ".CdtTrfTxInf.UndrlygCstmrCdtTrf.Dbtr"); if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
}
if (StringUtil.isEmpty(account)) {
account = "/" + Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE;
}
value = account + Mx2MtConstants.NEW_LINE + nameAddress;
tags.add(new Tag(name_F, value));
covFlag = true;
} else if (addressLineCount > 0) {
boolean structuredAddressIndicator = mx_to_mtAddressLineType(partyPath);
if (structuredAddressIndicator) {
String nameAddress = mx_to_mtFATFNameAndAddress2(partyPath);
if (StringUtil.isEmpty(account)) {
account = mx_to_mtFATFIdentification(partyPath);
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
}
if (StringUtil.isEmpty(account)) {
account = "/" + Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE;
}
value = account + Mx2MtConstants.NEW_LINE + nameAddress;
tags.add(new Tag(name_F, value));
covFlag = true;
} else {
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(partyPath);
if (StringUtil.isNotEmpty(account)) { if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress; value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else { } else {
value = mtNameAddress; value = mtNameAddress;
} }
tags.add(new Tag(name_K, value)); tags.add(new Tag(name_K, value));
} else if (StringUtil.isNotEmpty(name)) {
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + name;
} else {
value = name;
}
tags.add(new Tag(name_K, value));
covFlag = true; covFlag = true;
} }
} else if (StringUtil.isNotEmpty(name)) {
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(partyPath);
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_K, value));
covFlag = true;
} }
if (covFlag) { if (covFlag) {
SwiftBlock3 block3 = context.get(SwiftMessage.class).getBlock3(); SwiftBlock3 block3 = context.get(SwiftMessage.class).getBlock3();
......
...@@ -48,7 +48,7 @@ public class Field59AGenerate extends AbstractMx2MtTagsGenerate { ...@@ -48,7 +48,7 @@ public class Field59AGenerate extends AbstractMx2MtTagsGenerate {
} else if (addressLineCount > 0){ } else if (addressLineCount > 0){
boolean structuredAddressIndicator = mx_to_mtAddressLineType(partyPath); boolean structuredAddressIndicator = mx_to_mtAddressLineType(partyPath);
if (structuredAddressIndicator) { if (structuredAddressIndicator) {
String nameAddress = mx_to_mtPartyNameAndAddressLEI2(partyPath); String nameAddress = mx_to_mtPartyNameAndAddressLEI2(partyPath, "3/");
if (StringUtil.isNotEmpty(account)) { if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + nameAddress; value = account + Mx2MtConstants.NEW_LINE + nameAddress;
} else { } else {
......
...@@ -7,8 +7,6 @@ import com.brilliance.swift.mx2mt.Mx2MtContextIdentifier; ...@@ -7,8 +7,6 @@ import com.brilliance.swift.mx2mt.Mx2MtContextIdentifier;
import com.brilliance.swift.mx2mt.Mx2MtTagsGenerate; import com.brilliance.swift.mx2mt.Mx2MtTagsGenerate;
import com.brilliance.swift.mx2mt.mt900910.impl.*; import com.brilliance.swift.mx2mt.mt900910.impl.*;
import com.brilliance.swift.util.XmlUtil; import com.brilliance.swift.util.XmlUtil;
import com.prowidesoftware.swift.model.SwiftBlock3;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.mx.dic.CreditDebitCode; import com.prowidesoftware.swift.model.mx.dic.CreditDebitCode;
import org.dom4j.Document; import org.dom4j.Document;
...@@ -31,25 +29,19 @@ public class Mx2Mt900910Creator extends AbstractMx2MtCreator { ...@@ -31,25 +29,19 @@ public class Mx2Mt900910Creator extends AbstractMx2MtCreator {
@Override @Override
public void withBlock3() throws SwiftException { public void withBlock3() throws SwiftException {
super.withBlock3(); super.withBlock3();
SwiftBlock3 block3 = context.get(SwiftMessage.class).getBlock3();
Document document = (Document)context.get(Mx2MtContextIdentifier.MX_XMl_DOCUMENT, true);
String bodyParentPath = (String)context.get(Mx2MtContextIdentifier.BODY_PARENT_ELEMENT_NAME, true);
/*String uetr = getXmlNodeValue(bodyParentPath, document, "CdtTrfTxInf.PmtId.UETR");
if (StringUtil.isNotEmpty(uetr)) {
block3.getTags().add(new Tag("121", uetr));
}*/
} }
@Override @Override
public List<Mx2MtTagsGenerate> getGenerateTagList() { public List<Mx2MtTagsGenerate> getGenerateTagList() {
List<Mx2MtTagsGenerate> fieldsGenerateList = new ArrayList<>(); List<Mx2MtTagsGenerate> fieldsGenerateList = new ArrayList<>();
fieldsGenerateList.add(new Field13DGenerate());
fieldsGenerateList.add(new Field20Generate()); fieldsGenerateList.add(new Field20Generate());
fieldsGenerateList.add(new Field21Generate()); fieldsGenerateList.add(new Field21Generate());
fieldsGenerateList.add(new Field25aGenerate()); fieldsGenerateList.add(new Field25aGenerate());
fieldsGenerateList.add(new Field13DGenerate());
fieldsGenerateList.add(new Field32AGenerate()); fieldsGenerateList.add(new Field32AGenerate());
fieldsGenerateList.add(new Field50aGenerate()); fieldsGenerateList.add(new Field50aGenerate());
fieldsGenerateList.add(new Field52aGenerate()); fieldsGenerateList.add(new Field52aFor900Generate());
fieldsGenerateList.add(new Field52aFor910Generate());
fieldsGenerateList.add(new Field56aGenerate()); fieldsGenerateList.add(new Field56aGenerate());
fieldsGenerateList.add(new Field72Generate()); fieldsGenerateList.add(new Field72Generate());
return fieldsGenerateList; return fieldsGenerateList;
...@@ -61,10 +53,9 @@ public class Mx2Mt900910Creator extends AbstractMx2MtCreator { ...@@ -61,10 +53,9 @@ public class Mx2Mt900910Creator extends AbstractMx2MtCreator {
Document document = (Document)context.get(Mx2MtContextIdentifier.MX_XMl_DOCUMENT); Document document = (Document)context.get(Mx2MtContextIdentifier.MX_XMl_DOCUMENT);
String bodyParentPath = (String)context.get(Mx2MtContextIdentifier.BODY_PARENT_ELEMENT_NAME, true); String bodyParentPath = (String)context.get(Mx2MtContextIdentifier.BODY_PARENT_ELEMENT_NAME, true);
String cdtDbtInd = getXmlNodeValue(bodyParentPath, document, "Ntfctn.Ntry.CdtDbtInd"); String cdtDbtInd = getXmlNodeValue(bodyParentPath, document, "Ntfctn.Ntry.CdtDbtInd");
//judge 900 or 910 if (CreditDebitCode.DBIT.value().equals(cdtDbtInd)) {
if (CreditDebitCode.DBIT.equals(CreditDebitCode.valueOf(cdtDbtInd))) {
mtType = Mx2MtConstants.MT_TYPE_900; mtType = Mx2MtConstants.MT_TYPE_900;
} else if (CreditDebitCode.CRDT.equals(CreditDebitCode.valueOf(cdtDbtInd))) { } else if (CreditDebitCode.CRDT.value().equals(cdtDbtInd)) {
mtType = Mx2MtConstants.MT_TYPE_910; mtType = Mx2MtConstants.MT_TYPE_910;
} }
return mtType; return mtType;
......
...@@ -2,12 +2,36 @@ package com.brilliance.swift.mx2mt.mt900910.impl; ...@@ -2,12 +2,36 @@ package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.DateUtil;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class Field13DGenerate extends AbstractMx2MtTagsGenerate { public class Field13DGenerate extends AbstractMx2MtTagsGenerate {
private static String name = "13D";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
try {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String bookDateStr = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.BookgDt");
if (StringUtil.isNotEmpty(bookDateStr)) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date bookDate = fmt.parse(bookDateStr);
String dateStr = DateUtil.format(bookDate, "yyMMddHHmm");
String value = dateStr + bookDateStr.substring(bookDateStr.length()-6);
tags.add(new Tag(name, value));
}
} catch (ParseException e) {
throw new SwiftException("ERROR", e.getMessage());
}
} }
} }
package com.brilliance.swift.mx2mt.mt900910.impl; package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
/** /**
* <GrpHdr><MsgId> * <GrpHdr><MsgId>
*/ */
public class Field20Generate extends AbstractMx2MtTagsGenerate { public class Field20Generate extends AbstractMx2MtTagsGenerate {
private static String name = "20";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String messageId = getXmlNodeValue(grpHdrParentElementName, document, "GrpHdr.MsgId");
if (StringUtil.isNotEmpty(messageId)) {
String value = "";
if (messageId.length() > 16) {
value = messageId.substring(0, 15) + "+";
}
if (value.startsWith("/") || value.endsWith("/") || value.contains("//")) {
value = Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE;
}
tags.add(new Tag(name, value));
}
} }
} }
...@@ -2,14 +2,39 @@ package com.brilliance.swift.mx2mt.mt900910.impl; ...@@ -2,14 +2,39 @@ package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
/** /**
* <Ntfctn><Ntry><NtryDtls><TxDtls><Refs><EndToEndId> * <Ntfctn><Ntry><NtryDtls><TxDtls><Refs><EndToEndId>
*/ */
public class Field21Generate extends AbstractMx2MtTagsGenerate { public class Field21Generate extends AbstractMx2MtTagsGenerate {
private static String name = "21";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String endToEndId = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.Refs.EndToEndId");
String instructionId = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.Refs.InstrId");
String value = "";
if (StringUtil.isNotEmpty(endToEndId)) {
value = endToEndId;
if (endToEndId.length() > 16) {
value = endToEndId.substring(0, 15) + "+";
}
} else if (StringUtil.isNotEmpty(instructionId)) {
value = instructionId;
if (instructionId.length() > 16) {
value = instructionId.substring(0, 15) + "+";
}
}
if (StringUtil.isNotEmpty(value)) {
tags.add(new Tag(name, value));
}
} }
} }
package com.brilliance.swift.mx2mt.mt900910.impl; package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
/** /**
* <Ntfctn><Acct><Id><IBAN> * <Ntfctn><Acct><Id><IBAN>
...@@ -9,9 +15,31 @@ import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; ...@@ -9,9 +15,31 @@ import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
*/ */
public class Field25aGenerate extends AbstractMx2MtTagsGenerate { public class Field25aGenerate extends AbstractMx2MtTagsGenerate {
private static String name = "25";
private static String name_P = "25P";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String iban = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Acct.Id.IBAN");
String acctId = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Acct.Id.Othr.Id");
String account = StringUtil.isNotEmpty(iban) ? iban : acctId;
String bicCode = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Acct.Ownr.Id.OrgId.AnyBIC");
String value = "";
if (StringUtil.isNotEmpty(bicCode)) {
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
value = bicCode;
}
tags.add(new Tag(name_P, value));
} else {
value = account;
if (StringUtil.isNotEmpty(value)) {
tags.add(new Tag(name, value));
}
}
} }
} }
...@@ -2,6 +2,17 @@ package com.brilliance.swift.mx2mt.mt900910.impl; ...@@ -2,6 +2,17 @@ package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.DateUtil;
import com.brilliance.swift.util.NumberUtil;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.math.BigDecimal;
import java.util.List;
/** /**
* <Ntfctn><Ntry><ValDt><Dt> * <Ntfctn><Ntry><ValDt><Dt>
...@@ -9,9 +20,34 @@ import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; ...@@ -9,9 +20,34 @@ import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
*/ */
public class Field32AGenerate extends AbstractMx2MtTagsGenerate { public class Field32AGenerate extends AbstractMx2MtTagsGenerate {
private static String name = "32A";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
try {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String intrBkSttlmDtStr = "";
String intrBkSttlmAmt = "";
String intrBkSttlmccy = "";
String intrBkSttlmDtValue = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.ValDt.Dt");
if (StringUtil.isEmpty(intrBkSttlmDtValue)) {
intrBkSttlmDtValue = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdDts.IntrBkSttlmDt");
}
if (StringUtil.isNotEmpty(intrBkSttlmDtValue)) {
XMLGregorianCalendar intrBkSttlmDt = DatatypeFactory.newInstance().newXMLGregorianCalendar(intrBkSttlmDtValue);
intrBkSttlmDtStr = DateUtil.format(intrBkSttlmDt, "yyMMdd");
}
String amt = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.Amt");
String ccy = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.Amt@Ccy");
if (StringUtil.isNotEmpty(amt) && StringUtil.isNotEmpty(ccy)) {
intrBkSttlmAmt = NumberUtil.formatAmt(new BigDecimal(amt), ccy);
intrBkSttlmccy = ccy;
}
tags.add(new Tag(name, intrBkSttlmDtStr+intrBkSttlmccy+intrBkSttlmAmt));
} catch (DatatypeConfigurationException e) {
throw new SwiftException("ERROR", e.getMessage());
}
} }
......
package com.brilliance.swift.mx2mt.mt900910.impl; package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import com.prowidesoftware.swift.model.mx.dic.CreditDebitCode;
import java.util.List;
/** /**
* 50A * 50A
...@@ -15,9 +22,109 @@ import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; ...@@ -15,9 +22,109 @@ import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
*/ */
public class Field50aGenerate extends AbstractMx2MtTagsGenerate { public class Field50aGenerate extends AbstractMx2MtTagsGenerate {
private static String name_A = "50A";
private static String name_F = "50F";
private static String name_K = "50K";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String cdtDbtInd = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.CdtDbtInd");
if (!CreditDebitCode.CRDT.value().equals(cdtDbtInd)) {
return;
}
String value = "";
String partyPath = bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Pty";
String bicCode = mx_to_mtAnyBIC(bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Pty");
String countryCode = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Pty.PstlAdr.Ctry");
String name = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Pty.Nm");
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Pty.PstlAdr.AdrLine");
String account = mx_to_mtAccount(bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.DbtrAcct");
if (StringUtil.isNotEmpty(bicCode)) {
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
value = bicCode;
}
tags.add(new Tag(name_A, value));
} else if (StringUtil.isNotEmpty(countryCode)) {
String nameAddress = mx_to_mtFATFNameAndAddress(partyPath);
if (StringUtil.isEmpty(account)) {
account = mx_to_mtFATFIdentification(partyPath);
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
}
if (StringUtil.isEmpty(account)) {
account = "/" + Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE;
}
value = account + Mx2MtConstants.NEW_LINE + nameAddress;
tags.add(new Tag(name_F, value));
} else if (addressLineCount > 0) {
boolean structuredAddressIndicator = mx_to_mtAddressLineType(partyPath);
if (structuredAddressIndicator) {
String nameAddress = mx_to_mtFATFNameAndAddress2(partyPath);
if (StringUtil.isEmpty(account)) {
account = mx_to_mtFATFIdentification(partyPath);
if (StringUtil.isNotEmpty(account) && account.length() > 35) {
account = account.substring(0, 35);
}
}
if (StringUtil.isEmpty(account)) {
account = "/" + Mx2MtConstants.MX_TO_MT_DEFAULT_VALUE;
}
value = account + Mx2MtConstants.NEW_LINE + nameAddress;
tags.add(new Tag(name_F, value));
} else {
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(partyPath);
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_K, value));
}
} else if (StringUtil.isNotEmpty(name)) {
String mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(partyPath);
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_K, value));
}
if (StringUtil.isEmpty(value)) {
bicCode = mx_to_mtBICFI(bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt");
if (StringUtil.isNotEmpty(bicCode)) {
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
value = bicCode;
}
tags.add(new Tag(name_A, value));
} else {
name = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId.Nm");
countryCode = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId.PstlAdr.Ctry");
addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId.PstlAdr.AdrLine");
String mtNameAddress = "";
if (addressLineCount > 0) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(bodyHdrParentElementName+ ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId");
} else if (StringUtil.isNotEmpty(countryCode)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndStructuredAddress(bodyHdrParentElementName+ ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId", false);
} else if (StringUtil.isNotEmpty(name)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(bodyHdrParentElementName+ ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId");
}
if (StringUtil.isEmpty(mtNameAddress)) return;//如果name和地址不存在,返回。
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_K, value));
}
}
} }
} }
package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import com.prowidesoftware.swift.model.mx.dic.CreditDebitCode;
import java.util.List;
//<Ntfctn><Ntry><NtryDtls><TxDtls><RltdPties><Dbtr><Pty><Id><OrgId><AnyBIC>
public class Field52aFor900Generate extends AbstractMx2MtTagsGenerate {
private static String name_A = "52A";
private static String name_D = "52D";
@Override
public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String cdtDbtInd = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.CdtDbtInd");
if (!CreditDebitCode.DBIT.value().equals(cdtDbtInd)) {
return;
}
String value = "";
String account = mx_to_mtAccount(bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.DbtrAcct");
String bicCode = mx_to_mtBICFI(bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt");
if (StringUtil.isNotEmpty(bicCode)) {
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + bicCode;
} else {
value = bicCode;
}
tags.add(new Tag(name_A, value));
} else {
String name = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId.Nm");
String countryCode = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId.PstlAdr.Ctry");
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId.PstlAdr.AdrLine");
String mtNameAddress = "";
if (addressLineCount > 0) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(bodyHdrParentElementName+ ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId");
} else if (StringUtil.isNotEmpty(countryCode)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndStructuredAddress(bodyHdrParentElementName+ ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId", false);
} else if (StringUtil.isNotEmpty(name)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(bodyHdrParentElementName+ ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdPties.Dbtr.Agt.FinInstnId");
}
if (StringUtil.isEmpty(mtNameAddress)) return;//如果name和地址不存在,返回。
if (StringUtil.isNotEmpty(account)) {
value = account + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_D, value));
}
}
}
package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import com.prowidesoftware.swift.model.mx.dic.CreditDebitCode;
import java.util.List;
//<Ntfctn><Ntry><NtryDtls><TxDtls><RltdPties><Dbtr><Pty><Id><OrgId><AnyBIC>
public class Field52aFor910Generate extends AbstractMx2MtTagsGenerate {
private static String name_A = "52A";
private static String name_D = "52D";
@Override
public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String cdtDbtInd = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.CdtDbtInd");
if (!CreditDebitCode.CRDT.value().equals(cdtDbtInd)) {
return;
}
String agtPath = bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt";
String bicCode = mx_to_mtBICFI(agtPath);
String mtClearSystemId = mx_to_mtClearingIdentifier(agtPath);
String value = "";
if (StringUtil.isNotEmpty(bicCode)) {
if (StringUtil.isNotEmpty(mtClearSystemId)) {
value = mtClearSystemId + Mx2MtConstants.NEW_LINE + bicCode;
} else {
value = bicCode;
}
tags.add(new Tag(name_A, value));
} else {
String name = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.Nm");
String countryCode = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.PstlAdr.Ctry");
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.DbtrAgt.FinInstnId.PstlAdr.AdrLine");
String mtNameAddress = "";
if (addressLineCount > 0) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(agtPath + ".FinInstnId");
} else if (StringUtil.isNotEmpty(countryCode)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndStructuredAddress(agtPath + ".FinInstnId", false);
} else if (StringUtil.isNotEmpty(name)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(agtPath + ".FinInstnId");
}
if (StringUtil.isEmpty(mtNameAddress)) return;//如果name和地址不存在,返回。
if (StringUtil.isNotEmpty(mtClearSystemId)) {
value = mtClearSystemId + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_D, value));
}
}
}
package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
//<Ntfctn><Ntry><NtryDtls><TxDtls><RltdPties><Dbtr><Pty><Id><OrgId><AnyBIC>
public class Field52aGenerate extends AbstractMx2MtTagsGenerate {
@Override
public void tagGenerate() throws SwiftException {
}
}
package com.brilliance.swift.mx2mt.mt900910.impl; package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.constants.Mx2MtConstants;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import com.prowidesoftware.swift.model.mx.dic.CreditDebitCode;
import java.util.List;
public class Field56aGenerate extends AbstractMx2MtTagsGenerate { public class Field56aGenerate extends AbstractMx2MtTagsGenerate {
private static String name_A = "56A";
private static String name_D = "56D";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String cdtDbtInd = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.CdtDbtInd");
if (!CreditDebitCode.CRDT.value().equals(cdtDbtInd)) {
return;
}
String agtPath = bodyHdrParentElementName + ".Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1";
String bicCode = mx_to_mtBICFI(agtPath);
String mtClearSystemId = mx_to_mtClearingIdentifier(agtPath);
String value = "";
if (StringUtil.isNotEmpty(bicCode)) {
if (StringUtil.isNotEmpty(mtClearSystemId)) {
value = mtClearSystemId + Mx2MtConstants.NEW_LINE + bicCode;
} else {
value = bicCode;
}
tags.add(new Tag(name_A, value));
} else {
String name = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.Nm");
String countryCode = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.PstlAdr.Ctry");
int addressLineCount = getXmlNodeCounts(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.RltdAgts.IntrmyAgt1.FinInstnId.PstlAdr.AdrLine");
String mtNameAddress = "";
if (addressLineCount > 0) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(agtPath + ".FinInstnId");
} else if (StringUtil.isNotEmpty(countryCode)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndStructuredAddress(agtPath + ".FinInstnId", false);
} else if (StringUtil.isNotEmpty(name)) {
mtNameAddress = mx_to_mtFinancialInstitutionNameAndUnstructuredAddress(agtPath + ".FinInstnId");
}
if (StringUtil.isEmpty(mtNameAddress)) return;//如果name和地址不存在,返回。
if (StringUtil.isNotEmpty(mtClearSystemId)) {
value = mtClearSystemId + Mx2MtConstants.NEW_LINE + mtNameAddress;
} else {
value = mtNameAddress;
}
tags.add(new Tag(name_D, value));
}
} }
} }
...@@ -2,12 +2,27 @@ package com.brilliance.swift.mx2mt.mt900910.impl; ...@@ -2,12 +2,27 @@ package com.brilliance.swift.mx2mt.mt900910.impl;
import com.brilliance.swift.exception.SwiftException; import com.brilliance.swift.exception.SwiftException;
import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate; import com.brilliance.swift.mx2mt.AbstractMx2MtTagsGenerate;
import com.brilliance.swift.util.StringUtil;
import com.prowidesoftware.swift.model.SwiftMessage;
import com.prowidesoftware.swift.model.Tag;
import java.util.List;
public class Field72Generate extends AbstractMx2MtTagsGenerate { public class Field72Generate extends AbstractMx2MtTagsGenerate {
private static String name = "72";
@Override @Override
public void tagGenerate() throws SwiftException { public void tagGenerate() throws SwiftException {
SwiftMessage swiftMessage = context.get(SwiftMessage.class);
List<Tag> tags = swiftMessage.getBlock4().getTags();
String additionalTxnInf = getXmlNodeValue(bodyHdrParentElementName, document, "Ntfctn.Ntry.NtryDtls.TxDtls.AddtlTxInf");
if (StringUtil.isNotEmpty(additionalTxnInf)) {
if (additionalTxnInf.length() > 210) {
additionalTxnInf = additionalTxnInf.substring(0, 209) + "+";
}
String value = StringUtil.getStringByEnter(additionalTxnInf, 35, 6);
tags.add(new Tag(name, value));
}
} }
} }
package com.brilliance.swift.util; package com.brilliance.swift.util;
import com.brilliance.swift.vo.common.ClearingSystemMemberCode; import com.brilliance.swift.vo.common.ClearingSystemMemberCode;
import com.brilliance.swift.vo.common.OrganisationIdentificationCode;
import com.brilliance.swift.vo.common.PersonIdentificationCode;
import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.DatatypeFactory;
...@@ -568,4 +570,34 @@ public class SwiftTransferUtil { ...@@ -568,4 +570,34 @@ public class SwiftTransferUtil {
} }
return code; return code;
} }
/**
* 根据mxcode取OrganisationIdentificationCode
*/
public static OrganisationIdentificationCode getOrganisationIdentificationCodeByCode(String mxCode) {
OrganisationIdentificationCode code = null;
OrganisationIdentificationCode[] values = OrganisationIdentificationCode.values();
for (OrganisationIdentificationCode tmpCode : values) {
if (tmpCode.value().equals(mxCode)) {
code = tmpCode;
break;
}
}
return code;
}
/**
* 根据mxcode取PersonIdentificationCode
*/
public static PersonIdentificationCode getPersonIdentificationCodeByCode(String mxCode) {
PersonIdentificationCode code = null;
PersonIdentificationCode[] values = PersonIdentificationCode.values();
for (PersonIdentificationCode tmpCode : values) {
if (tmpCode.value().equals(mxCode)) {
code = tmpCode;
break;
}
}
return code;
}
} }
package com.brilliance.swift.vo.common;
public enum OrganisationIdentificationCode {
BANK("BankPartyIdentification"),
CBID("CentralBankIdentificationNumber"),
CHID("ClearingIdentificationNumber"),
CINC("CertificateOfIncorporationNumber"),
COID("CountryIdentificationCode"),
CUST("CustomerNumber"),
DUNS("DataUniversalNumberingSystem"),
EMPL("EmployerIdentificationNumber"),
GS1G("GS1GLNIdentifier"),
SREN("SIREN"),
SRET("SIRET"),
TXID("TaxIdentificationNumber");
OrganisationIdentificationCode(String s) {}
public String value() {
return name();
}
}
package com.brilliance.swift.vo.common;
public enum PersonIdentificationCode {
ARNU("AlienRegistrationNumber"),
CCPT("PassportNumber"),
CUST("CustomerIdentificationNumber"),
DRLC("DriversLicenseNumber"),
EMPL("EmployeeIdentificationNumber"),
NIDN("NationalIdentityNumber"),
SOSE("SocialSecurityNumber"),
TELE("TelephoneNumber"),
TXID("TaxIdentificationNumber");
PersonIdentificationCode(String s) {}
public String value() {
return name();
}
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Envelope xmlns="urn:swift:xsd:envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:swift:xsd:envelope ../../../../Schemas/Translator_envelope.xsd">
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>SHWHQWER123</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>BJWHS12X</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>pacs8bizmsgidr02</BizMsgIdr>
<MsgDefIdr>camt.053.001.02</MsgDefIdr>
<BizSvc>swift.cbprplus.02</BizSvc>
<CreDt>2020-09-08T10:10:47+08:00</CreDt>
</AppHdr>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
<BkToCstmrStmt>
<GrpHdr>
<MsgId>00010013800002001234</MsgId>
<CreDtTm>2022-03-30T15:15:40.483+08:00</CreDtTm>
<AddtlInf>EODY</AddtlInf>
<MsgPgntn>
<PgNb>200</PgNb>
</MsgPgntn>
</GrpHdr>
<Stmt>
<Id>1123456789012317092013</Id>
<ElctrncSeqNb>178</ElctrncSeqNb>
<LglSeqNb>178</LglSeqNb>
<CreDtTm>2022-03-30T15:15:40.483+08:00</CreDtTm>
<FrToDt>
<FrDtTm>2022-03-30T15:15:40.483+08:00</FrDtTm>
<ToDtTm>2022-03-30T15:15:40.483+08:00</ToDtTm>
</FrToDt>
<RptgSrc>
<Cd>GPRD</Cd>
</RptgSrc>
<Acct>
<Id>
<IBAN>S15612345678012345</IBAN>
</Id>
<Ccy>USD</Ccy>
<Svcr>
<FinInstnId>
<BIC>BJWHS12X</BIC>
</FinInstnId>
</Svcr>
<Ownr>
<Id>
<OrgId>
<BICOrBEI>SHWHQWER123</BICOrBEI>
</OrgId>
</Id>
</Ownr>
</Acct>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>ITBD</Cd>
</CdOrPrtry>
</Tp>
<Amt Ccy="USD">120274.34</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Dt>
<Dt>2022-03-30+08:00</Dt>
</Dt>
</Bal>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>FWAV</Cd>
</CdOrPrtry>
</Tp>
<Amt Ccy="USD">123456.29</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Dt>
<Dt>2022-03-30+08:00</Dt>
</Dt>
</Bal>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>FWAV</Cd>
</CdOrPrtry>
</Tp>
<Amt Ccy="USD">119609.29</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Dt>
<Dt>2022-03-30+08:00</Dt>
</Dt>
</Bal>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>FWAV</Cd>
</CdOrPrtry>
</Tp>
<Amt Ccy="USD">120274.34</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Dt>
<Dt>2022-03-30+08:00</Dt>
</Dt>
</Bal>
<Ntry>
<NtryRef>FUNDTRANFER20220330</NtryRef>
<Amt Ccy="USD">393.17</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2022-03-30+08:00</Dt>
</BookgDt>
<ValDt>
<Dt>2022-03-30+08:00</Dt>
</ValDt>
<AcctSvcrRef>1309170100000390154395</AcctSvcrRef>
<BkTxCd>
<Prtry>
<Cd>FCHK</Cd>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<Refs>
<EndToEndId>S100000189-735</EndToEndId>
<TxId>1309170100000390154395</TxId>
</Refs>
<AmtDtls>
<InstdAmt>
<Amt Ccy="USD">393.17</Amt>
</InstdAmt>
<TxAmt>
<Amt Ccy="USD">393.17</Amt>
</TxAmt>
</AmtDtls>
<AddtlTxInf>PLACI LOVECNAMENSKIH WUHAN</AddtlTxInf>
</TxDtls>
</NtryDtls>
<AddtlNtryInf>CHINESE BEIJING</AddtlNtryInf>
</Ntry>
<Ntry>
<NtryRef>FUNDTRANFER20220331</NtryRef>
<Amt Ccy="USD">445</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2022-03-30+08:00</Dt>
</BookgDt>
<ValDt>
<Dt>2022-03-30+08:00</Dt>
</ValDt>
<AcctSvcrRef>1309170100000390154395</AcctSvcrRef>
<BkTxCd>
<Prtry>
<Cd>FCHK</Cd>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<Refs>
<EndToEndId>S100000189-735</EndToEndId>
<TxId>1309170100000390154395</TxId>
</Refs>
<AmtDtls>
<InstdAmt>
<Amt Ccy="USD">393.17</Amt>
</InstdAmt>
<TxAmt>
<Amt Ccy="USD">393.17</Amt>
</TxAmt>
</AmtDtls>
<AddtlTxInf>PLACI LOVECNAMENSKIH STORITEV</AddtlTxInf>
</TxDtls>
</NtryDtls>
<AddtlNtryInf></AddtlNtryInf>
</Ntry>
<AddtlStmtInf>HELLO WORLD</AddtlStmtInf>
</Stmt>
</BkToCstmrStmt>
</Document>
</Envelope>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Envelope xmlns="urn:swift:xsd:envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:swift:xsd:envelope ../../../../Schemas/Translator_envelope.xsd">
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>SHWHQWER123</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>BJWHS12X</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>pacs8bizmsgidr02</BizMsgIdr>
<MsgDefIdr>camt.053.001.02</MsgDefIdr>
<BizSvc>swift.cbprplus.02</BizSvc>
<CreDt>2020-09-08T10:10:47+08:00</CreDt>
</AppHdr>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
<BkToCstmrStmt>
<GrpHdr>
<MsgId>00010013800002001234</MsgId>
<CreDtTm>2022-03-30T15:15:40.483+08:00</CreDtTm>
<AddtlInf>EODY</AddtlInf>
<MsgPgntn>
<PgNb>200</PgNb>
</MsgPgntn>
</GrpHdr>
<Stmt>
<Id>1123456789012317092013</Id>
<ElctrncSeqNb>178</ElctrncSeqNb>
<LglSeqNb>178</LglSeqNb>
<CreDtTm>2022-03-30T15:15:40.483+08:00</CreDtTm>
<FrToDt>
<FrDtTm>2022-03-30T15:15:40.483+08:00</FrDtTm>
<ToDtTm>2022-03-30T15:15:40.483+08:00</ToDtTm>
</FrToDt>
<RptgSrc>
<Cd>GPRD</Cd>
</RptgSrc>
<Acct>
<Id>
<IBAN>S15612345678012345</IBAN>
</Id>
<Ccy>USD</Ccy>
<Svcr>
<FinInstnId>
<BIC>BJWHS12X</BIC>
</FinInstnId>
</Svcr>
<Ownr>
<Id>
<OrgId>
<BICOrBEI>SHWHQWER123</BICOrBEI>
</OrgId>
</Id>
</Ownr>
</Acct>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>ITBD</Cd>
</CdOrPrtry>
</Tp>
<Amt Ccy="USD">120274.34</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Dt>
<Dt>2022-03-30+08:00</Dt>
</Dt>
</Bal>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>ITBD</Cd>
</CdOrPrtry>
</Tp>
<Amt Ccy="USD">123456.29</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Dt>
<Dt>2022-03-30+08:00</Dt>
</Dt>
</Bal>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>CLAVS</Cd>
</CdOrPrtry>
</Tp>
<Amt Ccy="USD">119609.29</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Dt>
<Dt>2022-03-30+08:00</Dt>
</Dt>
</Bal>
<Ntry>
<NtryRef>FUNDTRANFER20220330</NtryRef>
<Amt Ccy="USD">393.17</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2022-03-30+08:00</Dt>
</BookgDt>
<ValDt>
<Dt>2022-03-30+08:00</Dt>
</ValDt>
<AcctSvcrRef>1309170100000390154395</AcctSvcrRef>
<BkTxCd>
<Prtry>
<Cd>FCHK</Cd>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<Refs>
<EndToEndId>S100000189-735</EndToEndId>
<TxId>1309170100000390154395</TxId>
</Refs>
<AmtDtls>
<InstdAmt>
<Amt Ccy="USD">393.17</Amt>
</InstdAmt>
<TxAmt>
<Amt Ccy="USD">393.17</Amt>
</TxAmt>
</AmtDtls>
<AddtlTxInf>PLACI LOVECNAMENSKIH WUHAN</AddtlTxInf>
</TxDtls>
</NtryDtls>
</Ntry>
<Ntry>
<NtryRef>FUNDTRANFER20220331</NtryRef>
<Amt Ccy="USD">445</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BookgDt>
<Dt>2022-03-30+08:00</Dt>
</BookgDt>
<ValDt>
<Dt>2022-03-30+08:00</Dt>
</ValDt>
<AcctSvcrRef>1309170100000390154395</AcctSvcrRef>
<BkTxCd>
<Prtry>
<Cd>FCHK</Cd>
</Prtry>
</BkTxCd>
<NtryDtls>
<TxDtls>
<Refs>
<EndToEndId>S100000189-735</EndToEndId>
<TxId>1309170100000390154395</TxId>
</Refs>
<AmtDtls>
<InstdAmt>
<Amt Ccy="USD">393.17</Amt>
</InstdAmt>
<TxAmt>
<Amt Ccy="USD">393.17</Amt>
</TxAmt>
</AmtDtls>
<AddtlTxInf>PLACI LOVECNAMENSKIH STORITEV</AddtlTxInf>
</TxDtls>
</NtryDtls>
</Ntry>
</Stmt>
</BkToCstmrStmt>
</Document>
</Envelope>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Envelope xmlns="urn:swift:xsd:envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:swift:xsd:envelope ../../../../Schemas/Translator_envelope.xsd">
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>DEUTDEFF</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>DEUTNL2A</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>pacs8bizmsgidr02</BizMsgIdr>
<MsgDefIdr>camt.054.001.02</MsgDefIdr>
<BizSvc>swift.cbprplus.02</BizSvc>
<CreDt>2020-09-08T10:10:47+08:00</CreDt>
</AppHdr>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02">
<BkToCstmrDbtCdtNtfctn>
<GrpHdr>
<MsgId>FRDA000003421606</MsgId>
<CreDtTm>2022-03-30T15:15:40.483+08:00</CreDtTm>
<AddtlInf>BatchAccounting</AddtlInf>
</GrpHdr>
<Ntfctn>
<Id>AC730486180000000002</Id>
<ElctrncSeqNb>1234</ElctrncSeqNb>
<Acct>
<Id>
<IBAN>S15612345678012345</IBAN>
</Id>
<Svcr>
<FinInstnId>
<BIC>DEUTNL2A</BIC>
</FinInstnId>
</Svcr>
<Ownr>
<Id>
<OrgId>
<BICOrBEI>DEUTDEFF</BICOrBEI>
</OrgId>
</Id>
</Ownr>
</Acct>
<Ntry>
<ValDt>
<Dt>2022-03-30+08:00</Dt>
</ValDt>
<Amt Ccy="EUR">126</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts>BOOK</Sts>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RDDT</Cd>
<SubFmlyCd>ESDD</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Issr>SWIFT</Issr>
</Prtry>
</BkTxCd>
<AmtDtls>
<InstdAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</InstdAmt>
<TxAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</TxAmt>
<CntrValAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</CntrValAmt>
</AmtDtls>
<Chrgs>
<TtlChrgsAndTaxAmt Ccy="AAA">0</TtlChrgsAndTaxAmt>
<Amt Ccy="AAA">0</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Tp>
<Cd>COMM</Cd>
</Tp>
<Rate>0</Rate>
<Br>SLEV</Br>
<Pty>
<FinInstnId>
<BIC>AAAAAA20</BIC>
<ClrSysMmbId>
<ClrSysId>
<Cd>a</Cd>
</ClrSysId>
<MmbId>a</MmbId>
</ClrSysMmbId>
<Nm>a</Nm>
<PstlAdr>
<AdrTp>MLTO</AdrTp>
<Dept>a</Dept>
<SubDept>a</SubDept>
<StrtNm>a</StrtNm>
<BldgNb>a</BldgNb>
<PstCd>a</PstCd>
<TwnNm>a</TwnNm>
<CtrySubDvsn>a</CtrySubDvsn>
<Ctry>AA</Ctry>
<AdrLine>a</AdrLine>
</PstlAdr>
<Othr>
<Id>a</Id>
<SchmeNm>
<Cd>a</Cd>
</SchmeNm>
<Issr>a</Issr>
</Othr>
</FinInstnId>
<BrnchId>
<Id>a</Id>
<Nm>a</Nm>
<PstlAdr>
<AdrTp>ADDR</AdrTp>
<Dept>a</Dept>
<SubDept>a</SubDept>
<StrtNm>a</StrtNm>
<BldgNb>a</BldgNb>
<PstCd>a</PstCd>
<TwnNm>a</TwnNm>
<CtrySubDvsn>a</CtrySubDvsn>
<Ctry>AA</Ctry>
<AdrLine>a</AdrLine>
</PstlAdr>
</BrnchId>
</Pty>
<Tax>
<Id>a</Id>
<Rate>0</Rate>
<Amt Ccy="AAA">0</Amt>
</Tax>
</Chrgs>
<NtryDtls>
<Btch>
<MsgId>FG00000000000y88sd</MsgId>
<NbOfTxs>1</NbOfTxs>
</Btch>
<TxDtls>
<Refs>
<AcctSvcrRef>FRDA00000343</AcctSvcrRef>
<EndToEndId>E2E1201</EndToEndId>
<TxId>FRDA00003343</TxId>
<MndtId>MANFRST1COR1201003</MndtId>
<UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR>
</Refs>
<AmtDtls/>
<RltdPties>
<Dbtr>
<Nm>Creditor 1</Nm>
<PstlAdr>
<Ctry>PT</Ctry>
<AdrLine>TEST1</AdrLine>
<AdrLine>TEST2</AdrLine>
<AdrLine>TEST3</AdrLine>
<AdrLine>TEST4</AdrLine>
</PstlAdr>
<CtryOfRes>PT</CtryOfRes>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>FR7630588000010050000143176</IBAN>
</Id>
</DbtrAcct>
</RltdPties>
<RltdAgts>
<DbtrAgt>
<FinInstnId>
<BIC>QWERASDF</BIC>
<ClrSysMmbId>
<mmbId>123456</mmbId>
</ClrSysMmbId>
</FinInstnId>
</DbtrAgt>
<IntrmyAgt1>
<FinInstnId>
<Nm>81939316</Nm>
<PstlAdr>
<AdrLine>ADDRESS 1</AdrLine>
<AdrLine>ADDRESS 2</AdrLine>
<AdrLine>ADDRESS 3</AdrLine>
<AdrLine>ADDRESS 4</AdrLine>
</PstlAdr>
</FinInstnId>
</IntrmyAgt1>
</RltdAgts>
<RltdDts>
<AccptncDtTm>2016-12-06T04:01:10</AccptncDtTm>
<IntrBkSttlmDt>2016-12-07</IntrBkSttlmDt>
</RltdDts>
<AddtlTxInf>ENRICHED|TRUE SETT_METHOD|SEPA IAT_IND|FALSE DOMESTIC_IND|FALSE PRIORITY_IND|FALSE</AddtlTxInf>
</TxDtls>
</NtryDtls>
<AddtlNtryInf>ENRICHED|TRUE SETT_METHOD|SEPA IAT_IND|FALSE DOMESTIC_IND|FALSE PRIORITY_IND|FALSE</AddtlNtryInf>
</Ntry>
</Ntfctn>
</BkToCstmrDbtCdtNtfctn>
</Document>
</Envelope>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Envelope xmlns="urn:swift:xsd:envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:swift:xsd:envelope ../../../../Schemas/Translator_envelope.xsd">
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>DEUTDEFF</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>DEUTNL2A</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>pacs8bizmsgidr02</BizMsgIdr>
<MsgDefIdr>camt.054.001.02</MsgDefIdr>
<BizSvc>swift.cbprplus.02</BizSvc>
<CreDt>2020-09-08T10:10:47+08:00</CreDt>
</AppHdr>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02">
<BkToCstmrDbtCdtNtfctn>
<GrpHdr>
<MsgId>FRDA000003421606</MsgId>
<CreDtTm>2022-03-30T15:15:40.483+08:00</CreDtTm>
<AddtlInf>BatchAccounting</AddtlInf>
</GrpHdr>
<Ntfctn>
<Id>AC730486180000000002</Id>
<ElctrncSeqNb>1234</ElctrncSeqNb>
<Acct>
<Id>
<IBAN>S15612345678012345</IBAN>
</Id>
<Svcr>
<FinInstnId>
<BIC>DEUTNL2A</BIC>
</FinInstnId>
</Svcr>
<Ownr>
<Id>
<OrgId>
<BICOrBEI>DEUTDEFF</BICOrBEI>
</OrgId>
</Id>
</Ownr>
</Acct>
<Ntry>
<ValDt>
<Dt>2022-03-30+08:00</Dt>
</ValDt>
<Amt Ccy="EUR">126</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Sts>BOOK</Sts>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RDDT</Cd>
<SubFmlyCd>ESDD</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Issr>SWIFT</Issr>
</Prtry>
</BkTxCd>
<AmtDtls>
<InstdAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</InstdAmt>
<TxAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</TxAmt>
<CntrValAmt>
<Amt Ccy="EUR">126</Amt>
<CcyXchg/>
</CntrValAmt>
</AmtDtls>
<Chrgs>
<TtlChrgsAndTaxAmt Ccy="AAA">0</TtlChrgsAndTaxAmt>
<Amt Ccy="AAA">0</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<Tp>
<Cd>COMM</Cd>
</Tp>
<Rate>0</Rate>
<Br>SLEV</Br>
<Pty>
<FinInstnId>
<BIC>AAAAAA20</BIC>
<ClrSysMmbId>
<ClrSysId>
<Cd>a</Cd>
</ClrSysId>
<MmbId>a</MmbId>
</ClrSysMmbId>
<Nm>a</Nm>
<PstlAdr>
<AdrTp>MLTO</AdrTp>
<Dept>a</Dept>
<SubDept>a</SubDept>
<StrtNm>a</StrtNm>
<BldgNb>a</BldgNb>
<PstCd>a</PstCd>
<TwnNm>a</TwnNm>
<CtrySubDvsn>a</CtrySubDvsn>
<Ctry>AA</Ctry>
<AdrLine>a</AdrLine>
</PstlAdr>
<Othr>
<Id>a</Id>
<SchmeNm>
<Cd>a</Cd>
</SchmeNm>
<Issr>a</Issr>
</Othr>
</FinInstnId>
<BrnchId>
<Id>a</Id>
<Nm>a</Nm>
<PstlAdr>
<AdrTp>ADDR</AdrTp>
<Dept>a</Dept>
<SubDept>a</SubDept>
<StrtNm>a</StrtNm>
<BldgNb>a</BldgNb>
<PstCd>a</PstCd>
<TwnNm>a</TwnNm>
<CtrySubDvsn>a</CtrySubDvsn>
<Ctry>AA</Ctry>
<AdrLine>a</AdrLine>
</PstlAdr>
</BrnchId>
</Pty>
<Tax>
<Id>a</Id>
<Rate>0</Rate>
<Amt Ccy="AAA">0</Amt>
</Tax>
</Chrgs>
<NtryDtls>
<Btch>
<MsgId>FG00000000000y88sd</MsgId>
<NbOfTxs>1</NbOfTxs>
</Btch>
<TxDtls>
<Refs>
<AcctSvcrRef>FRDA00000343</AcctSvcrRef>
<EndToEndId>E2E1201</EndToEndId>
<TxId>FRDA00003343</TxId>
<MndtId>MANFRST1COR1201003</MndtId>
<UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR>
</Refs>
<AmtDtls/>
<RltdPties>
<Dbtr>
<Nm>Creditor 1</Nm>
<PstlAdr>
<Ctry>PT</Ctry>
<AdrLine>TEST1</AdrLine>
<AdrLine>TEST2</AdrLine>
<AdrLine>TEST3</AdrLine>
<AdrLine>TEST4</AdrLine>
</PstlAdr>
<CtryOfRes>PT</CtryOfRes>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>FR7630588000010050000143176</IBAN>
</Id>
</DbtrAcct>
</RltdPties>
<RltdAgts>
<IntrmyAgt1>
<FinInstnId>
<Nm>81939316</Nm>
<PstlAdr>
<AdrLine>ADDRESS 1</AdrLine>
<AdrLine>ADDRESS 2</AdrLine>
<AdrLine>ADDRESS 3</AdrLine>
<AdrLine>ADDRESS 4</AdrLine>
</PstlAdr>
</FinInstnId>
</IntrmyAgt1>
</RltdAgts>
<RltdDts>
<AccptncDtTm>2016-12-06T04:01:10</AccptncDtTm>
<IntrBkSttlmDt>2016-12-07</IntrBkSttlmDt>
</RltdDts>
<AddtlTxInf>ENRICHED|TRUE SETT_METHOD|SEPA IAT_IND|FALSE DOMESTIC_IND|FALSE PRIORITY_IND|FALSEENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METHOD|SEPA IAT_EWEQDSDSDGFGFTYTY</AddtlTxInf>
</TxDtls>
</NtryDtls>
<AddtlNtryInf>ENRICHED|TRUE SETT_METHOD|SEPA IAT_IND|FALSE DOMESTIC_IND|FALSE PRIORITY_IND|FALSE</AddtlNtryInf>
</Ntry>
</Ntfctn>
</BkToCstmrDbtCdtNtfctn>
</Document>
</Envelope>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8"?>
<RequestPayload> <!--
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02"> THE MESSAGE WILL WORK “AS IS” IN THE READINESS PORTAL. IT IS ESSENTIAL THAT USERS REMOVE THE ENVELOPE AND REPLACE IT WITH THEIR OWN TRANSPORT HEADER (FOR EXAMPLE FOR ALLIANCE ACCESS YOU WOULD USE THE XML V2 HEADERS).
<Fr> =========================================================================================================================================================================================
<FIId> Legal Disclaimer:
<FinInstnId> =================
<BICFI>DEUTDEFF</BICFI> SWIFT © 2020. All rights reserved.
</FinInstnId> This publication contains SWIFT or third-party confidential information. Do not disclose this publication outside your organisation without SWIFT’s prior written consent.
</FIId> The use of this document is governed by the legal notices appearing at the end of this document. By using this document, you will be deemed to have accepted those legal notices.
</Fr> =================================================================================================================================================================================
<To> Use Case c.54.1.1 Agent A Unicredit provides a debit notification to the debtor Flexo Merchant Services
<FIId> ========================================================================================================================
<FinInstnId> Change Log
<BICFI>DEUTNL2A</BICFI> 2020-10-16 - Original version
</FinInstnId> =============================
</FIId> -->
</To> <Envelope xmlns="urn:swift:xsd:envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:swift:xsd:envelope ../../../../March21Schemas/Translator_envelope.xsd">
<BizMsgIdr>FRDA000003421606</BizMsgIdr> <AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<MsgDefIdr>camt.054.001.08</MsgDefIdr> <Fr>
<CreDt>2022-04-29T16:06:51.839+08:00</CreDt> <FIId>
<Prty>NORM</Prty> <FinInstnId>
</AppHdr> <BICFI>BKAUATWW</BICFI>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.08"> </FinInstnId>
<BkToCstmrDbtCdtNtfctn> </FIId>
<GrpHdr> </Fr>
<MsgId>FRDA000003421606</MsgId> <To>
<CreDtTm>2022-04-29T16:06:51.839+08:00</CreDtTm> <FIId>
<AddtlInf></AddtlInf> <FinInstnId>
</GrpHdr> <BICFI>FEXMIE2D</BICFI>
<Ntfctn> </FinInstnId>
<Acct> </FIId>
<Id> </To>
<Othr> <BizMsgIdr>cmt054bizmsgidr-001</BizMsgIdr>
<Id>S15612345678012345</Id> <MsgDefIdr>camt.054.001.08</MsgDefIdr>
</Othr> <BizSvc>swift.cbprplus.02</BizSvc>
</Id> <CreDt>2020-09-08T10:00:47+01:00</CreDt>
</Acct> </AppHdr>
<Ntry> <Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.08">
<Amt Ccy="EUR">126</Amt> <BkToCstmrDbtCdtNtfctn>
<CdtDbtInd>CRDT</CdtDbtInd> <GrpHdr>
<ValDt> <MsgId>cmt054bizmsgidr-001</MsgId>
<Dt>2022-03-30+08:00</Dt> <CreDtTm>2020-09-08T10:00:47+01:00</CreDtTm>
</ValDt> </GrpHdr>
<NtryDtls> <Ntfctn>
<TxDtls> <Id>cmt054NtfctnId-002</Id>
<Refs> <Acct>
<EndToEndId>E2E1201</EndToEndId> <Id>
<UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR> <Othr>
</Refs> <Id>SML4564887</Id>
<RltdPties> </Othr>
<Dbtr> </Id>
<Pty> <Ccy>EUR</Ccy>
<Nm>Creditor 1</Nm> </Acct>
<PstlAdr> <Ntry>
<AdrLine>TEST1</AdrLine> <NtryRef>cmt054NtryRef002</NtryRef>
<AdrLine>TEST2</AdrLine> <Amt Ccy="EUR">300000</Amt>
<AdrLine>TEST3</AdrLine> <CdtDbtInd>CRDT</CdtDbtInd>
</PstlAdr> <Sts>
</Pty> <Cd>STCD</Cd>
</Dbtr> </Sts>
</RltdPties> <BkTxCd>
<RltdAgts> <Domn>
<IntrmyAgt1> <Cd>PMNT</Cd>
<FinInstnId> <Fmly>
<ClrSysMmbId> <Cd>ICDT</Cd>
<ClrSysId> <SubFmlyCd>XBCT</SubFmlyCd>
<Cd>ATBLZ</Cd> </Fmly>
</ClrSysId> </Domn>
<MmbId>FR7630588000010050000143176</MmbId> </BkTxCd>
</ClrSysMmbId> <NtryDtls>
<Nm>81939316</Nm> <TxDtls>
<PstlAdr> <Refs>
<AdrLine>ADDRESS 1</AdrLine> <InstrId>cmt054bizmsgidr-001</InstrId>
<AdrLine>ADDRESS 2</AdrLine> <EndToEndId>pacs008EndToEndId-001</EndToEndId>
<AdrLine>ADDRESS 3</AdrLine> <UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR>
</PstlAdr> </Refs>
</FinInstnId> <Amt Ccy="EUR">300000</Amt>
</IntrmyAgt1> <CdtDbtInd>CRDT</CdtDbtInd>
</RltdAgts> <RmtInf>
<AddtlTxInf>ENRICHED|TRUE SETT_METHOD|SEPA IAT_IND|FALSE DOMESTIC_IND|FALSE PRIORITY_IND|FALSE</AddtlTxInf> <Ustrd>Inv: AEG-69874/958</Ustrd>
</TxDtls> </RmtInf>
</NtryDtls> <RltdDts>
</Ntry> <IntrBkSttlmDt>2020-09-08</IntrBkSttlmDt>
</Ntfctn> </RltdDts>
</BkToCstmrDbtCdtNtfctn> <RltdPties>
</Document> <Dbtr>
</RequestPayload> <Pty>
\ No newline at end of file <Id>
<OrgId>
<AnyBIC>QWERASDF</AnyBIC>
</OrgId>
</Id>
</Pty>
<Agt>
<FinInstnId>
<BICFI>CITIBHNK</BICFI>
</FinInstnId>
</Agt>
</Dbtr>
<DbtrAcct>
<Id>
<Othr>
<Id>81939316</Id>
</Othr>
</Id>
</DbtrAcct>
</RltdPties>
<RltdAgts>
<DbtrAgt>
<FinInstnId>
<BICFI>BMRIIDAE</BICFI>
</FinInstnId>
</DbtrAgt>
<IntrmyAgt1>
<FinInstnId>
<BICFI>BSIFVCBK</BICFI>
</FinInstnId>
</IntrmyAgt1>
</RltdAgts>
<AddtlTxInf>chengzhuoshen</AddtlTxInf>
</TxDtls>
</NtryDtls>
</Ntry>
</Ntfctn>
</BkToCstmrDbtCdtNtfctn>
</Document>
</Envelope>
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8"?>
<RequestPayload> <!--
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02"> THE MESSAGE WILL WORK “AS IS” IN THE READINESS PORTAL. IT IS ESSENTIAL THAT USERS REMOVE THE ENVELOPE AND REPLACE IT WITH THEIR OWN TRANSPORT HEADER (FOR EXAMPLE FOR ALLIANCE ACCESS YOU WOULD USE THE XML V2 HEADERS).
<Fr> =========================================================================================================================================================================================
<FIId> Legal Disclaimer:
<FinInstnId> =================
<BICFI>DEUTDEFF</BICFI> SWIFT © 2020. All rights reserved.
</FinInstnId> This publication contains SWIFT or third-party confidential information. Do not disclose this publication outside your organisation without SWIFT’s prior written consent.
</FIId> The use of this document is governed by the legal notices appearing at the end of this document. By using this document, you will be deemed to have accepted those legal notices.
</Fr> =================================================================================================================================================================================
<To> Use Case c.54.1.1 Agent A Unicredit provides a debit notification to the debtor Flexo Merchant Services
<FIId> ========================================================================================================================
<FinInstnId> Change Log
<BICFI>DEUTNL2A</BICFI> 2020-10-16 - Original version
</FinInstnId> =============================
</FIId> -->
</To> <Envelope xmlns="urn:swift:xsd:envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:swift:xsd:envelope ../../../../March21Schemas/Translator_envelope.xsd">
<BizMsgIdr>FRDA000003421606</BizMsgIdr> <AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<MsgDefIdr>camt.054.001.08</MsgDefIdr> <Fr>
<CreDt>2022-04-29T16:06:27.410+08:00</CreDt> <FIId>
<Prty>NORM</Prty> <FinInstnId>
</AppHdr> <BICFI>BKAUATWW</BICFI>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.08"> </FinInstnId>
<BkToCstmrDbtCdtNtfctn> </FIId>
<GrpHdr> </Fr>
<MsgId>FRDA000003421606</MsgId> <To>
<CreDtTm>2022-04-29T16:06:27.410+08:00</CreDtTm> <FIId>
<AddtlInf></AddtlInf> <FinInstnId>
</GrpHdr> <BICFI>FEXMIE2D</BICFI>
<Ntfctn> </FinInstnId>
<Acct> </FIId>
<Id> </To>
<Othr> <BizMsgIdr>cmt054bizmsgidr-001</BizMsgIdr>
<Id>S15612345678012345</Id> <MsgDefIdr>camt.054.001.08</MsgDefIdr>
</Othr> <BizSvc>swift.cbprplus.02</BizSvc>
</Id> <CreDt>2020-09-08T10:00:47+01:00</CreDt>
</Acct> </AppHdr>
<Ntry> <Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.08">
<Amt Ccy="EUR">126</Amt> <BkToCstmrDbtCdtNtfctn>
<CdtDbtInd>DBIT</CdtDbtInd> <GrpHdr>
<ValDt> <MsgId>cmt054bizmsgidr-001</MsgId>
<Dt>2022-03-30+08:00</Dt> <CreDtTm>2020-09-08T10:00:47+01:00</CreDtTm>
</ValDt> </GrpHdr>
<NtryDtls> <Ntfctn>
<TxDtls> <Id>cmt054NtfctnId-002</Id>
<Refs> <Acct>
<EndToEndId>E2E1201</EndToEndId> <Id>
<UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR> <Othr>
</Refs> <Id>SML4564887</Id>
<RltdPties> </Othr>
<Dbtr> </Id>
<Pty> <Ccy>EUR</Ccy>
<Nm>Creditor 1</Nm> </Acct>
<PstlAdr> <Ntry>
<AdrLine>TEST1</AdrLine> <NtryRef>cmt054NtryRef002</NtryRef>
<AdrLine>TEST2</AdrLine> <Amt Ccy="EUR">300000</Amt>
<AdrLine>TEST3</AdrLine> <CdtDbtInd>DBIT</CdtDbtInd>
</PstlAdr> <Sts>
</Pty> <Cd>STCD</Cd>
</Dbtr> </Sts>
</RltdPties> <BkTxCd>
<AddtlTxInf>ENRICHED|TRUE SETT_METHOD|SEPA IAT_IND|FALSE DOMESTIC_IND|FALSE PRIORITY_IND|FALSEENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METHOD|SEPA IAT_ENRICHED|TRUE SETT_METH</AddtlTxInf> <Domn>
</TxDtls> <Cd>PMNT</Cd>
</NtryDtls> <Fmly>
</Ntry> <Cd>ICDT</Cd>
</Ntfctn> <SubFmlyCd>XBCT</SubFmlyCd>
</BkToCstmrDbtCdtNtfctn> </Fmly>
</Document> </Domn>
</RequestPayload> </BkTxCd>
\ No newline at end of file <NtryDtls>
<TxDtls>
<Refs>
<InstrId>cmt054bizmsgidr-001</InstrId>
<EndToEndId>pacs008EndToEndId-001</EndToEndId>
<UETR>8a562c67-ca16-48ba-b074-65581be6f001</UETR>
</Refs>
<Amt Ccy="EUR">300000</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<RmtInf>
<Ustrd>Inv: AEG-69874/958</Ustrd>
</RmtInf>
<RltdDts>
<IntrBkSttlmDt>2020-09-08</IntrBkSttlmDt>
</RltdDts>
<RltdPties>
<Dbtr>
<Pty>
<Id>
<OrgId>
<AnyBIC>QWERASDF</AnyBIC>
</OrgId>
</Id>
</Pty>
<Agt>
<FinInstnId>
<BICFI>CITIBHNK</BICFI>
</FinInstnId>
</Agt>
</Dbtr>
<DbtrAcct>
<Id>
<Othr>
<Id>81939316</Id>
</Othr>
</Id>
</DbtrAcct>
</RltdPties>
<AddtlTxInf>chengzhuoshen</AddtlTxInf>
</TxDtls>
</NtryDtls>
</Ntry>
</Ntfctn>
</BkToCstmrDbtCdtNtfctn>
</Document>
</Envelope>
package com.brilliance.mx2mt.mt900; package com.brilliance.mx2mt.mt900;
import com.brilliance.swift.mx2mt.Mx2MtCreatorManager; import com.brilliance.swift.mx2mt.Mx2MtCreatorManager;
import org.apache.commons.io.FileUtils;
import java.io.File; import java.io.File;
public class TestMx2MtFor900 { public class TestMx2MtFor900 {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
File file = new File(System.getProperty("user.dir")+"\\swiftCore\\src\\main\\resources\\swiftXml\\MxCamt05400108_DEBIT.xml");
String xmlStr = FileUtils.readFileToString(file);
String mt900 = new Mx2MtCreatorManager().mx2Mt(xmlStr, null, null);
System.out.println(mt900);
} }
} }
package com.brilliance.mx2mt.mt910; package com.brilliance.mx2mt.mt910;
import com.brilliance.swift.mx2mt.Mx2MtCreatorManager; import com.brilliance.swift.mx2mt.Mx2MtCreatorManager;
import org.apache.commons.io.FileUtils;
import java.io.File; import java.io.File;
public class TestMx2MtFor910 { public class TestMx2MtFor910 {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
File file = new File(System.getProperty("user.dir")+"\\swiftCore\\src\\main\\resources\\swiftXml\\MxCamt05400108_CREDIT.xml");
String xmlStr = FileUtils.readFileToString(file);
String mt910 = new Mx2MtCreatorManager().mx2Mt(xmlStr, null, null);
System.out.println(mt910);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment