aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-05-05 22:17:16 +0200
committerChristian Grothoff <christian@grothoff.org>2020-05-05 22:17:16 +0200
commitaf52541eacf5305977701fa24a530797994feb19 (patch)
treed140044ed25fb90f402e9b20c75a7b9bbd911831
parent3b7710d2ccb9be9bf8cecb9c604ca931bd3f443f (diff)
return fee as well
-rw-r--r--src/include/taler_error_codes.h19
-rw-r--r--src/include/taler_exchange_service.h2
-rw-r--r--src/lib/exchange_api_refund.c4
-rw-r--r--src/testing/testing_api_cmd_refund.c3
4 files changed, 27 insertions, 1 deletions
diff --git a/src/include/taler_error_codes.h b/src/include/taler_error_codes.h
index f75464c35..74660303d 100644
--- a/src/include/taler_error_codes.h
+++ b/src/include/taler_error_codes.h
@@ -2199,6 +2199,25 @@ enum TALER_ErrorCode
TALER_EC_TIP_PICKUP_UNBLIND_FAILURE = 2812,
/**
+ * We failed to fetch contract terms from our merchant database. The
+ * response is provided with HTTP status code
+ * #MHD_HTTP_INTERNAL_SERVER_ERROR.
+ */
+ TALER_EC_GET_ORDERS_DB_LOOKUP_ERROR = 2900,
+
+ /**
+ * We failed to find the contract terms from our merchant database.
+ * The response is provided with HTTP status code #MHD_HTTP_NOT_FOUND.
+ */
+ TALER_EC_GET_ORDERS_ID_UNKNOWN = 2901,
+
+ /**
+ * The contract hash provided by the wallet does not match the order.
+ * The response is provided with HTTP status code #MHD_HTTP_FORBIDDEN.
+ */
+ TALER_EC_GET_ORDERS_WRONG_CONTRACT = 2902,
+
+ /**
* We failed to contract terms from our merchant database. The
* response is provided with HTTP status code
* #MHD_HTTP_INTERNAL_SERVER_ERROR.
diff --git a/src/include/taler_exchange_service.h b/src/include/taler_exchange_service.h
index f94b8253d..82b9b83df 100644
--- a/src/include/taler_exchange_service.h
+++ b/src/include/taler_exchange_service.h
@@ -851,6 +851,7 @@ struct TALER_EXCHANGE_RefundHandle;
*
* @param cls closure
* @param hr HTTP response data
+ * @param refund_fee the refund fee the exchange charged us
* @param sign_key exchange key used to sign @a obj, or NULL
* @param signature the actual signature, or NULL on error
*/
@@ -858,6 +859,7 @@ typedef void
(*TALER_EXCHANGE_RefundCallback) (
void *cls,
const struct TALER_EXCHANGE_HttpResponse *hr,
+ const struct TALER_Amount *refund_fee,
const struct TALER_ExchangePublicKeyP *sign_key,
const struct TALER_ExchangeSignatureP *signature);
diff --git a/src/lib/exchange_api_refund.c b/src/lib/exchange_api_refund.c
index 9cb8794d3..b1ea176bf 100644
--- a/src/lib/exchange_api_refund.c
+++ b/src/lib/exchange_api_refund.c
@@ -92,7 +92,6 @@ verify_refund_signature_ok (struct TALER_EXCHANGE_RefundHandle *rh,
const json_t *json,
struct TALER_ExchangePublicKeyP *exchange_pub,
struct TALER_ExchangeSignatureP *exchange_sig)
-
{
const struct TALER_EXCHANGE_Keys *key_state;
struct GNUNET_JSON_Specification spec[] = {
@@ -149,6 +148,7 @@ handle_refund_finished (void *cls,
struct TALER_ExchangeSignatureP exchange_sig;
struct TALER_ExchangePublicKeyP *ep = NULL;
struct TALER_ExchangeSignatureP *es = NULL;
+ struct TALER_Amount *rf = NULL;
const json_t *j = response;
struct TALER_EXCHANGE_HttpResponse hr = {
.reply = j,
@@ -176,6 +176,7 @@ handle_refund_finished (void *cls,
{
ep = &exchange_pub;
es = &exchange_sig;
+ rf = &rh->depconf.refund_fee;
}
break;
case MHD_HTTP_BAD_REQUEST:
@@ -234,6 +235,7 @@ handle_refund_finished (void *cls,
}
rh->cb (rh->cb_cls,
&hr,
+ rf,
ep,
es);
TALER_EXCHANGE_refund_cancel (rh);
diff --git a/src/testing/testing_api_cmd_refund.c b/src/testing/testing_api_cmd_refund.c
index c27311fbf..e662ace2e 100644
--- a/src/testing/testing_api_cmd_refund.c
+++ b/src/testing/testing_api_cmd_refund.c
@@ -76,6 +76,7 @@ struct RefundState
*
* @param cls closure
* @param hr HTTP response details
+ * @param refund_fee the refund fee the exchange charged
* @param exchange_pub public key the exchange
* used for signing @a obj.
* @param exchange_sig actual signature confirming the refund
@@ -83,6 +84,7 @@ struct RefundState
static void
refund_cb (void *cls,
const struct TALER_EXCHANGE_HttpResponse *hr,
+ const struct TALER_Amount *refund_fee,
const struct TALER_ExchangePublicKeyP *exchange_pub,
const struct TALER_ExchangeSignatureP *exchange_sig)
{
@@ -90,6 +92,7 @@ refund_cb (void *cls,
struct RefundState *rs = cls;
struct TALER_TESTING_Command *refund_cmd;
+ (void) refund_fee;
refund_cmd = &rs->is->commands[rs->is->ip];
rs->rh = NULL;
if (rs->expected_response_code != hr->http_status)