diff options
author | Antoine A <> | 2024-03-14 02:01:33 +0100 |
---|---|---|
committer | Antoine A <> | 2024-03-14 02:01:33 +0100 |
commit | bef953d9dd4a02910454d5f882077248fc6967e9 (patch) | |
tree | 12a6fe6e26dd2c22cf60cd5c33603e335d45d0c5 /bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt | |
parent | cb67be6fc78bc573b91978c909322ad666e3d117 (diff) | |
download | libeufin-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.kt | 5 |
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)) } } |