commit 00f798e504398aaed4b17e8427814525faeeba11
parent 8723a7107d0916ded72cdcf311ddc59f6343ecee
Author: Marcello Stanisci <stanisci.m@gmail.com>
Date: Tue, 31 Mar 2020 18:35:08 +0200
Avoid processing invalid payments twice
Diffstat:
3 files changed, 22 insertions(+), 1 deletion(-)
diff --git 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
@@ -23,6 +23,7 @@ class TalerIncomingPaymentEntry(id: EntityID<Long>) : LongEntity(id) {
companion object : LongEntityClass<TalerIncomingPaymentEntry>(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
@@ -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