public bool TemAcesso(Usuario usuario)
        {
            var dbUsuario = usuarioServico.BuscarPorId(usuario.Id);

            cartaoServico.DescriptografarCartoes(dbUsuario.Pessoa.Cartoes);

            var participante = new Participant().FromUsuario(dbUsuario);

            participante.catalogId = clubeSettings.Credentials.CatalogId;
            participante.clientId  = clubeSettings.Credentials.ClientId;
            participante.profileId = clubeSettings.Credentials.ProfileId;

            var premiarClube = new PremiarClubeProvider(clubeSettings);
            var authenticatedPremiarClube = premiarClube.Me(participante);

            var temAcesso = authenticatedPremiarClube.TemAcesso();

            if (!temAcesso)
            {
                premiarClube.Participantes.Criar(participante);

                var cartao = dbUsuario.Pessoa.Cartoes.FirstOrDefault();
                cartao.DadosClube = JsonConvert.SerializeObject(participante);
                cartaoServico.Criptografar(cartao);
                cartaoServico.Salvar(cartao);

                //CreditarPontos(participante);
                temAcesso = authenticatedPremiarClube.TemAcesso();
            }

            if (temAcesso)
            {
                throw new RedirectException(204, $"https://{clubeSettings.Credentials.CampaignName}.premmiar.com.br/#/auth?access_token={authenticatedPremiarClube.Participantes.Api.RawToken}");
            }

            return(temAcesso);
        }
Пример #2
0
        public Resposta <PedidoModelView> Finalizar([FromBody] Pedido entity)
        {
            if (entity.ListaCompra != null)
            {
                entity.ListaCompra = _listaCompraServico.BuscarPorId(entity.ListaCompra.Id);
            }

            var pessoa = entity.Usuario.Pessoa;

            var senhaCartao = entity.Cartao.Senha;
            var pedido      = _pedidoServico.ValidarESalvar(entity);

            pedido.Cartao = pedido.Cartao == null ? pedido.Cartao : _cartaoServico.DescriptografarCartao(pedido.Cartao);

            string retornoApi;
            var    retorno = new RespostaTransacaoCartaoModelView();

            if (ConfigurationManager.AppSettings["API_REALIZA_TRANSACAO"] == "0")
            {
                retornoApi = "sucesso";
            }
            else
            {
                pedido.Cartao.Decrypted = false;
                pedido.Cartao           = _cartaoServico.DescriptografarCartao(pedido.Cartao);

                switch (ConfigurationManager.AppSettings["API_REALIZA_TRANSACAO_FORMA_PAGAMENTO"])
                {
                case "0":
                {
                    //MobSeg
                    var cpf = pessoa.Documentos.FirstOrDefault(x => x.Tipo == (int)TipoDocumento.Cpf)?.Numero;

                    retornoApi = _apiTransacaoCartao.RealizaTransacaoCartao(Convert.ToInt64(cpf?.Replace(".", "").Replace("-", "")), 0,
                                                                            pedido.Cartao?.NumeroSemMascara, pedido.Cartao?.Validade.Replace("/", ""), pedido.Cartao?.Cvv, pedido.ListaCompra.Total.ToString("######.00").Replace(",", "").Replace(".", ""));

                    retorno = new JavaScriptSerializer().Deserialize <RespostaTransacaoCartaoModelView>(retornoApi);
                }
                break;

                case "1":
                {
                    //PayZen
                    var retornoKeyValue = Aplicacao.apipayzen.ApiPayzenBase.CreatePayment(pedido);
                    retornoApi = retornoKeyValue.Value;
                    retorno    = new RespostaTransacaoCartaoModelView
                    {
                        CodigoResposta = retornoKeyValue.Key,
                        Mensagem       = retornoKeyValue.Value
                    };
                }
                break;

                case "2":
                {
                    //MeuVale
                    var cpf = pessoa.Documentos.FirstOrDefault(x => x.Tipo == (int)TipoDocumento.Cpf)?.Numero;

                    pedido.CodEstabelecimentoInfox = pedido.Loja.CodigoInfox;
                    var pedidoModel = new Aplicacao.ApiInfox.Models.PedidoCompraModelView
                    {
                        Cliente = new Aplicacao.ApiInfox.Models.ClienteModelView
                        {
                            Id         = pessoa.CodClienteInfox,
                            CodCliente = pessoa.CodClienteInfox,
                            Pessoa     = new Aplicacao.ApiInfox.Models.PessoaModelView
                            {
                                Cpf            = cpf?.Replace(".", "").Replace("-", ""),
                                DataNascimento = pessoa.DataNascimento
                            },
                            Cartao = new Aplicacao.ApiInfox.Models.CartaoModelView
                            {
                                NomeImpresso = pedido.Cartao?.NomeImpresso,
                                Numero       = pedido.Cartao?.NumeroSemMascara.ExtractLettersAndNumbers(),
                                Cvv          = pedido.Cartao?.Cvv,
                                Senha        = senhaCartao
                            }
                        },
                        ValorPedido        = pedido.Valor.ToString("F2").Replace(",", "").Replace(".", ""),
                        CodEstabelecimento = pedido.CodEstabelecimentoInfox
                    };
                    retornoApi = _apiTransacaoCartaoInfox.CompraAVista(new JavaScriptSerializer().Serialize(pedidoModel));

                    var responseJson = new JavaScriptSerializer().Deserialize <Aplicacao.ApiInfox.Models.ResponseModelView>(retornoApi);

                    pedido.NSURedeRXInfox = responseJson.NSU_RedeRX;

                    pedido.Cartao = _cartaoServico.Criptografar(_cartaoServico.BuscarPorId(pedido.Cartao.Id));
                    _pedidoServico.Salvar(pedido);

                    retorno = new RespostaTransacaoCartaoModelView
                    {
                        CodigoResposta = responseJson.CodResp,
                        Mensagem       = responseJson.StrResp
                    };

                    if (responseJson.Return > 0)
                    {
                        _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoNaoAprovado, pedido.Usuario, responseJson.StrResp, responseJson.Return.ToString());

                        throw new BusinessRuleException($"Resultado: {responseJson.Return} - {responseJson.StrResp}");
                    }

                    retorno = new RespostaTransacaoCartaoModelView
                    {
                        CodigoResposta = responseJson.CodResp,
                        Mensagem       = responseJson.StrResp
                    };

                    _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);

                    _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.AguardandoAvaliacao, pedido.Usuario, "Sua avaliação é muito importante para nós");

                    return(new Resposta <PedidoModelView>
                        {
                            Mensagem = responseJson.Return == 0 ? "Pagamento realizado com sucesso! Loja: " + pedido.Loja.Descricao + " Valor: R$ " + pedido.Valor.ToString("N2") : "Falha ao processar o pagamento com a operadora do cartão!",
                            ObjetoRetorno = new PedidoModelView(pedido),
                            TipoMensagem = responseJson.Return == 0 ? TipoModal.Success : TipoModal.Danger
                        });
                }

                case "3":
                {
                    //Ebanx
                    var retornoEbanx = _apiTransacaoEbanx.CompraDireta(pedido);
                    var retornoJson  = Newtonsoft.Json.JsonConvert.SerializeObject(retornoEbanx);

                    retornoApi = retornoJson;

                    pedido.Cartao = _cartaoServico.Criptografar(_cartaoServico.BuscarPorId(pedido.Cartao.Id));
                    _pedidoServico.Salvar(pedido);

                    retorno = new RespostaTransacaoCartaoModelView
                    {
                        CodigoResposta = retornoEbanx.Code,
                        Mensagem       = retornoEbanx.Message
                    };

                    if (retorno.CodigoResposta != "OK")
                    {
                        _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoNaoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);
                        throw new BusinessRuleException($"Resultado: {retorno.CodigoResposta} - {retorno.Mensagem}");
                    }

                    _pedidoServico.ModificaStatus(pedido.Id, StatusPedido.AguardandoPagamento, pedido.Usuario, codigoRetornoTransacao: retornoEbanx.payment?.hash);

                    return(new Resposta <PedidoModelView>
                        {
                            Mensagem = retorno.CodigoResposta == "OK" ? "Pagamento solicitado com sucesso!" : "Falha ao processar o pagamento com a operadora do cartão!",
                            ObjetoRetorno = new PedidoModelView(pedido),
                            TipoMensagem = retorno.CodigoResposta == "OK" ? TipoModal.Success : TipoModal.Danger
                        });
                }

                default:
                    retornoApi = "sucesso";
                    break;
                }

                pedido.Cartao = _cartaoServico.Criptografar(_cartaoServico.BuscarPorId(pedido.Cartao.Id));
            }

            if (retornoApi.Contains("sucesso"))
            {
                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);

                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.AguardandoConfirmacao, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);
            }
            else
            {
                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoNaoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);
            }

            var pedidoRetorno = _pedidoServico.BuscarPorId(pedido.Id);

            pedidoRetorno.ListaCompra = _listaCompraServico.AtribuiDescontoAListaCompra(pedidoRetorno.ListaCompra);

            pedidoRetorno.Cartao.Decrypted = false;
            pedidoRetorno.Cartao           = _cartaoServico.DescriptografarCartao(pedidoRetorno.Cartao);
            pedidoRetorno.AvaliacaoPedido  = new AvaliacaoPedido {
                ItensDeAcordoComAnuncio = false, NotaAplicativo = 0, NotaPedido = 0
            };

            return(new Resposta <PedidoModelView>
            {
                Mensagem = retornoApi.Contains("sucesso") ? "Compra realizada com sucesso!" : "Falha ao processar o pagamento com a operadora do cartão!",
                ObjetoRetorno = new PedidoModelView(pedidoRetorno),
                TipoMensagem = retornoApi.Contains("sucesso") ? TipoModal.Success : TipoModal.Danger
            });
        }
Пример #3
0
        public Resposta <Pedido> Finalizar([FromBody] Pedido entity)
        {
            entity.ListaCompra = _listaCompraServico.BuscarPorId(entity.ListaCompra.Id);

            var pedido = _pedidoServico.ValidarESalvar(entity);

            pedido.Cartao = pedido.Cartao == null ? pedido.Cartao : _cartaoServico.DescriptografarCartao(pedido.Cartao);

            var    cpf = pedido.Usuario.Pessoa.Documentos.FirstOrDefault(x => x.Tipo == (int)TipoDocumento.Cpf)?.Numero;
            string retornoApi;
            var    retorno = new RespostaTransacaoCartaoModelView();

            if (ConfigurationManager.AppSettings["API_REALIZA_TRANSACAO"] == "0")
            {
                retornoApi = "sucesso";
            }
            else
            {
                pedido.Cartao.Decrypted = false;
                pedido.Cartao           = _cartaoServico.DescriptografarCartao(pedido.Cartao);

                switch (ConfigurationManager.AppSettings["API_REALIZA_TRANSACAO_FORMA_PAGAMENTO"])
                {
                case "0":
                    //MobSeg
                    retornoApi = _apiTransacaoCartao.RealizaTransacaoCartao(Convert.ToInt64(cpf?.Replace(".", "").Replace("-", "")), 0,
                                                                            pedido.Cartao?.NumeroSemMascara, pedido.Cartao?.Validade.Replace("/", ""), pedido.Cartao?.Cvv, pedido.ListaCompra.Total.ToString("######.00").Replace(",", "").Replace(".", ""));

                    retorno = new JavaScriptSerializer().Deserialize <RespostaTransacaoCartaoModelView>(retornoApi);
                    break;

                case "1":
                    //PayZen
                    var retornoKeyValue = Aplicacao.apipayzen.ApiPayzenBase.CreatePayment(pedido);
                    retornoApi = retornoKeyValue.Value;
                    retorno    = new RespostaTransacaoCartaoModelView
                    {
                        CodigoResposta = retornoKeyValue.Key,
                        Mensagem       = retornoKeyValue.Value
                    };
                    break;

                default:
                    retornoApi = "sucesso";
                    break;
                }

                pedido.Cartao = _cartaoServico.Criptografar(_cartaoServico.BuscarPorId(pedido.Cartao.Id));
            }

            if (retornoApiInfox.Contains("sucesso"))
            {
                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);

                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.AguardandoConfirmacao, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);
            }
            else
            {
                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoNaoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);
            }

            var pedidoRetorno = _pedidoServico.BuscarPorId(pedido.Id);

            pedidoRetorno.ListaCompra = _listaCompraServico.AtribuiDescontoAListaCompra(pedidoRetorno.ListaCompra);

            pedidoRetorno.Cartao.Decrypted = false;
            pedidoRetorno.Cartao           = _cartaoServico.DescriptografarCartao(pedidoRetorno.Cartao);

            return(new Resposta <Pedido>
            {
                Mensagem = retornoApiInfox.Contains("sucesso") ? "Compra realizada com sucesso!" : "Falha ao processar o pagamento com a operadora do cartão!",
                ObjetoRetorno = pedidoRetorno,
                TipoMensagem = retornoApiInfox.Contains("sucesso") ? TipoModal.Success : TipoModal.Danger
            });
        }