diff options
author | Christian Grothoff <grothoff@gnunet.org> | 2023-12-16 17:54:16 +0800 |
---|---|---|
committer | Christian Grothoff <grothoff@gnunet.org> | 2023-12-16 17:54:30 +0800 |
commit | 7891e62bf98bd884c8c993ae698f9a985dbacfbd (patch) | |
tree | 0294420f02463fb7d516c95a6b04736c64058274 /src/lib | |
parent | 1c1ec9c54e09e9b90ea7a91e81bf5a6eb878c53b (diff) | |
download | merchant-7891e62bf98bd884c8c993ae698f9a985dbacfbd.tar.gz merchant-7891e62bf98bd884c8c993ae698f9a985dbacfbd.tar.bz2 merchant-7891e62bf98bd884c8c993ae698f9a985dbacfbd.zip |
partial implementation of protocol v6: GET with additional filters, POST not done
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/merchant_api_get_config.c | 6 | ||||
-rw-r--r-- | src/lib/merchant_api_get_orders.c | 49 | ||||
-rw-r--r-- | src/lib/merchant_api_post_orders.c | 36 |
3 files changed, 88 insertions, 3 deletions
diff --git a/src/lib/merchant_api_get_config.c b/src/lib/merchant_api_get_config.c index 93b7c863..1b289a9a 100644 --- a/src/lib/merchant_api_get_config.c +++ b/src/lib/merchant_api_get_config.c @@ -34,12 +34,12 @@ * Which version of the Taler protocol is implemented * by this library? Used to determine compatibility. */ -#define MERCHANT_PROTOCOL_CURRENT 5 +#define MERCHANT_PROTOCOL_CURRENT 6 /** - * How many configs are we backwards compatible with? + * How many configs are we backwards-compatible with? */ -#define MERCHANT_PROTOCOL_AGE 0 +#define MERCHANT_PROTOCOL_AGE 1 /** diff --git a/src/lib/merchant_api_get_orders.c b/src/lib/merchant_api_get_orders.c index 966ecb15..f79821db 100644 --- a/src/lib/merchant_api_get_orders.c +++ b/src/lib/merchant_api_get_orders.c @@ -236,6 +236,39 @@ TALER_MERCHANT_orders_get2 ( TALER_MERCHANT_OrdersGetCallback cb, void *cb_cls) { + return TALER_MERCHANT_orders_get3 ( + ctx, + backend_url, + paid, + refunded, + wired, + NULL, + NULL, + date, + start_row, + delta, + timeout, + cb, + cb_cls); +} + + +struct TALER_MERCHANT_OrdersGetHandle * +TALER_MERCHANT_orders_get3 ( + struct GNUNET_CURL_Context *ctx, + const char *backend_url, + enum TALER_EXCHANGE_YesNoAll paid, + enum TALER_EXCHANGE_YesNoAll refunded, + enum TALER_EXCHANGE_YesNoAll wired, + const char *session_id, + const char *fulfillment_url, + struct GNUNET_TIME_Timestamp date, + uint64_t start_row, + int64_t delta, + struct GNUNET_TIME_Relative timeout, + TALER_MERCHANT_OrdersGetCallback cb, + void *cb_cls) +{ struct TALER_MERCHANT_OrdersGetHandle *ogh; CURL *eh; unsigned int timeout_ms = timeout.rel_value_us @@ -255,6 +288,8 @@ TALER_MERCHANT_orders_get2 ( /* build ogh->url with the various optional arguments */ { char *dstr; + char *fec = NULL; + char *sid = NULL; bool have_date; bool have_srow; char cbuf[30]; @@ -273,6 +308,14 @@ TALER_MERCHANT_orders_get2 ( sizeof (cbuf), "%llu", (unsigned long long) start_row); + if (NULL != session_id) + (void) GNUNET_STRINGS_urlencode (session_id, + strlen (session_id), + &sid); + if (NULL != fulfillment_url) + (void) GNUNET_STRINGS_urlencode (fulfillment_url, + strlen (fulfillment_url), + &fec); dstr = GNUNET_strdup (GNUNET_TIME_timestamp2s (date)); if (delta > 0) { @@ -314,8 +357,14 @@ TALER_MERCHANT_orders_get2 ( (0 != timeout_ms) ? tbuf : NULL, + "session_id", + sid, + "fulfillment_url", + fec, NULL); GNUNET_free (dstr); + GNUNET_free (sid); + GNUNET_free (fec); } if (NULL == ogh->url) { diff --git a/src/lib/merchant_api_post_orders.c b/src/lib/merchant_api_post_orders.c index fc37a439..56881133 100644 --- a/src/lib/merchant_api_post_orders.c +++ b/src/lib/merchant_api_post_orders.c @@ -139,6 +139,39 @@ TALER_MERCHANT_orders_post2 ( TALER_MERCHANT_PostOrdersCallback cb, void *cb_cls) { + return TALER_MERCHANT_orders_post3 ( + ctx, + backend_url, + order, + NULL, /* session ID */ + refund_delay, + payment_target, + inventory_products_length, + inventory_products, + uuids_length, + uuids, + create_token, + cb, + cb_cls); +} + + +struct TALER_MERCHANT_PostOrdersHandle * +TALER_MERCHANT_orders_post3 ( + struct GNUNET_CURL_Context *ctx, + const char *backend_url, + const json_t *order, + const char *session_id, + struct GNUNET_TIME_Relative refund_delay, + const char *payment_target, + unsigned int inventory_products_length, + const struct TALER_MERCHANT_InventoryProduct inventory_products[], + unsigned int uuids_length, + const char *uuids[static uuids_length], + bool create_token, + TALER_MERCHANT_PostOrdersCallback cb, + void *cb_cls) +{ struct TALER_MERCHANT_PostOrdersHandle *po; json_t *req; CURL *eh; @@ -154,6 +187,9 @@ TALER_MERCHANT_orders_post2 ( GNUNET_JSON_pack_object_incref ("order", (json_t *) order), GNUNET_JSON_pack_allow_null ( + GNUNET_JSON_pack_string ("session_id", + session_id)), + GNUNET_JSON_pack_allow_null ( GNUNET_JSON_pack_string ("payment_target", payment_target))); if (0 != refund_delay.rel_value_us) |