diff --git a/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts b/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts index b7c821b4c..ccdeaf821 100644 --- a/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts +++ b/src/subdomains/core/buy-crypto/process/services/buy-crypto-preparation.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common'; +import { ConflictException, Injectable } from '@nestjs/common'; import { Config } from 'src/config/config'; import { TransactionStatus } from 'src/integration/sift/dto/sift.dto'; import { SiftService } from 'src/integration/sift/services/sift.service'; @@ -210,7 +210,11 @@ export class BuyCryptoPreparationService { if (entity.amlCheck === CheckStatus.FAIL) void this.siftService.buyCryptoTransaction(entity, TransactionStatus.FAILURE); } catch (e) { - this.logger.error(`Error during buy-crypto ${entity.id} AML check:`, e); + if (e instanceof ConflictException) { + this.logger.warn(`Error during buy-crypto ${entity.id} AML check:`, e); + } else { + this.logger.error(`Error during buy-crypto ${entity.id} AML check:`, e); + } } } } diff --git a/src/subdomains/supporting/realunit/realunit.service.ts b/src/subdomains/supporting/realunit/realunit.service.ts index 51934d9a2..c3ee3a2d3 100644 --- a/src/subdomains/supporting/realunit/realunit.service.ts +++ b/src/subdomains/supporting/realunit/realunit.service.ts @@ -60,6 +60,7 @@ import { FeeService } from 'src/subdomains/supporting/payment/services/fee.servi import { SwissQRService } from 'src/subdomains/supporting/payment/services/swiss-qr.service'; import { TransactionRequestService } from 'src/subdomains/supporting/payment/services/transaction-request.service'; import { TransactionService } from 'src/subdomains/supporting/payment/services/transaction.service'; +import { isClientError } from 'src/tracing'; import { transliterate } from 'transliteration'; import { AssetPricesService } from '../pricing/services/asset-prices.service'; import { PriceCurrency, PriceValidity, PricingService } from '../pricing/services/pricing.service'; @@ -611,10 +612,12 @@ export class RealUnitService { price: Math.round(request.amount * 100), }); } catch (error) { + const upstreamStatus = error?.response?.status; const message = error?.response?.data ? JSON.stringify(error.response.data) : error?.message || error; - this.logger.error( + this.logger.warn( `Failed to request payment instructions from Aktionariat for request ${requestId} (currency: ${fiat.name}, shares: ${Math.floor(request.estimatedAmount)}, price: ${Math.round(request.amount * 100)}): ${message}`, ); + if (isClientError(upstreamStatus)) throw new BadRequestException(`Aktionariat API error: ${message}`); throw new ServiceUnavailableException(`Aktionariat API error: ${message}`); }