merchant

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

commit 56f1fbaa740f2591b9d40a4a69db82996d5270bb
parent c11d977c59648b1596ff72cc478db71723775650
Author: Christian Grothoff <christian@grothoff.org>
Date:   Mon, 23 Mar 2026 02:44:01 +0100

default for token generation is 'true'

Diffstat:
Msrc/include/taler/taler-merchant/delete-private-orders-ORDER_ID.h | 41+++++++++++++++++++++++++++++------------
Msrc/include/taler/taler-merchant/post-private-orders.h | 2+-
Msrc/lib/merchant_api_delete-private-orders-ORDER_ID.c | 9++++++---
Msrc/lib/merchant_api_post-private-orders.c | 10++--------
4 files changed, 38 insertions(+), 24 deletions(-)

diff --git a/src/include/taler/taler-merchant/delete-private-orders-ORDER_ID.h b/src/include/taler/taler-merchant/delete-private-orders-ORDER_ID.h @@ -78,13 +78,31 @@ struct TALER_MERCHANT_DeletePrivateOrderOptionValue /** + * Ends list of options. + */ +#define TALER_MERCHANT_delete_private_order_set_option_end() \ + (struct TALER_MERCHANT_DeletePrivateOrderOptionValue) \ + { .option = TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_END } + +/** + * Force deletion even if the order has been claimed. + */ +#define TALER_MERCHANT_delete_private_order_set_option_force() \ + (struct TALER_MERCHANT_DeletePrivateOrderOptionValue) \ + { .option = TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_FORCE } + + +/** * Set options for DELETE /private/orders/$ORDER_ID operation. * * @param[in,out] handle the handle to set options for * @param num_options length of the @a options array * @param options array of option values (terminated with _END) + * @return #GNUNET_OK on success, + * #GNUNET_NO on failure, + * #GNUNET_SYSERR on internal error */ -void +enum GNUNET_GenericReturnValue TALER_MERCHANT_delete_private_order_set_options_ ( struct TALER_MERCHANT_DeletePrivateOrderHandle *handle, unsigned int num_options, @@ -103,19 +121,18 @@ TALER_MERCHANT_delete_private_order_set_options_ ( * * @param handle the handle to set options for * @param ... option values (automatically terminated with _END) + * @return #GNUNET_OK on success, + * #GNUNET_NO on failure, + * #GNUNET_SYSERR on internal error */ #define TALER_MERCHANT_delete_private_order_set_options(handle, ...) \ - do { \ - struct TALER_MERCHANT_DeletePrivateOrderOptionValue __opts[] = { \ - __VA_ARGS__, \ - { .option = TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_END } \ - }; \ - TALER_MERCHANT_delete_private_order_set_options_ ( \ - handle, \ - sizeof (__opts) / sizeof (__opts[0]) - 1, \ - __opts); \ - } while (0) - + TALER_MERCHANT_delete_private_order_set_options_ ( \ + handle, \ + TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTIONS_ARRAY_MAX_SIZE, \ + ((const struct TALER_MERCHANT_DeletePrivateOrderOptionValue[]) \ + {__VA_ARGS__, \ + TALER_MERCHANT_delete_private_order_set_option_end () } \ + )) /** * Response details for a DELETE /private/orders/$ORDER_ID request. diff --git a/src/include/taler/taler-merchant/post-private-orders.h b/src/include/taler/taler-merchant/post-private-orders.h @@ -316,7 +316,7 @@ struct TALER_MERCHANT_PostPrivateOrdersResponse /** * Set whether to create a claim token. * - * @param c true to create token + * @param c true to create token, false to disable * @return representation of the option */ #define TALER_MERCHANT_post_private_orders_option_create_token(c) \ diff --git a/src/lib/merchant_api_delete-private-orders-ORDER_ID.c b/src/lib/merchant_api_delete-private-orders-ORDER_ID.c @@ -149,7 +149,7 @@ TALER_MERCHANT_delete_private_order_create ( } -void +enum GNUNET_GenericReturnValue TALER_MERCHANT_delete_private_order_set_options_ ( struct TALER_MERCHANT_DeletePrivateOrderHandle *handle, unsigned int num_options, @@ -160,12 +160,15 @@ TALER_MERCHANT_delete_private_order_set_options_ ( switch (options[i].option) { case TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_END: - return; + return GNUNET_OK; case TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_FORCE: handle->force = true; - break; + continue; } + GNUNET_break (0); + return GNUNET_SYSERR; } + return GNUNET_OK; } diff --git a/src/lib/merchant_api_post-private-orders.c b/src/lib/merchant_api_post-private-orders.c @@ -103,11 +103,6 @@ struct TALER_MERCHANT_PostPrivateOrdersHandle bool create_token; /** - * Whether create_token was explicitly set. - */ - bool create_token_set; - - /** * Optional OTP device ID. */ const char *otp_id; @@ -302,6 +297,7 @@ TALER_MERCHANT_post_private_orders_create ( ppoh->ctx = ctx; ppoh->base_url = GNUNET_strdup (url); ppoh->order = json_incref ((json_t *) order); + ppoh->create_token = true; return ppoh; } @@ -330,7 +326,6 @@ TALER_MERCHANT_post_private_orders_set_options_ ( break; case TALER_MERCHANT_POST_PRIVATE_ORDERS_OPTION_CREATE_TOKEN: ppoh->create_token = options[i].details.create_token; - ppoh->create_token_set = true; break; case TALER_MERCHANT_POST_PRIVATE_ORDERS_OPTION_OTP_ID: ppoh->otp_id = options[i].details.otp_id; @@ -457,8 +452,7 @@ TALER_MERCHANT_post_private_orders_start ( "lock_uuids", ua)); } - if (ppoh->create_token_set && - ! ppoh->create_token) + if (! ppoh->create_token) { GNUNET_assert (0 == json_object_set_new (req,