libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit f9285a122fa3d38374a6a26c60002b051ac1f407
parent a40a2847e2b23ced35e50860300f3c7be2dfc1c3
Author: Florian Dold <florian.dold@gmail.com>
Date:   Thu, 18 Jun 2020 23:41:25 +0530

entropy

Diffstat:
Mnexus/src/main/kotlin/tech/libeufin/nexus/DB.kt | 3+++
Mnexus/src/main/kotlin/tech/libeufin/nexus/bankaccount/BankAccount.kt | 15+++++++++------
2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt @@ -220,6 +220,8 @@ object NexusBankAccountsTable : IdTable<String>() { // Highest bank message ID that this bank account is aware of. val highestSeenBankMessageId = integer("highestSeenBankMessageId") + + val pain001Counter = long("pain001counter") } class NexusBankAccountEntity(id: EntityID<String>) : Entity<String>(id) { @@ -230,6 +232,7 @@ class NexusBankAccountEntity(id: EntityID<String>) : Entity<String>(id) { var bankCode by NexusBankAccountsTable.bankCode var defaultBankConnection by NexusBankConnectionEntity optionalReferencedOn NexusBankAccountsTable.defaultBankConnection var highestSeenBankMessageId by NexusBankAccountsTable.highestSeenBankMessageId + var pain001Counter by NexusBankAccountsTable.pain001Counter } object EbicsSubscribersTable : IntIdTable() { diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/bankaccount/BankAccount.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/bankaccount/BankAccount.kt @@ -195,9 +195,12 @@ fun getPreparedPayment(uuid: Long): PaymentInitiationEntity { * by this pain document. */ fun addPreparedPayment(paymentData: Pain001Data, debitorAccount: NexusBankAccountEntity): PaymentInitiationEntity { - val now = Instant.now().toEpochMilli() - val nowHex = now.toString(16) return transaction { + val now = Instant.now().toEpochMilli() + val nowHex = now.toString(16) + val painCounter = debitorAccount.pain001Counter++ + val painHex = painCounter.toString(16) + val acctHex = debitorAccount.id.hashCode().toString(16).substring(0, 4) PaymentInitiationEntity.new { bankAccount = debitorAccount subject = paymentData.subject @@ -206,10 +209,10 @@ fun addPreparedPayment(paymentData: Pain001Data, debitorAccount: NexusBankAccoun creditorBic = paymentData.creditorBic creditorIban = paymentData.creditorIban preparationDate = now - messageId = "leuf-m-pain1-$nowHex" - endToEndId = "leuf-e-$nowHex" - paymentInformationId = "leuf-p-$nowHex" - instructionId = "leuf-i-$nowHex" + messageId = "leuf-mp1-$nowHex-$painHex-$acctHex" + endToEndId = "leuf-e-$nowHex-$painHex-$acctHex" + paymentInformationId = "leuf-p-$nowHex-$painHex-$acctHex" + instructionId = "leuf-i-$nowHex-$painHex-$acctHex" } } }