public PlatformService( PaymentSystemContext context, IHashingService hashingService) { _context = context; _hashingService = hashingService; }
public SellerService( PaymentSystemContext context, IHashingService hashingService) { _context = context; _hashingService = hashingService; }
public static Merchant Get(string token, PaymentSystemContext context) { lock (LockObject) { Load(context); return(_cache.FirstOrDefault(x => x.Token == token)); } }
public static Terminal Get(int id, PaymentSystemContext context) { lock (LockObject) { Load(context); return(_cache.FirstOrDefault(x => x.Id == id)); } }
public static IList <Terminal> All(PaymentSystemContext context) { lock (LockObject) { Load(context); return(_cache.ToList()); } }
private static void Load(PaymentSystemContext context) { if (_loaded) { return; } _cache = context.Merchant.Include(i => i.MerchantIpRange).ToList(); _loaded = true; }
public SellerController( ISellerService sellerService, PaymentSystemContext context, IAccountProvider accountProvider) { _sellerService = sellerService; _context = context; _accountProvider = accountProvider; }
private static void Load(PaymentSystemContext context) { if (_loaded) { return; } _cache = context.Terminal.ToList(); _loaded = true; }
public OperationManagerService(PaymentSystemContext dbContext, ProcessingFactory processingFactory, TerminalSelectorService terminalSelector, ILogger <OperationManagerService> logger, RemoteContainerService <PaymentData> remoteContainer) { _dbContext = dbContext; _processingFactory = processingFactory; _terminalSelector = terminalSelector; _logger = logger; _remoteContainer = remoteContainer; }
public IProcessing GetProcessing(int id, PaymentSystemContext dbContext) { lock (LockObject) { if (!Cache.ContainsKey(id)) { var processingDb = dbContext.Processing.FirstOrDefault(x => x.Id == id); if (processingDb == null) { throw new Exception($"No processing with id-[{id}]"); } Cache[id] = Create(processingDb); } return(Cache[id]); } }
private static void SeedData(PaymentSystemContext context) { try { //get data from json file and seed data in DB for test. var file = File.ReadAllText("DummyData/DummyData.json"); var dummyData = JsonConvert.DeserializeObject <IEnumerable <Account> >(file); context.AddRange(dummyData); context.SaveChanges(); } catch (Exception) { //not adding any data to DB if exceptions return; } }
public CommonApiResponse After3Ds(Submit3Ds submit3Ds, [FromServices] SessionManagerService sessionManager, [FromServices] OperationManagerService operationManager, [FromServices] PaymentSystemContext dbContext) { var merchant = (Merchant)HttpContext.Items["Merchant"]; var operation3ds = dbContext.Operation3ds.Include(x => x.Operation).FirstOrDefault(x => x.LocalMd == submit3Ds.MD); if (operation3ds == null || operation3ds.Operation.OperationStatus != OperationStatus.AdditionalAuth) { return new DebitResponse { Error = new ApiError(InnerError.CommonError) } } ; var session = dbContext.Session.Include(x => x.Operation).First(x => x.Id == operation3ds.Operation.SessionId); if (session.MerchantId != merchant.Id) { return new DebitResponse { Error = new ApiError(InnerError.CommonError) } } ; var possibility = operationManager.CheckPaymentPossibility(session, operation3ds.Operation); if (possibility != PaymentPossibility.PaymentAllowed) { return new DebitResponse { Error = new ApiError(InnerError.CommonError) } } ; var result = operationManager.Deposit(session, operation3ds, submit3Ds); return(new DebitResponse { Status = result.OperationStatus }); } } }
public ContentResult Pay(string Id, [FromServices] SessionManagerService sessionManager, [FromServices] OperationManagerService operationManager, [FromServices] FormManagerService formManager, [FromServices] PaymentSystemContext dbContext, [FromServices] FormDataCryptService cryptService) { try { var session = sessionManager.Get(Id); if (session.SessionType != SessionType.OneStep && session.SessionType != SessionType.TwoStep) { return(base.Content(formManager.GetErrorForm())); } var result = operationManager.CheckPaymentPossibility(session); var dictionary = new Dictionary <string, string>(); switch (result) { case PaymentPossibility.LimitExceeded: case PaymentPossibility.SessionExpired: return(base.Content(formManager.GetErrorForm())); case PaymentPossibility.AlreadyPaid: return(base.Content(formManager.GetSuccessForm())); default: var generationTime = DateTime.UtcNow; session.LastFormGenerationTime = generationTime; session.TryCount++; dbContext.SaveChanges(); var formSign = new FormSign { GenerationTime = generationTime, SessionId = session.Id }; dictionary.Add("sessionId", session.ExternalId); dictionary.Add("code", cryptService.Crypt(formSign)); return(base.Content(formManager.GetPaymentForm(dictionary))); } } catch (Exception) { return(base.Content(formManager.GetErrorForm())); } }
public ContentResult Pay([FromForm] SubmitPay submitPay, [FromServices] OperationManagerService operationManager, [FromServices] FormManagerService formManager, [FromServices] PaymentSystemContext dbContext, [FromServices] FormDataCryptService cryptService) { if (string.IsNullOrEmpty(submitPay.ExternalId) || string.IsNullOrEmpty(submitPay.Code)) { return(base.Content(formManager.GetErrorForm())); } var formCrypt = cryptService.DeCrypt(submitPay.Code); var session = dbContext.Session.Include(x => x.Merchant).FirstOrDefault(x => x.Id == formCrypt.SessionId); if (session == null || session.ExternalId != submitPay.ExternalId || session.ExpireTime != formCrypt.GenerationTime) { return(base.Content(formManager.GetErrorForm())); } var paymentData = new PaymentData(submitPay.Pan, submitPay.Year, submitPay.Month, submitPay.Cvv); var result = operationManager.Deposit(session.Merchant, session, paymentData); switch (result.OperationStatus) { case OperationStatus.AdditionalAuth: return(base.Content(formManager.Get3DsForm(result.AdditionalAuth))); case OperationStatus.Pending: return(base.Content(formManager.GetPendingForm())); case OperationStatus.Success: return(base.Content(formManager.GetSuccessForm())); case OperationStatus.Redirected: return(base.Content(formManager.GetRedirectForm(result.RedirectedUrl))); case OperationStatus.Error: return(session.CanTryToPayAnotherTime ? base.Content(formManager.GetRedirectForm("/form/v1/pay")) : base.Content(formManager.GetErrorForm())); default: return(base.Content(formManager.GetErrorForm())); } }
public ContentResult From3Ds([FromForm] Submit3Ds submit3Ds, [FromServices] OperationManagerService operationManager, [FromServices] FormManagerService formManager, [FromServices] PaymentSystemContext dbContext) { var operation3ds = dbContext.Operation3ds.Include(x => x.Operation).FirstOrDefault(x => x.LocalMd == submit3Ds.MD); if (operation3ds == null || operation3ds.Operation.OperationStatus != OperationStatus.AdditionalAuth) { return(base.Content(formManager.GetErrorForm())); } var session = dbContext.Session.Include(x => x.Operation).First(x => x.Id == operation3ds.Operation.SessionId); var possibility = operationManager.CheckPaymentPossibility(session, operation3ds.Operation); if (possibility != PaymentPossibility.PaymentAllowed) { return(base.Content(formManager.GetErrorForm())); } var result = operationManager.Deposit(session, operation3ds, submit3Ds); switch (result.OperationStatus) { case OperationStatus.Pending: return(base.Content(formManager.GetPendingForm())); case OperationStatus.Success: return(base.Content(formManager.GetSuccessForm())); case OperationStatus.Redirected: return(base.Content(formManager.GetRedirectForm(result.RedirectedUrl))); case OperationStatus.Error: return(session.CanTryToPayAnotherTime ? base.Content(formManager.GetRedirectForm("/form/v1/pay")) : base.Content(formManager.GetErrorForm())); default: return(base.Content(formManager.GetErrorForm())); } }
public Repository(PaymentSystemContext dbContext) { _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); }
public TerminalSelectorService(PaymentSystemContext dbContext, IConfiguration configuration) { _dbContext = dbContext; _useCache = configuration.GetSection("Caching").GetValue <bool>("Terminals"); }
public SessionManagerService(PaymentSystemContext dbContext, ILogger <SessionManagerService> logger) { _dbContext = dbContext; _logger = logger; }
public CollectionRecordRepository(PaymentSystemContext dbContext) : base(dbContext) { }
//todo(max): add caching public AccountProvider(IHttpContextAccessor accessor, PaymentSystemContext context) { _httpContextAccessor = accessor; _context = context; }
public SellersController(PaymentSystemContext context, ISellerBS sellerBs) { _bs = sellerBs; _context = context; }
public MerchantManagerService(PaymentSystemContext dbContext, IConfiguration configuration) { _dbContext = dbContext; _useCache = configuration.GetSection("Caching").GetValue <bool>("Merchants"); }
public PaymentSystemController(PaymentSystemContext context) { _context = context; }
public TerminalsController(PaymentSystemContext context, ITerminalBS terminalBs) { _bs = terminalBs; _context = context; }
public SellerRepository(PaymentSystemContext context) : base(context) { paymentaymentSystemContext = context; }
public IdentityRepository(PaymentSystemContext dbContext) { _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); _userManager = new AppUserManager(new AppUserStore(dbContext)); }
public TerminalRepository(PaymentSystemContext context) : base(context) { PaymentSystemContext = context; }
public TokenService(PaymentSystemContext context) { _context = context; }
public AccrualLoanRepository(PaymentSystemContext dbContext) : base(dbContext) { }