commit b252736bab5d7bee04178b15c659ed0aaf222200
parent efe096a3c8c6122f0710d272e60e2e35feb32531
Author: MS <ms@taler.net>
Date: Wed, 3 Feb 2021 09:42:04 +0100
add refund table
Diffstat:
2 files changed, 40 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
@@ -58,6 +58,23 @@ class TalerRequestedPaymentEntity(id: EntityID<Long>) : LongEntity(id) {
var creditAccount by TalerRequestedPaymentsTable.creditAccount
}
+object TalerInvalidIncomingPaymentsTable : LongIdTable() {
+ val payment = reference("payment", NexusBankTransactionsTable)
+ val timestampMs = long("timestampMs")
+ val debtorPaytoUri = text("incomingPaytoUri")
+ val refunded = bool("refunded").default(true)
+}
+
+class TalerInvalidIncomingPaymentEntity(id: EntityID<Long>) : LongEntity(id) {
+ companion object : LongEntityClass<TalerInvalidIncomingPaymentEntity>(TalerInvalidIncomingPaymentsTable)
+
+ var payment by NexusBankTransactionEntity referencedOn TalerInvalidIncomingPaymentsTable.payment
+ var timestampMs by TalerInvalidIncomingPaymentsTable.timestampMs
+ var debtorPaytoUri by TalerInvalidIncomingPaymentsTable.debtorPaytoUri
+ var refunded by TalerInvalidIncomingPaymentsTable.refunded
+}
+
+
/**
* This is the table of the incoming payments. Entries are merely "pointers" to the
* entries from the raw payments table.
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt
@@ -382,19 +382,36 @@ private fun ingestIncoming(payment: NexusBankTransactionEntity, txDtls: Transact
logger.warn("missing debtor agent")
return
}
+ if (debtorAgent.bic == null) {
+ logger.warn("Not allowing transactions missing the BIC. IBAN and name: ${debtorIban}, $debtorName")
+ return
+ }
val reservePub = extractReservePubFromSubject(subject)
- if (reservePub == null) {
- // FIXME: send back!
+ if (reservePub == null){
logger.warn("could not find reserve pub in remittance information")
+ TalerInvalidIncomingPaymentEntity.new {
+ this.payment = payment
+ timestampMs = System.currentTimeMillis()
+ debtorPaytoUri = buildIbanPaytoUri(
+ debtorIban, debtorAgent.bic, debtorName, "DBIT"
+ )
+ }
+ // FIXME: send back!
return
}
+
if (!CryptoUtil.checkValidEddsaPublicKey(reservePub)) {
// FIXME: send back!
logger.warn("invalid public key")
- return
- }
- if (debtorAgent.bic == null) {
- logger.warn("Not allowing transactions missing the BIC. IBAN and name: ${debtorIban}, $debtorName")
+ TalerInvalidIncomingPaymentEntity.new {
+ this.payment = payment
+ timestampMs = System.currentTimeMillis()
+ debtorPaytoUri = buildIbanPaytoUri(
+ debtorIban, debtorAgent.bic, debtorName, "DBIT"
+ )
+ }
+ logger.warn("Invalid public key found")
+ // FIXME: send back!
return
}
TalerIncomingPaymentEntity.new {