merchant

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

commit 2204363cc713ba4f0b16022b43d0043de082d59a
parent 7f718eefc2aefba2d6f08201434a8126d6d465bb
Author: bohdan-potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date:   Sat, 12 Apr 2025 10:44:14 +0200

Merge branch 'master' into dev/bohdan-potuzhnyi/donau-integration

Diffstat:
Mconfigure.ac | 2+-
Mcontrib/merchant-spa.lock | 2+-
Mdebian/changelog | 12++++++++++++
Mdoc/doxygen/taler.doxy | 2+-
Msrc/backend/taler-merchant-httpd_private-get-instances-ID-kyc.c | 8++++----
Msrc/backend/taler-merchant-kyccheck.c | 22+++++++++++++++++++---
6 files changed, 38 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -18,7 +18,7 @@ # This configure file is in the public domain AC_PREREQ([2.69]) -AC_INIT([taler-merchant],[0.14.6],[taler-bug@gnunet.org]) +AC_INIT([taler-merchant],[0.14.8],[taler-bug@gnunet.org]) AC_CONFIG_SRCDIR([src/backend/taler-merchant-httpd.c]) AC_CONFIG_HEADERS([taler_merchant_config.h]) # support for non-recursive builds diff --git a/contrib/merchant-spa.lock b/contrib/merchant-spa.lock @@ -1 +1 @@ -0.14.12-dev.1 +0.14.13-dev.4 diff --git a/debian/changelog b/debian/changelog @@ -1,3 +1,15 @@ +taler-merchant (0.14.8) unstable; urgency=low + + * Release version 0.14.8 + + -- Christian Grothoff <grothoff@gnu.org> Wed, 9 Apr 2025 06:51:13 +0200 + +taler-merchant (0.14.7) unstable; urgency=low + + * Release version 0.14.7 + + -- Christian Grothoff <grothoff@gnu.org> Mon, 7 Apr 2025 06:51:13 +0200 + taler-merchant (0.14.6) unstable; urgency=low * Release version 0.14.6 diff --git a/doc/doxygen/taler.doxy b/doc/doxygen/taler.doxy @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "GNU Taler: Merchant" -PROJECT_NUMBER = 0.14.5 +PROJECT_NUMBER = 0.14.8 PROJECT_LOGO = logo.svg OUTPUT_DIRECTORY = . CREATE_SUBDIRS = YES 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 @@ -526,6 +526,10 @@ map_to_status (const struct ExchangeKycRequest *ekr) { return "no-exchange-keys"; } + if (ekr->kyc_ok) + { + return "ready"; + } if (! ekr->auth_ok) { if (ekr->kyc_auth_conflict) @@ -534,10 +538,6 @@ map_to_status (const struct ExchangeKycRequest *ekr) } if (ekr->in_aml_review) return "awaiting-aml-review"; - if (ekr->kyc_ok) - { - return "ready"; - } switch (ekr->last_http_status) { case 0: diff --git a/src/backend/taler-merchant-kyccheck.c b/src/backend/taler-merchant-kyccheck.c @@ -229,6 +229,13 @@ struct Inquiry bool not_first_time; /** + * Do soft limits on transactions apply to this merchant for operations + * merchants care about? If so, we should increase our request frequency + * and ask more often to see if they were lifted. + */ + bool zero_limited; + + /** * Did we not run this inquiry due to limits? */ bool limited; @@ -447,6 +454,7 @@ store_kyc_status ( json_decref (i->jlimits); jlimits = json_array (); GNUNET_assert (NULL != jlimits); + i->zero_limited = false; for (unsigned int j = 0; j<account_kyc_status->limits_length; j++) { const struct TALER_EXCHANGE_AccountLimit *limit @@ -454,6 +462,14 @@ store_kyc_status ( pack_limit (limit, jlimits); + if (TALER_amount_is_zero (&limit->threshold) && + limit->soft_limit && + ( (TALER_KYCLOGIC_KYC_TRIGGER_DEPOSIT == limit->operation_type) || + (TALER_KYCLOGIC_KYC_TRIGGER_AGGREGATE == limit->operation_type) || + (TALER_KYCLOGIC_KYC_TRIGGER_TRANSACTION == limit->operation_type) ) ) + { + i->zero_limited = true; + } } i->jlimits = jlimits; GNUNET_break (! GNUNET_is_zero (&account_kyc_status->access_token)); @@ -498,7 +514,7 @@ exchange_check_cb ( store_kyc_status (i, &ks->details.ok); i->backoff = GNUNET_TIME_UNIT_ZERO; - if (i->aml_review) + if (i->aml_review || i->zero_limited) { if (! progress) i->due = GNUNET_TIME_relative_to_absolute (AML_FREQ); @@ -548,8 +564,8 @@ exchange_check_cb ( i->last_kyc_check = GNUNET_TIME_timestamp_get (); /* Account unknown => no KYC auth yet */ i->auth_ok = false; - /* unknown account => no requirements! */ - i->kyc_ok = true; + /* unknown account => wire transfer required! */ + i->kyc_ok = false; /* There should not be any limits yet, but clear them just in case the exchange has amnesia */ json_decref (i->jlimits);