summaryrefslogtreecommitdiff
path: root/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
diff options
context:
space:
mode:
authorAntoine A <>2024-03-14 02:01:33 +0100
committerAntoine A <>2024-03-14 02:01:33 +0100
commitbef953d9dd4a02910454d5f882077248fc6967e9 (patch)
tree12a6fe6e26dd2c22cf60cd5c33603e335d45d0c5 /bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
parentcb67be6fc78bc573b91978c909322ad666e3d117 (diff)
downloadlibeufin-bef953d9dd4a02910454d5f882077248fc6967e9.tar.gz
libeufin-bef953d9dd4a02910454d5f882077248fc6967e9.tar.bz2
libeufin-bef953d9dd4a02910454d5f882077248fc6967e9.zip
Bank transaction idempotency
Diffstat (limited to 'bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt')
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt5
1 files changed, 5 insertions, 0 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt b/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
index dd6aab4b..a3bb8265 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
@@ -459,6 +459,7 @@ private fun Routing.coreBankTransactionsApi(db: Database, ctx: BankConfig) {
subject = subject,
amount = amount,
timestamp = Instant.now(),
+ requestUid = req.request_uid,
is2fa = challenge != null
)
when (res) {
@@ -479,6 +480,10 @@ private fun Routing.coreBankTransactionsApi(db: Database, ctx: BankConfig) {
"Insufficient funds",
TalerErrorCode.BANK_UNALLOWED_DEBIT
)
+ BankTransactionResult.RequestUidReuse -> throw conflict(
+ "request_uid used already",
+ TalerErrorCode.BANK_TRANSFER_REQUEST_UID_REUSED
+ )
is BankTransactionResult.Success -> call.respond(TransactionCreateResponse(res.id))
}
}