org.kapott.hbci.GV.parsers.ParsePain00100103 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hbci4j-adorsys Show documentation
Show all versions of hbci4j-adorsys Show documentation
HBCI4j - Home Banking Computer Interface for Java - Clone from https://github.com/hbci4j/hbci4java
package org.kapott.hbci.GV.parsers;
import org.kapott.hbci.GV.SepaUtil;
import org.kapott.hbci.sepa.jaxb.pain_001_001_03.*;
import javax.xml.bind.JAXB;
import javax.xml.datatype.XMLGregorianCalendar;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
/**
* Parser-Implementierung fuer Pain 001.001.03.
*/
public class ParsePain00100103 extends AbstractSepaParser>> {
/**
* @see org.kapott.hbci.GV.parsers.ISEPAParser#parse(InputStream, Object)
*/
public void parse(InputStream xml, List> sepaResults) {
Document doc = JAXB.unmarshal(xml, Document.class);
CustomerCreditTransferInitiationV03 pain = doc.getCstmrCdtTrfInitn();
if (pain == null)
return;
//Payment Information
List pmtInfs = pain.getPmtInf();
for (PaymentInstructionInformationSCT pmtInf : pmtInfs) {
//Payment Information - Credit Transfer Transaction Information
List txList = pmtInf.getCdtTrfTxInf();
for (CreditTransferTransactionInformationSCT tx : txList) {
HashMap prop = new HashMap<>();
put(prop, Names.PMTINFID, pmtInf.getPmtInfId());
put(prop, Names.SRC_NAME, pain.getGrpHdr().getInitgPty().getNm());
put(prop, Names.SRC_IBAN, pmtInf.getDbtrAcct().getId().getIBAN());
put(prop, Names.SRC_BIC, pmtInf.getDbtrAgt().getFinInstnId().getBIC());
put(prop, Names.DST_NAME, tx.getCdtr().getNm());
put(prop, Names.DST_IBAN, tx.getCdtrAcct().getId().getIBAN());
try {
put(prop, Names.DST_BIC, tx.getCdtrAgt().getFinInstnId().getBIC());
} catch (Exception e) {
// BIC darf fehlen
}
ActiveOrHistoricCurrencyAndAmountSEPA amt = tx.getAmt().getInstdAmt();
put(prop, Names.VALUE, SepaUtil.format(amt.getValue()));
put(prop, Names.CURR, amt.getCcy().value());
if (tx.getRmtInf() != null) {
put(prop, Names.USAGE, tx.getRmtInf().getUstrd());
}
PurposeSEPA purp = tx.getPurp();
if (purp != null)
put(prop, Names.PURPOSECODE, purp.getCd());
XMLGregorianCalendar date = pmtInf.getReqdExctnDt();
if (date != null) {
put(prop, Names.DATE, SepaUtil.format(date, null));
}
PaymentIdentificationSEPA pmtId = tx.getPmtId();
if (pmtId != null) {
put(prop, Names.ENDTOENDID, pmtId.getEndToEndId());
}
sepaResults.add(prop);
}
}
}
}