summaryrefslogtreecommitdiff
path: root/src/lib/merchant_api_merchant_get_order.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/merchant_api_merchant_get_order.c')
-rw-r--r--src/lib/merchant_api_merchant_get_order.c43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/lib/merchant_api_merchant_get_order.c b/src/lib/merchant_api_merchant_get_order.c
index 466f2cd1..025460c2 100644
--- a/src/lib/merchant_api_merchant_get_order.c
+++ b/src/lib/merchant_api_merchant_get_order.c
@@ -77,13 +77,28 @@ static void
handle_unpaid (struct TALER_MERCHANT_OrderMerchantGetHandle *omgh,
struct TALER_MERCHANT_HttpResponse *hr)
{
- const char *taler_pay_uri
- = json_string_value (json_object_get (hr->reply,
- "taler_pay_uri"));
- const char *already_paid_order_id
- = json_string_value (json_object_get (hr->reply,
- "already_paid_order_id"));
- if (NULL == taler_pay_uri)
+ struct TALER_MERCHANT_OrderStatusResponse osr = {
+ .status = TALER_MERCHANT_OSC_UNPAID
+ };
+ struct GNUNET_JSON_Specification spec[] = {
+ TALER_JSON_spec_amount ("total_amount",
+ &osr.details.unpaid.contract_amount),
+ GNUNET_JSON_spec_mark_optional (
+ GNUNET_JSON_spec_string ("already_paid_order_id",
+ &osr.details.unpaid.already_paid_order_id)),
+ GNUNET_JSON_spec_string ("taler_pay_uri",
+ &osr.details.unpaid.taler_pay_uri),
+ GNUNET_JSON_spec_string ("summary",
+ &osr.details.unpaid.summary),
+ TALER_JSON_spec_absolute_time ("creation_time",
+ &osr.details.unpaid.creation_time),
+ GNUNET_JSON_spec_end ()
+ };
+
+ if (GNUNET_OK !=
+ GNUNET_JSON_parse (hr->reply,
+ spec,
+ NULL, NULL))
{
GNUNET_break_op (0);
hr->http_status = 0;
@@ -93,17 +108,9 @@ handle_unpaid (struct TALER_MERCHANT_OrderMerchantGetHandle *omgh,
NULL);
return;
}
- {
- struct TALER_MERCHANT_OrderStatusResponse osr = {
- .status = TALER_MERCHANT_OSC_UNPAID,
- .details.unpaid.taler_pay_uri = taler_pay_uri,
- .details.unpaid.already_paid_order_id = already_paid_order_id
- };
-
- omgh->cb (omgh->cb_cls,
- hr,
- &osr);
- }
+ omgh->cb (omgh->cb_cls,
+ hr,
+ &osr);
}