public Payment( PaymentId paymentId, string cardNumber, decimal amount, string currency, DateTimeOffset operationDate, Result <BankAuthorizationId> bankAuthorizationResult) { PaymentId = paymentId; CardNumber = cardNumber; Amount = amount; Currency = currency; OperationDate = operationDate; BankAuthorizationResult = bankAuthorizationResult; }
public async Task <Result <PaymentId> > ProcessAsync(ValidPaymentRequest request) { var authorizationRequest = await _bankClient.CreateBankRequestAsync(request); var authorizationResult = await _bankClient.AuthorizeAsync(authorizationRequest); var paymentId = PaymentId.GenerateNew(); var payment = new Payment( paymentId: paymentId, cardNumber: Masking.GetMask(request.CardNumber), amount: request.Amount, currency: request.Currency, operationDate: DateTimeOffset.UtcNow, bankAuthorizationResult: authorizationResult); await _repository.PutAsync(payment); return(authorizationResult.IsSuccess ? Result <PaymentId> .CreateSuccess(paymentId) : Result <PaymentId> .CreateFailure(paymentId)); }