summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_get-orders-ID.c
diff options
context:
space:
mode:
authorJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-08-20 00:49:30 -0400
committerJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-08-20 01:01:05 -0400
commit9fce403bce4fe5f2be507a32ee7b4dfac296c26a (patch)
tree9c0c4509929e81f5b5eac6aa36e32d479c9643e3 /src/backend/taler-merchant-httpd_get-orders-ID.c
parent8d172853c1c7b1ca8d9dc31194c4e73e79499a80 (diff)
parentd6f28270094db1ffa4e5526ce556e7fc23e8e9b9 (diff)
downloadmerchant-9fce403bce4fe5f2be507a32ee7b4dfac296c26a.tar.gz
merchant-9fce403bce4fe5f2be507a32ee7b4dfac296c26a.tar.bz2
merchant-9fce403bce4fe5f2be507a32ee7b4dfac296c26a.zip
Merge branch 'master' of ssh://git.taler.net/merchant
Diffstat (limited to 'src/backend/taler-merchant-httpd_get-orders-ID.c')
-rw-r--r--src/backend/taler-merchant-httpd_get-orders-ID.c51
1 files changed, 35 insertions, 16 deletions
diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c b/src/backend/taler-merchant-httpd_get-orders-ID.c
index 027f9f4d..a02c45d5 100644
--- a/src/backend/taler-merchant-httpd_get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_get-orders-ID.c
@@ -453,6 +453,34 @@ TMH_make_taler_pay_uri (struct MHD_Connection *con,
/**
+ * Return the order summary of the contract of @a god in the
+ * preferred language of the HTTP client.
+ *
+ * @param god order to extract summary from
+ * @return NULL if no summary was provided in the contract
+ */
+static const char *
+get_order_summary (struct GetOrderData *god)
+{
+ const char *language_pattern;
+ const char *ret;
+
+ language_pattern = MHD_lookup_connection_value (god->sc.con,
+ MHD_HEADER_KIND,
+ MHD_HTTP_HEADER_ACCEPT_LANGUAGE);
+ if (NULL == language_pattern)
+ language_pattern = "en";
+ ret = json_string_value (TALER_JSON_extract_i18n (god->contract_terms,
+ language_pattern,
+ "summary"));
+ if (NULL == ret)
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "No order summary found!\n");
+ return ret;
+}
+
+
+/**
* The client did not yet pay, send it the payment request.
*
* @param god check pay request context
@@ -512,10 +540,7 @@ send_pay_request (struct GetOrderData *god,
{ "taler_pay_qrcode_svg",
qr },
{ "order_summary",
- // FIXME #6458: implement logic to extract summary based on
- // language preferences from summary_i18n if present.
- json_string_value (json_object_get (god->contract_terms,
- "summary")) },
+ get_order_summary (god) },
{ NULL, NULL }
};
enum GNUNET_GenericReturnValue res;
@@ -848,7 +873,8 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
TALER_EC_GET_ORDERS_DB_LOOKUP_ERROR,
"database error looking up order");
}
- god->unclaimed = (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qs) && !contract_available;
+ god->unclaimed = (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qs) &&
+ ! contract_available;
if ( (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) &&
(NULL == god->contract_terms) )
{
@@ -1052,9 +1078,8 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
"Awaiting refund exceeding %s\n",
TALER_amount2s (&god->sc.refund_expected));
if (god->sc.awaiting_refund_obtained)
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Awaiting pending refunds\n",
- TALER_amount2s (&god->sc.refund_expected));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Awaiting pending refunds\n");
suspend_god (god);
return MHD_YES;
}
@@ -1087,10 +1112,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
{
struct KVC kvc[] = {
{ "order_summary",
- // FIXME #6458: implement logic to extract summary based on
- // language preferences from summary_i18n if present.
- json_string_value (json_object_get (god->contract_terms,
- "summary")) },
+ get_order_summary (god) },
{ "refund_amount",
TALER_amount2s (&god->refund_amount) },
{ "taler_refund_uri",
@@ -1118,10 +1140,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
{
struct KVC kvc[] = {
{ "order_summary",
- // FIXME #6458: implement logic to extract summary based on
- // language preferences from summary_i18n if present.
- json_string_value (json_object_get (god->contract_terms,
- "summary")) },
+ get_order_summary (god) },
{ "refund_amount",
TALER_amount2s (&god->refund_amount) },
{ "contract",