merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 862ef7cf8db650e3277128638c073746ed5ecedd
parent 3cc3a5d6215a3ca4e85c4b44c9a4360739bc4b67
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 10 Oct 2021 21:13:54 +0200

-implement logic to persist KYC status returned from exchange

Diffstat:
Msrc/backend/taler-merchant-httpd_private-get-instances-ID-kyc.c | 44++++++++++++++++++++++++++++++++++++++------
1 file changed, 38 insertions(+), 6 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_private-get-instances-ID-kyc.c b/src/backend/taler-merchant-httpd_private-get-instances-ID-kyc.c @@ -390,12 +390,27 @@ exchange_check_cb (void *cls, struct KycContext *kc = ekr->kc; ekr->kyc = NULL; - // build up reply in 'kc' switch (ks->http_status) { case MHD_HTTP_OK: - // STORE in DB: ks->details.kyc_ok.{timestamp,exchange_pub,exchange_sig} - // FIXME... + { + enum GNUNET_DB_QueryStatus qs; + + qs = TMH_db->account_kyc_set_status (TMH_db->cls, + kc->mi->settings.id, + &ekr->h_wire, + ekr->exchange_url, + ekr->exchange_kyc_serial, + &ks->details.kyc_ok.exchange_sig, + &ks->details.kyc_ok.exchange_pub, + ks->details.kyc_ok.timestamp, + true); + if (qs < 0) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Failed to store KYC status in database!\n"); + } + } break; case MHD_HTTP_ACCEPTED: GNUNET_assert ( @@ -411,8 +426,26 @@ exchange_check_cb (void *cls, ekr->payto_uri)))); break; case MHD_HTTP_NO_CONTENT: - // STORE in DB: no KYC at this exchange! - // FIXME... + { + struct GNUNET_TIME_Absolute now; + enum GNUNET_DB_QueryStatus qs; + + now = GNUNET_TIME_absolute_get (); + qs = TMH_db->account_kyc_set_status (TMH_db->cls, + kc->mi->settings.id, + &ekr->h_wire, + ekr->exchange_url, + ekr->exchange_kyc_serial, + NULL, + NULL, + now, + true); + if (qs < 0) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Failed to store KYC status in database!\n"); + } + } break; default: GNUNET_log (GNUNET_ERROR_TYPE_WARNING, @@ -433,7 +466,6 @@ exchange_check_cb (void *cls, ks->http_status)))); break; } - GNUNET_CONTAINER_DLL_remove (kc->exchange_pending_head, kc->exchange_pending_tail, ekr);