gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-typescript-core] branch master updated: wallet-core: handle kyc-a


From: Admin
Subject: [taler-typescript-core] branch master updated: wallet-core: handle kyc-auth response in initial kyc-check response
Date: Tue, 03 Jun 2025 16:21:06 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository taler-typescript-core.

The following commit(s) were added to refs/heads/master by this push:
     new bf34cedb5 wallet-core: handle kyc-auth response in initial kyc-check 
response
bf34cedb5 is described below

commit bf34cedb5cdb3a9033a3b2b93103544418133773
Author: Florian Dold <florian@dold.me>
AuthorDate: Tue Jun 3 16:21:02 2025 +0200

    wallet-core: handle kyc-auth response in initial kyc-check response
---
 packages/taler-wallet-core/src/deposits.ts | 106 ++++++++++++++++-------------
 1 file changed, 60 insertions(+), 46 deletions(-)

diff --git a/packages/taler-wallet-core/src/deposits.ts 
b/packages/taler-wallet-core/src/deposits.ts
index e55251187..f21d91e9e 100644
--- a/packages/taler-wallet-core/src/deposits.ts
+++ b/packages/taler-wallet-core/src/deposits.ts
@@ -1273,7 +1273,8 @@ async function transitionToKycRequired(
   });
 
   const url = new URL(`kyc-check/${kycPaytoHash}`, exchangeUrl);
-  logger.info(`kyc url ${url.href}`);
+  logger.info(`kyc-check url ${url.href}`);
+  logger.info(`account owner pub: ${depositGroup.merchantPub}`);
   const kycStatusResp = await cancelableFetch(wex, url, {
     headers: {
       ["Account-Owner-Signature"]: sigResp.sig,
@@ -1281,51 +1282,64 @@ async function transitionToKycRequired(
     },
   });
   logger.trace(`response status of initial kyc-check: 
${kycStatusResp.status}`);
-  if (kycStatusResp.status === HttpStatusCode.Ok) {
-    logger.warn("kyc requested, but already fulfilled");
-    return TaskRunResult.backoff();
-  } else if (kycStatusResp.status === HttpStatusCode.Accepted) {
-    const statusResp = await readResponseJsonOrThrow(
-      kycStatusResp,
-      codecForAccountKycStatus(),
-    );
-    const transitionInfo = await wex.db.runReadWriteTx(
-      { storeNames: ["depositGroups", "transactionsMeta"] },
-      async (tx) => {
-        const dg = await tx.depositGroups.get(depositGroupId);
-        if (!dg) {
-          return undefined;
-        }
-        const oldTxState = computeDepositTransactionStatus(dg);
-        switch (dg.operationStatus) {
-          case DepositOperationStatus.LegacyPendingTrack:
-          case DepositOperationStatus.FinalizingTrack:
-            dg.operationStatus = DepositOperationStatus.PendingAggregateKyc;
-            break;
-          case DepositOperationStatus.PendingDeposit:
-            dg.operationStatus = DepositOperationStatus.PendingDepositKyc;
-            break;
-          default:
-            return;
-        }
-        dg.kycInfo = {
-          exchangeBaseUrl: exchangeUrl,
-          paytoHash: kycPaytoHash,
-          accessToken: statusResp.access_token,
-        };
-        await tx.depositGroups.put(dg);
-        await ctx.updateTransactionMeta(tx);
-        const newTxState = computeDepositTransactionStatus(dg);
-        return { oldTxState, newTxState, balanceEffect: BalanceEffect.Any };
-      },
-    );
-    notifyTransition(wex, ctx.transactionId, transitionInfo);
-    return TaskRunResult.progress();
-  } else {
-    throwUnexpectedRequestError(
-      kycStatusResp,
-      await readTalerErrorResponse(kycStatusResp),
-    );
+
+  switch (kycStatusResp.status) {
+    case HttpStatusCode.Ok: {
+      logger.warn("kyc requested, but already fulfilled");
+      return TaskRunResult.backoff();
+    }
+    case HttpStatusCode.Conflict: {
+      return await transitionToKycAuthRequired(
+        wex,
+        depositGroup,
+        kycPaytoHash,
+        exchangeUrl,
+      );
+    }
+    case HttpStatusCode.Accepted: {
+      const statusResp = await readResponseJsonOrThrow(
+        kycStatusResp,
+        codecForAccountKycStatus(),
+      );
+      const transitionInfo = await wex.db.runReadWriteTx(
+        { storeNames: ["depositGroups", "transactionsMeta"] },
+        async (tx) => {
+          const dg = await tx.depositGroups.get(depositGroupId);
+          if (!dg) {
+            return undefined;
+          }
+          const oldTxState = computeDepositTransactionStatus(dg);
+          switch (dg.operationStatus) {
+            case DepositOperationStatus.LegacyPendingTrack:
+            case DepositOperationStatus.FinalizingTrack:
+              dg.operationStatus = DepositOperationStatus.PendingAggregateKyc;
+              break;
+            case DepositOperationStatus.PendingDeposit:
+              dg.operationStatus = DepositOperationStatus.PendingDepositKyc;
+              break;
+            default:
+              return;
+          }
+          dg.kycInfo = {
+            exchangeBaseUrl: exchangeUrl,
+            paytoHash: kycPaytoHash,
+            accessToken: statusResp.access_token,
+          };
+          await tx.depositGroups.put(dg);
+          await ctx.updateTransactionMeta(tx);
+          const newTxState = computeDepositTransactionStatus(dg);
+          return { oldTxState, newTxState, balanceEffect: BalanceEffect.Any };
+        },
+      );
+      notifyTransition(wex, ctx.transactionId, transitionInfo);
+      return TaskRunResult.progress();
+    }
+    default: {
+      throwUnexpectedRequestError(
+        kycStatusResp,
+        await readTalerErrorResponse(kycStatusResp),
+      );
+    }
   }
 }
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]