merchant

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

commit c0a46c7de723a5d8a7b651774468da9d06a56ada
parent a5d19156a19c3b4ebaef7f3241c0c4488aa30354
Author: Christian Grothoff <christian@grothoff.org>
Date:   Wed,  3 Jun 2026 00:21:35 +0200

-misc bugfixes

Diffstat:
Msrc/backend/taler-merchant-httpd_post-private-orders.c | 2+-
Msrc/backenddb/lookup_token_family_key.c | 10++++------
Msrc/backenddb/select_donau_instances.c | 2+-
Msrc/backenddb/upsert_donau_keys.c | 31+++++++++++++------------------
4 files changed, 19 insertions(+), 26 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_post-private-orders.c b/src/backend/taler-merchant-httpd_post-private-orders.c @@ -3599,7 +3599,7 @@ phase_parse_choices (struct OrderContext *oc) GNUNET_assert (0); break; case TALER_MERCHANT_CONTRACT_OUTPUT_TYPE_DONATION_RECEIPT: - if (! order_output->details.donation_receipt.no_amount) + if (order_output->details.donation_receipt.no_amount) { contract_output->details.donation_receipt.amount = ochoice->amount; diff --git a/src/backenddb/lookup_token_family_key.c b/src/backenddb/lookup_token_family_key.c @@ -124,13 +124,11 @@ TALER_MERCHANTDB_lookup_token_family_key ( ",used" " FROM merchant_token_families mtf" " LEFT JOIN merchant_token_family_keys mtfk" - " ON ( (mtf.token_family_serial = mtfk.token_family_serial)" - " AND ($2 >= mtfk.signature_validity_start)" - " AND ($2 <= mtfk.signature_validity_end)" - " AND ($3 <= mtfk.private_key_deleted_at) )" + " USING (token_family_serial)" " WHERE slug=$1" - " AND ($2 >= valid_after)" - " AND ($2 <= valid_before)" + " AND COALESCE ($2 >= mtfk.signature_validity_start, TRUE)" + " AND COALESCE ($2 <= mtfk.signature_validity_end, TRUE)" + " AND COALESCE ($3 <= mtfk.private_key_deleted_at, TRUE)" " ORDER BY mtfk.signature_validity_start ASC" " LIMIT 1"); memset (details, diff --git a/src/backenddb/select_donau_instances.c b/src/backenddb/select_donau_instances.c @@ -164,7 +164,7 @@ TALER_MERCHANTDB_select_donau_instances ( ",di.current_year" ",dk.keys_json::TEXT" " FROM merchant_donau_instances di" - " LEFT JOIN merchant_donau_keys dk" + " LEFT JOIN merchant.merchant_donau_keys dk" " ON di.donau_url = dk.donau_url"); qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn, "", diff --git a/src/backenddb/upsert_donau_keys.c b/src/backenddb/upsert_donau_keys.c @@ -47,28 +47,23 @@ TALER_MERCHANTDB_upsert_donau_keys ( }; check_connection (pg); - // FIXME: combine these into a stored procedure PREPARE (pg, "insert_donau_keys", - "INSERT INTO merchant_donau_keys" - "(keys_json" - ",first_retry" - ",donau_url" - ") VALUES ($1::TEXT::JSONB, $2, $3);"); - PREPARE (pg, - "update_donau_keys", - "UPDATE merchant_donau_keys SET" - " keys_json=$1::TEXT::JSONB," - " first_retry=$2" - " WHERE" - " donau_url=$3;"); + "INSERT INTO merchant.merchant_donau_keys" + " (keys_json" + " ,first_retry" + " ,donau_url" + " ) VALUES (" + " $1::TEXT::JSONB" + " ,$2" + " ,$3)" + " ON CONFLICT (donau_url)" + " DO UPDATE SET" + " keys_json=EXCLUDED.keys_json," + " first_retry=EXCLUDED.first_retry;"); qs = GNUNET_PQ_eval_prepared_non_select (pg->conn, - "update_donau_keys", + "insert_donau_keys", params); - if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) - qs = GNUNET_PQ_eval_prepared_non_select (pg->conn, - "insert_donau_keys", - params); } json_decref (jkeys);