From 00f798e504398aaed4b17e8427814525faeeba11 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Tue, 31 Mar 2020 18:35:08 +0200 Subject: Avoid processing invalid payments twice --- cli/python/libeufin-cli | 19 +++++++++++++++++++ nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt | 1 + nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 3 ++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cli/python/libeufin-cli b/cli/python/libeufin-cli index b8917155..72a2d449 100755 --- a/cli/python/libeufin-cli +++ b/cli/python/libeufin-cli @@ -427,6 +427,25 @@ def crz(obj, account_id, date_range, nexus_base_url): resp = post(url, json=req) print(resp.content.decode("utf-8")) +@taler.command(help="Trigger refunds for invalid incoming transactions") +@click.pass_obj +@click.option( + "--account-id", + help="Numerical ID of the customer at the Nexus", + required=True +) +@click.option( + "--bank-account-id", + help="Token that identifies one bank account belonging to --account-id", + required=True +) +@click.argument( + "nexus-base-url" +) +def refund(ctx, account_id, bank_account_id, nexus_base_url): + + + @taler.command(help="Separate payments with Taler-subject from the rest") @click.pass_obj @click.option( diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt index 361cf6a8..7db14619 100644 --- a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt +++ b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt @@ -23,6 +23,7 @@ class TalerIncomingPaymentEntry(id: EntityID) : LongEntity(id) { companion object : LongEntityClass(TalerIncomingPayments) var payment by EbicsRawBankTransactionEntry referencedOn TalerIncomingPayments.payment var valid by TalerIncomingPayments.valid + var processed by TalerIncomingPayments.processed } object EbicsRawBankTransactionsTable : LongIdTable() { diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt index 81773a8d..726fbfe3 100644 --- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt +++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt @@ -641,7 +641,7 @@ fun main() { ) } TalerIncomingPaymentEntry.find { - TalerIncomingPayments.processed eq false + TalerIncomingPayments.processed eq false and TalerIncomingPayments.valid eq false }.forEach { createPain001entry( Pain001Data( @@ -653,6 +653,7 @@ fun main() { ), acctid.id.value ) + it.processed = true } } return@post -- cgit v1.2.3