aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/deposits.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations/deposits.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/deposits.ts40
1 files changed, 26 insertions, 14 deletions
diff --git a/packages/taler-wallet-core/src/operations/deposits.ts b/packages/taler-wallet-core/src/operations/deposits.ts
index b529e5ead..71caae5b3 100644
--- a/packages/taler-wallet-core/src/operations/deposits.ts
+++ b/packages/taler-wallet-core/src/operations/deposits.ts
@@ -21,6 +21,7 @@ import {
AbsoluteTime,
AmountJson,
Amounts,
+ bytesToString,
CancellationToken,
canonicalJson,
codecForDepositSuccess,
@@ -35,6 +36,7 @@ import {
ExchangeDepositRequest,
GetFeeForDepositRequest,
getRandomBytes,
+ hashTruncate32,
hashWire,
HttpStatusCode,
Logger,
@@ -44,6 +46,7 @@ import {
PrepareDepositRequest,
PrepareDepositResponse,
RefreshReason,
+ stringToBytes,
TalerErrorCode,
TalerProtocolTimestamp,
TrackDepositGroupRequest,
@@ -59,6 +62,7 @@ import {
TransactionStatus,
} from "../db.js";
import { TalerError } from "../errors.js";
+import { checkKycStatus } from "../index.js";
import { InternalWalletState } from "../internal-wallet-state.js";
import { readSuccessResponseJsonOrThrow } from "../util/http.js";
import { OperationAttemptResult } from "../util/retries.js";
@@ -151,7 +155,28 @@ export async function processDepositGroup(
if (depositGroup.transactionPerCoin[i] !== TransactionStatus.Wired) {
const track = await trackDepositPermission(ws, depositGroup, perm);
- updatedTxStatus = txStatusFromTrack(track);
+
+ if (track.type === "accepted") {
+ if (!track.kyc_ok && track.requirement_row !== undefined) {
+ updatedTxStatus = TransactionStatus.KycRequired;
+ const { requirement_row: requirementRow } = track;
+ const paytoHash = encodeCrock(
+ hashTruncate32(stringToBytes(depositGroup.wire.payto_uri + "\0")),
+ );
+ await checkKycStatus(
+ ws,
+ perm.exchange_url,
+ { paytoHash, requirementRow },
+ "individual",
+ );
+ } else {
+ updatedTxStatus = TransactionStatus.Accepted;
+ }
+ } else if (track.type === "wired") {
+ updatedTxStatus = TransactionStatus.Wired;
+ } else {
+ updatedTxStatus = TransactionStatus.Unknown;
+ }
}
if (updatedTxStatus !== undefined || updatedDeposit !== undefined) {
@@ -199,19 +224,6 @@ export async function processDepositGroup(
return OperationAttemptResult.finishedEmpty();
}
-function txStatusFromTrack(t: TrackTransaction): TransactionStatus {
- if (t.type === "accepted") {
- if (!t.kyc_ok && t.requirement_row !== undefined) {
- return TransactionStatus.KycRequired;
- }
- return TransactionStatus.Accepted;
- }
- if (t.type === "wired") {
- return TransactionStatus.Wired;
- }
- return TransactionStatus.Unknown;
-}
-
export async function trackDepositGroup(
ws: InternalWalletState,
req: TrackDepositGroupRequest,