public Pagamento RealizarPagamento(Pedido pedido, Pagamento pagamento) { pagamento.Valor = pedido.Produtos.Sum(p => p.Valor); Console.WriteLine("Iniciando Pagamento via Cartão de Crédito - Valor R$ " + pagamento.Valor); if (_pagamentoCartaoCreditoFacade.RealizarPagamento(pedido, pagamento)) { pagamento.Status = "Pago via Cartão de Crédito"; return(pagamento); } pagamento.Status = "Cartão de Crédito Recusado!"; return(pagamento); }
public static void Executar() { var produtos = new List <Produto> { new Produto { Nome = "Tenis Adidas", Valor = new Random().Next(500) }, new Produto { Nome = "Camisa Boliche", Valor = new Random().Next(500) }, new Produto { Nome = "Raquete Tenis", Valor = new Random().Next(500) } }; var pedido = new Pedido { Id = Guid.NewGuid(), Produtos = produtos }; var meioPagamentoCredito = new Pagamento { MeioPagamento = MeioPagamento.CartaoCredito, CartaoCredito = "5555 2222 5555 9999" }; var meioPagamentoBoleto = new Pagamento { MeioPagamento = MeioPagamento.Boleto }; var meioPagamentoTransferencia = new Pagamento { MeioPagamento = MeioPagamento.TransferenciaBancaria, CartaoCredito = "5555 2222 5555 9999" }; #region Forma Simples var pedidoCredito = new PedidoService( new PagamentoCartaoCreditoService( new PagamentoCartaoCreditoFacade( new PayPalGateway(), new ConfigurationManager()))); var pagamentoCredito = pedidoCredito.RealizarPagamento(pedido, meioPagamentoCredito); Console.WriteLine(pagamentoCredito.Status); Console.WriteLine("-------------------------------------------------------"); var pedidoBoleto = new PedidoService( new PagamentoBoletoService( new PagamentoBoletoFacade())); var pagamentoBoleto = pedidoBoleto.RealizarPagamento(pedido, meioPagamentoBoleto); Console.WriteLine(pagamentoBoleto.Status); Console.WriteLine("-------------------------------------------------------"); var pedidoTransferencia = new PedidoService( new PagamentoTransferenciaService( new PagamentoTransferenciaFacade())); var pagamentoTransferencia = pedidoTransferencia.RealizarPagamento(pedido, meioPagamentoBoleto); Console.WriteLine(pagamentoTransferencia.Status); Console.WriteLine("-------------------------------------------------------"); #endregion #region Forma Elegante var pedidoCredito2 = new PedidoService(PagamentoFactory.CreatePagamento(meioPagamentoCredito.MeioPagamento)); var pagamentoCredito2 = pedidoCredito2.RealizarPagamento(pedido, meioPagamentoCredito); Console.WriteLine(pagamentoCredito2.Status); Console.WriteLine("-------------------------------------------------------"); var pedidoBoleto2 = new PedidoService(PagamentoFactory.CreatePagamento(meioPagamentoBoleto.MeioPagamento)); var pagamentoBoleto2 = pedidoBoleto2.RealizarPagamento(pedido, meioPagamentoBoleto); Console.WriteLine(pagamentoBoleto2.Status); Console.WriteLine("-------------------------------------------------------"); var pedidoTransferencia2 = new PedidoService(PagamentoFactory.CreatePagamento(meioPagamentoTransferencia.MeioPagamento)); var pagamentoTransferencia2 = pedidoTransferencia2.RealizarPagamento(pedido, meioPagamentoTransferencia); Console.WriteLine(pagamentoTransferencia2.Status); #endregion }