diff options
author | Christian Grothoff <christian@grothoff.org> | 2019-11-02 12:13:01 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2019-11-02 12:13:01 +0100 |
commit | e8d2cde63cefeba9f6c6dc242a075de48875c9bd (patch) | |
tree | 695258d3a56e73ed147ef9e019720adb90db73e7 /src/lib/merchant_api_check_payment.c | |
parent | d19a45f960923cecbaabe23407f1d2f0aa244954 (diff) | |
download | merchant-e8d2cde63cefeba9f6c6dc242a075de48875c9bd.tar.gz merchant-e8d2cde63cefeba9f6c6dc242a075de48875c9bd.tar.bz2 merchant-e8d2cde63cefeba9f6c6dc242a075de48875c9bd.zip |
clean up check payment logic
Diffstat (limited to 'src/lib/merchant_api_check_payment.c')
-rw-r--r-- | src/lib/merchant_api_check_payment.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/lib/merchant_api_check_payment.c b/src/lib/merchant_api_check_payment.c index 8a85d26a..35cd44ce 100644 --- a/src/lib/merchant_api_check_payment.c +++ b/src/lib/merchant_api_check_payment.c @@ -79,12 +79,10 @@ handle_check_payment_finished (void *cls, { struct TALER_MERCHANT_CheckPaymentOperation *cpo = cls; struct TALER_Amount refund_amount = { 0 }; - int refunded; const json_t *json = response; + const json_t *refunded; struct GNUNET_JSON_Specification spec[] = { - GNUNET_JSON_spec_boolean ("refunded", - &refunded), TALER_JSON_spec_amount ("refund_amount", &refund_amount), GNUNET_JSON_spec_end () @@ -103,7 +101,7 @@ handle_check_payment_finished (void *cls, json, GNUNET_SYSERR, GNUNET_SYSERR, - &refund_amount, + NULL, NULL); TALER_MERCHANT_check_payment_cancel (cpo); return; @@ -123,7 +121,7 @@ handle_check_payment_finished (void *cls, json, GNUNET_SYSERR, GNUNET_SYSERR, - &refund_amount, + NULL, NULL); } else @@ -133,17 +131,19 @@ handle_check_payment_finished (void *cls, json, GNUNET_NO, GNUNET_NO, - &refund_amount, + NULL, taler_pay_uri); } TALER_MERCHANT_check_payment_cancel (cpo); return; } - if (GNUNET_OK != - GNUNET_JSON_parse (json, - spec, - NULL, NULL)) + if ( (NULL == (refunded = json_object_get (json, "refunded"))) || + ( (json_true () == refunded) && + (GNUNET_OK != + GNUNET_JSON_parse (json, + spec, + NULL, NULL)) ) ) { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "check payment failed to parse JSON\n"); @@ -153,7 +153,7 @@ handle_check_payment_finished (void *cls, json, GNUNET_SYSERR, GNUNET_SYSERR, - &refund_amount, + NULL, NULL); TALER_MERCHANT_check_payment_cancel (cpo); return; @@ -163,10 +163,9 @@ handle_check_payment_finished (void *cls, MHD_HTTP_OK, json, GNUNET_YES, - refunded, - &refund_amount, + (json_true () == refunded), + (json_true () == refunded) ? &refund_amount : NULL, NULL); - GNUNET_JSON_parse_free (spec); TALER_MERCHANT_check_payment_cancel (cpo); } |