summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_get-orders-ID.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-08-19 18:26:22 +0200
committerChristian Grothoff <christian@grothoff.org>2020-08-19 18:26:22 +0200
commitc4ffdfa3f2c736e4324f11df7a35340f0e64e9a9 (patch)
tree453de06a768bb1619522ba96024d3356532d07b5 /src/backend/taler-merchant-httpd_get-orders-ID.c
parentee01d4150da2d4803300a82e10a0e475e7484554 (diff)
downloadmerchant-c4ffdfa3f2c736e4324f11df7a35340f0e64e9a9.tar.gz
merchant-c4ffdfa3f2c736e4324f11df7a35340f0e64e9a9.tar.bz2
merchant-c4ffdfa3f2c736e4324f11df7a35340f0e64e9a9.zip
implement #6458
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 142ba999..75f83862 100644
--- a/src/backend/taler-merchant-httpd_get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_get-orders-ID.c
@@ -451,6 +451,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
@@ -510,10 +538,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;
@@ -846,7 +871,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) )
{
@@ -1050,9 +1076,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;
}
@@ -1085,10 +1110,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",
@@ -1116,10 +1138,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",