merchant

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

commit b96f3468a51098fd24f90a8b6b2802a29b964aea
parent c7cb7f925cabba012bf25160b14e65f287059b18
Author: Marcello Stanisci <marcello.stanisci@inria.fr>
Date:   Fri, 24 Jun 2016 16:50:39 +0200

adapting /track API to use merchant instances

Diffstat:
Msrc/backend/taler-merchant-httpd_contract.c | 9+++++++++
Msrc/include/taler_merchant_service.h | 4++++
Msrc/lib/merchant_api_track_transaction.c | 2++
Msrc/lib/merchant_api_track_transfer.c | 2++
Msrc/lib/test_merchant_api.c | 22+++++++++++++++-------
Msrc/lib/test_merchant_api.conf | 6++++++
6 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_contract.c b/src/backend/taler-merchant-httpd_contract.c @@ -223,6 +223,15 @@ MH_handler_contract (struct TMH_RequestHandler *rh, } mi = get_instance (root); + if (NULL == mi) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Not able to find the specified receiver\n"); + json_decref (root); + return TMH_RESPONSE_reply_external_error (connection, + "Unknown receiver given"); + } + /* add fields to the contract that the backend should provide */ json_object_set (jcontract, "exchanges", diff --git a/src/include/taler_merchant_service.h b/src/include/taler_merchant_service.h @@ -337,6 +337,7 @@ typedef void * * @param ctx execution context * @param backend_uri base URI of the backend + * @param receiver which merchant instance is going to be tracked * @param wtid base32 string indicating a wtid * @param exchange base URL of the exchange in charge of returning the wanted information * @param track_transfer_cb the callback to call when a reply for this request is available @@ -346,6 +347,7 @@ typedef void struct TALER_MERCHANT_TrackTransferHandle * TALER_MERCHANT_track_transfer (struct GNUNET_CURL_Context *ctx, const char *backend_uri, + const char *receiver, const struct TALER_WireTransferIdentifierRawP *wtid, const char *exchange_uri, TALER_MERCHANT_TrackTransferCallback track_transfer_cb, @@ -446,6 +448,7 @@ typedef void * * @param ctx execution context * @param backend_uri base URI of the backend + * @param receiver which merchant instance is going to be tracked * @param transaction_id which transaction should we trace * @param track_transaction_cb the callback to call when a reply for this request is available * @param track_transaction_cb_cls closure for @a track_transaction_cb @@ -454,6 +457,7 @@ typedef void struct TALER_MERCHANT_TrackTransactionHandle * TALER_MERCHANT_track_transaction (struct GNUNET_CURL_Context *ctx, const char *backend_uri, + const char *receiver, uint64_t transaction_id, TALER_MERCHANT_TrackTransactionCallback track_transaction_cb, void *track_transaction_cb_cls); diff --git a/src/lib/merchant_api_track_transaction.c b/src/lib/merchant_api_track_transaction.c @@ -230,6 +230,7 @@ handle_track_transaction_finished (void *cls, * * @param ctx execution context * @param backend_uri base URI of the backend + * @param receiver which merchant instance is going to be tracked * @param transaction_id which transaction should we trace * @param track_transaction_cb the callback to call when a reply for this request is available * @param track_transaction_cb_cls closure for @a track_transaction_cb @@ -238,6 +239,7 @@ handle_track_transaction_finished (void *cls, struct TALER_MERCHANT_TrackTransactionHandle * TALER_MERCHANT_track_transaction (struct GNUNET_CURL_Context *ctx, const char *backend_uri, + const char *receiver, uint64_t transaction_id, TALER_MERCHANT_TrackTransactionCallback track_transaction_cb, void *track_transaction_cb_cls) diff --git a/src/lib/merchant_api_track_transfer.c b/src/lib/merchant_api_track_transfer.c @@ -272,6 +272,7 @@ handle_track_transfer_finished (void *cls, * * @param ctx execution context * @param backend_uri base URI of the backend + * @param receiver which merchant instance is going to be tracked * @param wtid base32 string indicating a wtid * @param exchange base URL of the exchange in charge of returning the wanted information * @param track_transfer_cb the callback to call when a reply for this request is available @@ -281,6 +282,7 @@ handle_track_transfer_finished (void *cls, struct TALER_MERCHANT_TrackTransferHandle * TALER_MERCHANT_track_transfer (struct GNUNET_CURL_Context *ctx, const char *backend_uri, + const char *receiver, const struct TALER_WireTransferIdentifierRawP *wtid, const char *exchange_uri, TALER_MERCHANT_TrackTransferCallback track_transfer_cb, diff --git a/src/lib/test_merchant_api.c b/src/lib/test_merchant_api.c @@ -63,7 +63,7 @@ static struct GNUNET_CURL_Context *ctx; /** * Which merchant instance we will run the testcase for */ -static char *instance; +static char *receiver = NULL; /** @@ -1442,6 +1442,10 @@ interpreter_run (void *cls) proposal = json_loads (cmd->details.contract.proposal, JSON_REJECT_DUPLICATES, &error); + if (NULL != receiver) + json_object_set_new (proposal, + "receiver", + json_string (receiver)); if (NULL == proposal) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, @@ -1564,11 +1568,13 @@ interpreter_run (void *cls) return; } } - + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Using receiver '%s'\n", + receiver); cmd->details.pay.ph = TALER_MERCHANT_pay_wallet (ctx, MERCHANT_URI, - NULL, + receiver, &h_contract, transaction_id, &total_amount, @@ -1663,6 +1669,7 @@ interpreter_run (void *cls) cmd->details.track_transfer.tdo = TALER_MERCHANT_track_transfer (ctx, MERCHANT_URI, + receiver, &ref->details.check_bank_transfer.wtid, EXCHANGE_URI, &track_transfer_cb, @@ -1675,6 +1682,7 @@ interpreter_run (void *cls) cmd->details.track_transaction.tth = TALER_MERCHANT_track_transaction (ctx, MERCHANT_URI, + receiver, ref->details.pay.transaction_id, &track_transaction_cb, is); @@ -1845,7 +1853,7 @@ do_shutdown (void *cls) is->task = NULL; } GNUNET_free (is); - GNUNET_free_non_null (instance); + GNUNET_free_non_null (receiver); if (NULL != exchange) { TALER_EXCHANGE_disconnect (exchange); @@ -2161,10 +2169,10 @@ main (int argc, if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg, "merchant", "INSTANCE", - &instance)) + &receiver)) GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Using non default instance '%s'\n", - instance); + "Using non default receiver '%s'\n", + receiver); db = TALER_MERCHANTDB_plugin_load (cfg); if (NULL == db) diff --git a/src/lib/test_merchant_api.conf b/src/lib/test_merchant_api.conf @@ -51,6 +51,12 @@ KEYFILE = test_merchant.priv [default-wireformat] TEST_RESPONSE_FILE = ${TALER_CONFIG_HOME}/merchant/wire/test.json +[merchant-instance-tor] +KEYFILE = test_merchant.priv + +[tor-wireformat] +TEST_RESPONSE_FILE = ${TALER_CONFIG_HOME}/merchant/wire/test.json + # Auditors must be in sections "auditor-", the rest of the section # name could be anything. [merchant-auditor-ezb]