summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_private-get-orders.c
diff options
context:
space:
mode:
authorJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-08-01 03:05:09 -0400
committerJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-08-01 03:05:09 -0400
commit859675fe134b673b99cf1d9edcbdf258798ea740 (patch)
tree29a116b259a03f703782a1e6c4fb8be08ecbcafb /src/backend/taler-merchant-httpd_private-get-orders.c
parent9a1369603bd98944d8276989e36a78ec9a84b247 (diff)
downloadmerchant-859675fe134b673b99cf1d9edcbdf258798ea740.tar.gz
merchant-859675fe134b673b99cf1d9edcbdf258798ea740.tar.bz2
merchant-859675fe134b673b99cf1d9edcbdf258798ea740.zip
fix query paid orders & add test
Diffstat (limited to 'src/backend/taler-merchant-httpd_private-get-orders.c')
-rw-r--r--src/backend/taler-merchant-httpd_private-get-orders.c43
1 files changed, 29 insertions, 14 deletions
diff --git a/src/backend/taler-merchant-httpd_private-get-orders.c b/src/backend/taler-merchant-httpd_private-get-orders.c
index ab90c576..dc4901c3 100644
--- a/src/backend/taler-merchant-httpd_private-get-orders.c
+++ b/src/backend/taler-merchant-httpd_private-get-orders.c
@@ -259,21 +259,9 @@ add_order (void *cls,
struct AddOrderState *aos = cls;
json_t *contract_terms;
struct GNUNET_HashCode h_contract_terms;
- enum GNUNET_DB_QueryStatus qs =
- TMH_db->lookup_order (TMH_db->cls,
- aos->instance_id,
- order_id,
- NULL,
- &contract_terms);
+ enum GNUNET_DB_QueryStatus qs;
bool refundable = false;
bool paid;
- if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
- {
- aos->result = 1;
- aos->ec_msg = "failed to lookup order in database";
- json_decref (contract_terms);
- return;
- }
{
qs = TMH_db->lookup_order_status (TMH_db->cls,
@@ -288,11 +276,38 @@ add_order (void *cls,
{
aos->result = 1;
aos->ec_msg = "failed to lookup order status in database";
- json_decref (contract_terms);
return;
}
}
+ if (paid)
+ {
+ /* if the order was paid, it must have been claimed, so use
+ lookup_contract_terms to avoid the order being deleted in the db. */
+ uint64_t os;
+ qs = TMH_db->lookup_contract_terms (TMH_db->cls,
+ aos->instance_id,
+ order_id,
+ &contract_terms,
+ &os);
+ }
+ else
+ {
+ qs = TMH_db->lookup_order (TMH_db->cls,
+ aos->instance_id,
+ order_id,
+ NULL,
+ &contract_terms);
+ }
+
+ if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
+ {
+ aos->result = 1;
+ aos->ec_msg = "failed to lookup order in database";
+ json_decref (contract_terms);
+ return;
+ }
+
{
struct TALER_Amount order_amount;
struct GNUNET_TIME_Absolute rd;