public async Task <ProcessPaymentResult> HandleAsync(ProcessPaymentCommand command) { var bankPayemntResult = await _acuquiryBank.ProcessPayment(new BankPaymentRequest { Amount = command.Amount, Currency = command.Currency, CardExpiryYear = command.CardExpiryYear, CardExpiryMonth = command.CardExpiryMonth, CardNumber = command.CardNumber, CVV = command.CVV, MerchantId = Guid.NewGuid().ToString() }); var encriptionKey = Guid.NewGuid().ToString("N"); var encriptedCardNumber = _cryptoService.Encrypt(command.CardNumber, encriptionKey); var encriptedCardMonth = _cryptoService.Encrypt(command.CardExpiryMonth, encriptionKey); var encriptedCardDay = _cryptoService.Encrypt(command.CardExpiryYear, encriptionKey); var encriptedCardCVV = _cryptoService.Encrypt(command.CVV, encriptionKey); var payment = new Payment { Id = Guid.NewGuid().ToString(), EncriptionKey = encriptionKey, CardNumber = encriptedCardNumber, CardExpiryMonth = encriptedCardMonth, CardExpiryYear = encriptedCardDay, CVV = encriptedCardCVV, Amount = command.Amount, Currency = command.Currency, MerchantId = command.MerchantId, }; payment.BankPaymentIdentifier = bankPayemntResult.PaymentIdentifier; payment.PaymentStatus = bankPayemntResult.PaymentStatus; await _paymentRepository.Save(payment); if (bankPayemntResult.PaymentStatus == PaymentStatus.Success) { return(new SuccessResult(payment.Id)); } else { return(new ErrorResult("The Bank was unable to process the payment")); } }
public async Task <ProcessPaymentResult> Handle(ProcessPaymentCommand command, CancellationToken cancellationToken) { _logger.Information("starting acquring bank payment request"); var bankPayemntResult = await _acuquiryBank.ProcessPayment(new BankPaymentRequest { Amount = command.Amount, Currency = command.Currency, CardExpiryYear = command.CardExpiryYear, CardExpiryMonth = command.CardExpiryMonth, CardNumber = command.CardNumber, CVV = command.CVV, MerchantId = Guid.NewGuid().ToString() }); var encriptionKey = Guid.NewGuid().ToString("N"); var encriptedCardNumber = _cryptoService.Encrypt(command.CardNumber, encriptionKey); var encriptedCardMonth = _cryptoService.Encrypt(command.CardExpiryMonth, encriptionKey); var encriptedCardYear = _cryptoService.Encrypt(command.CardExpiryYear, encriptionKey); var encriptedCardCVV = _cryptoService.Encrypt(command.CVV, encriptionKey); var payment = new Payment(encriptedCardNumber, encriptedCardMonth, encriptedCardYear, command.Amount, command.Currency, encriptedCardCVV, encriptionKey, bankPayemntResult.PaymentIdentifier, bankPayemntResult.PaymentStatus); await _paymentRepository.AppendChanges(payment); if (bankPayemntResult.PaymentStatus == PaymentStatus.Success) { _logger.Information("bank payment successful"); return(new SuccessResult(payment.Id.ToString())); } else { _logger.Error("The Bank was unable to process the payment"); return(new ErrorResult("The Bank was unable to process the payment")); } }