summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/taler-merchant-httpd_get-orders-ID.c8
-rw-r--r--src/backend/taler-merchant-httpd_private-get-orders-ID.c16
-rw-r--r--src/lib/merchant_api_merchant_get_order.c36
-rw-r--r--src/lib/merchant_api_wallet_get_order.c49
4 files changed, 92 insertions, 17 deletions
diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c b/src/backend/taler-merchant-httpd_get-orders-ID.c
index 05bdf384..8604578c 100644
--- a/src/backend/taler-merchant-httpd_get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_get-orders-ID.c
@@ -377,9 +377,9 @@ send_pay_request (struct GetOrderData *god,
god->hc->instance->settings.id);
ret = TALER_MHD_reply_json_pack (god->sc.con,
MHD_HTTP_OK,
- "{s:s, s:b, s:s?}",
+ "{s:s, s:s, s:s?}",
"taler_pay_uri", taler_pay_uri,
- "paid", false,
+ "order_status", "unpaid",
"already_paid_order_id",
already_paid_order_id);
GNUNET_free (taler_pay_uri);
@@ -1061,8 +1061,8 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
return TALER_MHD_reply_json_pack (
connection,
MHD_HTTP_OK,
- "{s:b, s:b, s:o, s:o, s:o}",
- "paid", true,
+ "{s:s, s:b, s:o, s:o, s:o}",
+ "order_status", "paid",
"refunded", god->refunded,
"refund_amount",
TALER_JSON_from_amount (&god->refund_amount),
diff --git a/src/backend/taler-merchant-httpd_private-get-orders-ID.c b/src/backend/taler-merchant-httpd_private-get-orders-ID.c
index 850b72c0..e3286dd4 100644
--- a/src/backend/taler-merchant-httpd_private-get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_private-get-orders-ID.c
@@ -970,11 +970,11 @@ TMH_private_get_orders_ID (const struct TMH_RequestHandler *rh,
hc->instance->settings.id);
ret = TALER_MHD_reply_json_pack (connection,
MHD_HTTP_OK,
- "{s:s, s:b, s:s}",
+ "{s:s, s:s, s:s}",
"taler_pay_uri",
taler_pay_uri,
- "paid",
- false,
+ "order_status",
+ "unpaid",
"already_paid_order_id",
already_paid_order_id);
GNUNET_free (taler_pay_uri);
@@ -1037,13 +1037,13 @@ TMH_private_get_orders_ID (const struct TMH_RequestHandler *rh,
hc->instance->settings.id);
ret = TALER_MHD_reply_json_pack (connection,
MHD_HTTP_OK,
- "{s:s, s:O, s:b}",
+ "{s:s, s:O, s:s}",
"taler_pay_uri",
taler_pay_uri,
"contract_terms",
gorc->contract_terms,
- "paid",
- false);
+ "order_status",
+ "unpaid");
GNUNET_free (taler_pay_uri);
return ret;
}
@@ -1163,7 +1163,7 @@ TMH_private_get_orders_ID (const struct TMH_RequestHandler *rh,
ret = TALER_MHD_reply_json_pack (connection,
MHD_HTTP_OK,
"{s:o, s:I, s:I, s:o, s:O,"
- " s:b, s:b, s:b, s:o, s:o, s:o}",
+ " s:s, s:b, s:b, s:o, s:o, s:o}",
"wire_reports",
gorc->wire_reports,
"exchange_ec",
@@ -1175,8 +1175,8 @@ TMH_private_get_orders_ID (const struct TMH_RequestHandler *rh,
&gorc->deposits_total),
"contract_terms",
gorc->contract_terms,
+ "order_status",
"paid",
- true,
"refunded",
gorc->refunded,
"wired",
diff --git a/src/lib/merchant_api_merchant_get_order.c b/src/lib/merchant_api_merchant_get_order.c
index 25cce306..a339c699 100644
--- a/src/lib/merchant_api_merchant_get_order.c
+++ b/src/lib/merchant_api_merchant_get_order.c
@@ -323,6 +323,7 @@ handle_merchant_order_get_finished (void *cls,
{
struct TALER_MERCHANT_OrderMerchantGetHandle *omgh = cls;
const json_t *json = response;
+ const char *order_status;
struct TALER_MERCHANT_HttpResponse hr = {
.http_status = (unsigned int) response_code,
.reply = json
@@ -357,13 +358,40 @@ handle_merchant_order_get_finished (void *cls,
return;
}
- /* HTTP OK */
- if (! json_boolean_value (json_object_get (json, "paid")))
+ order_status = json_string_value (json_object_get (json, "order_status"));
+
+ if (NULL == order_status)
+ {
+ GNUNET_break_op (0);
+ hr.http_status = 0;
+ hr.ec = TALER_EC_MERCHANT_ORDER_GET_REPLY_MALFORMED;
+ omgh->cb (omgh->cb_cls,
+ &hr,
+ NULL);
+ TALER_MERCHANT_merchant_order_get_cancel (omgh);
+ return;
+ }
+
+ if (0 == strcmp ("paid", order_status))
+ {
+ handle_paid (omgh,
+ &hr);
+ }
+ else if (0 == strcmp ("unpaid", order_status))
+ {
handle_unpaid (omgh,
&hr);
+ }
else
- handle_paid (omgh,
- &hr);
+ {
+ GNUNET_break_op (0);
+ hr.http_status = 0;
+ hr.ec = TALER_EC_MERCHANT_ORDER_GET_REPLY_MALFORMED;
+ omgh->cb (omgh->cb_cls,
+ &hr,
+ NULL);
+ TALER_MERCHANT_merchant_order_get_cancel (omgh);
+ }
}
diff --git a/src/lib/merchant_api_wallet_get_order.c b/src/lib/merchant_api_wallet_get_order.c
index b5468f65..680f856c 100644
--- a/src/lib/merchant_api_wallet_get_order.c
+++ b/src/lib/merchant_api_wallet_get_order.c
@@ -110,6 +110,7 @@ handle_wallet_get_order_finished (void *cls,
{
struct TALER_MERCHANT_OrderWalletGetHandle *owgh = cls;
const json_t *json = response;
+ const char *order_status;
owgh->job = NULL;
if (MHD_HTTP_OK != response_code)
@@ -138,7 +139,31 @@ handle_wallet_get_order_finished (void *cls,
return;
}
- if (! json_boolean_value (json_object_get (json, "paid")))
+ order_status = json_string_value (json_object_get (json, "order_status"));
+
+ if (NULL == order_status)
+ {
+ struct TALER_MERCHANT_HttpResponse hr = {
+ .reply = json,
+ .http_status = 0,
+ .ec = TALER_EC_MERCHANT_ORDER_GET_REPLY_MALFORMED,
+ };
+ GNUNET_break_op (0);
+ owgh->cb (owgh->cb_cls,
+ &hr,
+ GNUNET_SYSERR,
+ GNUNET_SYSERR,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ NULL);
+ TALER_MERCHANT_wallet_order_get_cancel (owgh);
+ return;
+ }
+
+ if (0 == strcmp (order_status, "unpaid"))
{
/* Status is: unpaid */
const char *taler_pay_uri = json_string_value (json_object_get (json,
@@ -174,6 +199,28 @@ handle_wallet_get_order_finished (void *cls,
return;
}
+ if (0 != strcmp (order_status, "paid"))
+ {
+ struct TALER_MERCHANT_HttpResponse hr = {
+ .reply = json,
+ .http_status = 0,
+ .ec = TALER_EC_MERCHANT_ORDER_GET_REPLY_MALFORMED,
+ };
+ GNUNET_break_op (0);
+ owgh->cb (owgh->cb_cls,
+ &hr,
+ GNUNET_SYSERR,
+ GNUNET_SYSERR,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ NULL);
+ TALER_MERCHANT_wallet_order_get_cancel (owgh);
+ return;
+ }
+
{
struct TALER_Amount refund_amount;
json_t *refunds;