merchant

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

commit a2f6a0ab24e8b4eec6169fc0478f503cff425e6f
parent 50e0bdbfa81107a525f8f708d82d050e485700cb
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Thu, 14 Aug 2025 17:29:03 +0200

more work on #9434

Diffstat:
Msrc/backend/taler-merchant-httpd_post-orders-ID-pay.c | 14+++++++++-----
Msrc/backenddb/pg_insert_issued_token.c | 2+-
Msrc/backenddb/pg_insert_issued_token.sql | 19++++++++++++-------
Msrc/backenddb/pg_insert_spent_token.c | 2+-
Msrc/backenddb/pg_insert_spent_token.sql | 18+++++++++++-------
5 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-pay.c b/src/backend/taler-merchant-httpd_post-orders-ID-pay.c @@ -2845,8 +2845,8 @@ phase_execute_pay_transaction (struct PayContext *pc) case TALER_MERCHANT_CONTRACT_OUTPUT_TYPE_TOKEN: struct SignedOutputToken *output = &pc->output_tokens[i]; - enum GNUNET_DB_QueryStatus qs; + qs = TMH_db->insert_issued_token (TMH_db->cls, &pc->check_contract.h_contract_terms, &output->h_issue, @@ -2963,7 +2963,8 @@ find_valid_input_tokens ( for (unsigned int j = 0; j < expected_num; j++) { - struct TokenUseConfirmation *tuc = &pc->parse_pay.tokens[index + j]; + struct TokenUseConfirmation *tuc + = &pc->parse_pay.tokens[index + j]; const struct TALER_MERCHANT_ContractTokenFamilyKey *key = NULL; for (unsigned int i = 0; i<family->keys_len; i++) @@ -2971,8 +2972,12 @@ find_valid_input_tokens ( const struct TALER_MERCHANT_ContractTokenFamilyKey *ki = &family->keys[i]; - if (GNUNET_TIME_timestamp_cmp (ki->valid_after, >, now) || - GNUNET_TIME_timestamp_cmp (ki->valid_before, <, now)) + if (GNUNET_TIME_timestamp_cmp (ki->valid_after, + >=, + now) || + GNUNET_TIME_timestamp_cmp (ki->valid_before, + <, + now)) { continue; /* ki currently not valid */ } @@ -3055,7 +3060,6 @@ find_valid_input_tokens ( NULL)); return GNUNET_NO; } - return GNUNET_YES; } diff --git a/src/backenddb/pg_insert_issued_token.c b/src/backenddb/pg_insert_issued_token.c @@ -56,7 +56,7 @@ TMH_PG_insert_issued_token (void *cls, PREPARE (pg, "issued_token_insert", "SELECT" - " ,out_no_family" + " out_no_family" " ,out_existed" " FROM merchant_do_insert_issued_token" " ($1, $2, $3);"); diff --git a/src/backenddb/pg_insert_issued_token.sql b/src/backenddb/pg_insert_issued_token.sql @@ -25,15 +25,16 @@ CREATE FUNCTION merchant_do_insert_issued_token ( LANGUAGE plpgsql AS $$ DECLARE + my_rec RECORD; my_tfk_serial INT8; + my_tf_serial INT8; BEGIN -SELECT mtf.token_family_key_serial - INTO my_tfk_serial - FROM merchant_token_families mtf - JOIN merchant_token_family_keys mtfk - USING (token_family_serial) - WHERE mtfk.h_pub = in_h_issue_pub; +SELECT token_family_key_serial + ,token_family_serial + INTO my_rec + FROM merchant_token_family_keys + WHERE h_pub = in_h_issue_pub; IF NOT FOUND THEN @@ -42,6 +43,8 @@ THEN return; END IF; +my_tfk_serial = my_rec.token_family_key_serial; +my_tf_serial = my_rec.token_family_serial; out_no_family = FALSE; INSERT INTO merchant_issued_tokens @@ -59,9 +62,11 @@ THEN out_existed = TRUE; return; END IF; +out_existed = FALSE; UPDATE merchant_token_families SET issued=issued+1 - WHERE token_family_key_serial=my_tfk_serial; + WHERE token_family_serial=my_tf_serial; + END $$; diff --git a/src/backenddb/pg_insert_spent_token.c b/src/backenddb/pg_insert_spent_token.c @@ -59,7 +59,7 @@ TMH_PG_insert_spent_token ( PREPARE (pg, "spent_token_insert", "SELECT" - " ,out_no_family" + " out_no_family" " ,out_existed" " FROM merchant_do_insert_spent_token" "($1, $2, $3, $4, $5);"); diff --git a/src/backenddb/pg_insert_spent_token.sql b/src/backenddb/pg_insert_spent_token.sql @@ -27,15 +27,16 @@ CREATE FUNCTION merchant_do_insert_spent_token ( LANGUAGE plpgsql AS $$ DECLARE + my_rec RECORD; my_tfk_serial INT8; + my_tf_serial INT8; BEGIN -SELECT mtf.token_family_key_serial - INTO my_tfk_serial - FROM merchant_token_families mtf - JOIN merchant_token_family_keys mtfk - USING (token_family_serial) - WHERE mtfk.h_pub = in_h_issue_pub; +SELECT token_family_key_serial + ,token_family_serial + INTO my_rec + FROM merchant_token_family_keys + WHERE h_pub = in_h_issue_pub; IF NOT FOUND THEN @@ -45,6 +46,8 @@ THEN END IF; out_no_family = FALSE; +my_tfk_serial = my_rec.token_family_key_serial; +my_tf_serial = my_rec.token_family_serial; INSERT INTO merchant_used_tokens (token_family_key_serial @@ -65,9 +68,10 @@ THEN out_existed = TRUE; return; END IF; +out_existed = FALSE; UPDATE merchant_token_families SET redeemed=redeemed+1 - WHERE token_family_key_serial=my_tfk_serial; + WHERE token_family_serial=my_tf_serial; END $$;