Пример #1
0
 public SaleServiceApp(ICreditCardService creditCardService, IStoreService storeService, IStoreAcquirerService storeAcquirerService, IAcquirerSaleService acquirerSaleService, IAntifraudClientService antifraudClientService, IAcquirerClientSaleService acquirerClientSaleService)
 {
     CreditCardService         = creditCardService;
     StoreService              = storeService;
     StoreAcquirerService      = storeAcquirerService;
     AcquirerSaleService       = acquirerSaleService;
     AntifraudClientService    = antifraudClientService;
     AcquirerClientSaleService = acquirerClientSaleService;
 }
        public static IAcquirerClientSaleService CreateInstance(string assembly)
        {
            var Force = typeof(PaymentGateway.AcquirerClient.Null.AcquirerClientSaleService).Assembly;
            var Type  = Assembly
                        .GetExecutingAssembly()
                        .GetReferencedAssemblies()
                        .Select(x => Assembly.Load(x))
                        .SelectMany(x => x.GetTypes()).Where(s => s.FullName.Contains(assembly)).First();
            IAcquirerClientSaleService Instance = (IAcquirerClientSaleService)Activator.CreateInstance(Type);

            return(Instance);
        }
Пример #3
0
        public void CreateSale(Sale sale)
        {
            CreditCard    CreditCard    = CreditCardService.Search(c => c.CreditCardNumber == sale.CreditCardNumber, nameof(CreditCard.CreditCardBrand)).First();
            Store         Store         = StoreService.Search(c => c.Id == sale.StoreId, nameof(Store.Antifraud)).First();
            StoreAcquirer StoreAcquirer = StoreAcquirerService.Search(c => c.IdCreditCardBrand == CreditCard.Id && c.IdStore == Store.Id, nameof(StoreAcquirer.Acquirer)).First();

            // Instancia o client configurado
            if (AcquirerClientSaleService.GetType() == typeof(AcquirerClient.Null.AcquirerClientSaleService))
            {
                AcquirerClientSaleService = AcquirerClientSaleServiceFactory.CreateInstance(StoreAcquirer.Acquirer.Assembly);
            }

            AcquirerSale AcquirerSale = new AcquirerSale()
            {
                Store              = StoreAcquirer.Store,
                Acquirer           = StoreAcquirer.Acquirer,
                CreditCardPayments = new List <CreditCardPayment>()
                {
                    new CreditCardPayment()
                    {
                        AmountInCents = sale.AmmountInCents,
                        CreditCard    = CreditCard
                    }
                }
            };

            // Verificar se acquirer usa autorizacao
            if (StoreAcquirer.Store.AntifraudEnabled)
            {
                // Antifraud
                AntifraudClientService.Execute(ref AcquirerSale);

                if (!AcquirerSale.Authorized)
                {
                    return;
                }
            }

            AcquirerClientSaleService.Create(ref AcquirerSale);

            // Registra resultado da operação
            AcquirerSaleService.Add(AcquirerSale);
        }