public static void Mask(ref PaymentProcessEntity entity) { var sb = new StringBuilder("XXXX-XXXX-XXXX-"); sb.Append(entity.CardNumber.Substring(12)); entity.CardNumber = sb.ToString(); }
public async Task <PaymentProcessResponse> ExecuteAsync(PaymentProcessRequest request) { _logger.LogInformation($"Validating payment on context {request.ContextId}"); _ruleEngine.ProcessRules(request); _logger.LogInformation("Encrypting credit card data"); var encryptedData = this._encryptionClient.Encrypt(request.CardStringRepresentation); _logger.LogInformation($"Creating request to bank entity"); var clientResponse = await _bankClient.CreatePaymentAsync(new BankPayment { Amount = request.Amount, Deny = request.CardType == CardType.Other, CardEncryptedData = encryptedData }); var entity = new PaymentProcessEntity { Amount = request.Amount, CardNumber = request.CardNumber, CardType = request.CardType, CVV = request.CVV, Currency = request.Currency, RegistrationTime = request.RegistrationTime, ContextId = request.ContextId, BankResponse = clientResponse.BankResponseId, BankResponseStatus = clientResponse.BankResponseId == Guid.Empty ? PaymentStatus.NoAnswer : (PaymentStatus)clientResponse.Status }; _logger.LogInformation($"Storing payment process request on database"); await _repository.WriteAsync(entity); return(new PaymentProcessResponse { ContextId = entity.ContextId, PaymentAcceptanceStatus = entity.BankResponseStatus, PaymentProcessId = entity.Id }); }
public async Task WriteAsync(PaymentProcessEntity entity) { _context.ProcessPaymentEntities.Add(entity); await _context.SaveChangesAsync(); }