From e36576e4c6f1ba963da51b06f70c757deb57a731 Mon Sep 17 00:00:00 2001 From: dankito Date: Tue, 8 Sep 2020 16:26:41 +0200 Subject: [PATCH] Added bankCodeForOnlineBanking to make clear that bank code for online banking may differs from bank's bank code --- .../implementierte/IdentifikationsSegment.kt | 2 +- .../segmente/implementierte/Signaturkopf.kt | 2 +- .../implementierte/Verschluesselungskopf.kt | 2 +- .../dankito/banking/fints/model/BankData.kt | 21 ++++++++++++------- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/IdentifikationsSegment.kt b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/IdentifikationsSegment.kt index 1d6677bc..3575c3ee 100644 --- a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/IdentifikationsSegment.kt +++ b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/IdentifikationsSegment.kt @@ -17,7 +17,7 @@ open class IdentifikationsSegment( ) : Segment(listOf( Segmentkopf(CustomerSegmentId.Identification, 2, segmentNumber), - Kreditinstitutskennung(baseData.bank.countryCode, baseData.bank.bankCode), + Kreditinstitutskennung(baseData.bank.countryCode, baseData.bank.bankCodeForOnlineBanking), KundenID(baseData.bank.customerId), KundensystemID(baseData.bank.customerSystemId), KundensystemStatus(baseData.bank.customerSystemStatus, Existenzstatus.Mandatory) diff --git a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Signaturkopf.kt b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Signaturkopf.kt index a4b9ec89..61718fa3 100644 --- a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Signaturkopf.kt +++ b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Signaturkopf.kt @@ -49,5 +49,5 @@ open class Signaturkopf( SicherheitsdatumUndUhrzeit(date, time), HashalgorithmusDatenelementgruppe(), SignaturalgorithmusDatenelementgruppe(algorithm, mode), - Schluesselname(bank.countryCode, bank.bankCode, bank.customerId, Schluesselart.Signierschluessel, keyNumber, keyVersion) + Schluesselname(bank.countryCode, bank.bankCodeForOnlineBanking, bank.customerId, Schluesselart.Signierschluessel, keyNumber, keyVersion) )) \ No newline at end of file diff --git a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Verschluesselungskopf.kt b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Verschluesselungskopf.kt index 1e157079..ab3f1d43 100644 --- a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Verschluesselungskopf.kt +++ b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/messages/segmente/implementierte/Verschluesselungskopf.kt @@ -52,7 +52,7 @@ open class Verschluesselungskopf( SicherheitsidentifikationDetails(bank.customerSystemId), SicherheitsdatumUndUhrzeit(date, time), VerschluesselungsalgorithmusDatenelementgruppe(mode, encryptionAlgorithm), - Schluesselname(bank.countryCode, bank.bankCode, bank.customerId, key, keyNumber, keyVersion), + Schluesselname(bank.countryCode, bank.bankCodeForOnlineBanking, bank.customerId, key, keyNumber, keyVersion), KomprimierungsfunktionDatenelement(algorithm), NotAllowedDatenelement() // Certificate not applicapable for PIN/TAN )) \ No newline at end of file diff --git a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/model/BankData.kt b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/model/BankData.kt index 936ba015..f2b4b1a6 100644 --- a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/model/BankData.kt +++ b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/model/BankData.kt @@ -61,13 +61,6 @@ open class BankData( internal constructor() : this("", "", "", "", "") // for object deserializers - init { - // for UniCredit / HypVereinsbank for online banking '70020270' has to be used as bank code - if (bankName.contains("unicredit", true)) { - bankCode = "70020270" - } - } - protected val _accounts = mutableListOf() @@ -88,6 +81,20 @@ open class BankData( } + /** + * Some banks use a special bank code for online banking that doesn't match bank's bank code, e. g. Hypo Vereinsbank + */ + open val bankCodeForOnlineBanking: String + get() { + // for UniCredit / HypVereinsbank for online banking '70020270' has to be used as bank code + if (bankName.contains("unicredit", true)) { + return "70020270" + } + + return bankCode + } + + open fun resetBpdVersion() { bpdVersion = BPDVersion.VersionNotReceivedYet }