merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 12736ba7e57a3ccbb04cad15d342459ca706eed6
parent 099a7a071b78be5a87a0366922dc012040cb37de
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Sat, 14 Feb 2026 22:26:21 +0100

untested fix for #11054

Diffstat:
Msrc/backend/taler-merchant-httpd_private-get-orders-ID.c | 20+++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_private-get-orders-ID.c b/src/backend/taler-merchant-httpd_private-get-orders-ID.c @@ -306,6 +306,11 @@ struct GetOrderRequestContext struct TALER_Amount deposit_fees_total; /** + * Total amount in deposit fees cancelled due to refunds for all coins. + */ + struct TALER_Amount deposit_fees_refunded_total; + + /** * Total value of the coins that the exchange deposited into our bank * account (confirmed or unconfirmed), including deposit fees. */ @@ -1247,9 +1252,9 @@ process_refunds_cb ( } GNUNET_assert ( 0 <= - TALER_amount_subtract (&gorc->deposit_fees_total, - &gorc->deposit_fees_total, - &tq->deposit_fee)); + TALER_amount_add (&gorc->deposit_fees_refunded_total, + &gorc->deposit_fees_refunded_total, + &tq->deposit_fee)); } if (GNUNET_OK != TALER_amount_cmp_currency ( @@ -1395,6 +1400,9 @@ phase_check_deposits (struct GetOrderRequestContext *gorc) GNUNET_assert (GNUNET_OK == TALER_amount_set_zero (gorc->contract_amount.currency, &gorc->deposit_fees_total)); + GNUNET_assert (GNUNET_OK == + TALER_amount_set_zero (gorc->contract_amount.currency, + &gorc->deposit_fees_refunded_total)); TMH_db->lookup_deposits_by_order (TMH_db->cls, gorc->order_serial, &deposit_cb, @@ -1546,6 +1554,12 @@ phase_check_local_transfers (struct GetOrderRequestContext *gorc) "refund exceeds contract value")); return; } + GNUNET_assert ( + 0 <= + TALER_amount_add (&expect_total, + &expect_total, + &gorc->deposit_fees_refunded_total)); + if (0 > TALER_amount_subtract (&expect_total, &expect_total,