Beispiel #1
0
 // POST /Cielo/token/
 public HttpResponseMessage Post(string token, [FromBody] Cielo param)
 {
     try
     {
         HttpResponseMessage retorno = new HttpResponseMessage();
         if (Permissoes.Autenticado(token))
         {
             return(Request.CreateResponse <Int32>(HttpStatusCode.OK, GatewayCielo.Add(token, param)));
         }
         else
         {
             return(Request.CreateResponse(HttpStatusCode.Unauthorized));
         }
     }
     catch
     {
         throw new HttpResponseException(HttpStatusCode.InternalServerError);
     }
 }
Beispiel #2
0
 // DELETE /Cielo/token/id
 public HttpResponseMessage Delete(string token, Int32 id)
 {
     try
     {
         HttpResponseMessage retorno = new HttpResponseMessage();
         if (Permissoes.Autenticado(token))
         {
             GatewayCielo.Delete(token, id);
             return(Request.CreateResponse(HttpStatusCode.OK));
         }
         else
         {
             return(Request.CreateResponse(HttpStatusCode.Unauthorized));
         }
     }
     catch
     {
         throw new HttpResponseException(HttpStatusCode.InternalServerError);
     }
 }
Beispiel #3
0
 // GET /Cielo/token/colecao/campo/orderBy/pageSize/pageNumber?CAMPO1=VALOR&CAMPO2=VALOR
 public HttpResponseMessage Get(string token, int colecao = 0, int campo = 0, int orderBy = 0, int pageSize = 0, int pageNumber = 0)
 {
     try
     {
         Dictionary <string, string> queryString = Request.GetQueryNameValuePairs().ToDictionary(x => x.Key, x => x.Value);
         HttpResponseMessage         retorno     = new HttpResponseMessage();
         if (Permissoes.Autenticado(token))
         {
             return(Request.CreateResponse <Retorno>(HttpStatusCode.OK, GatewayCielo.Get(token, colecao, campo, orderBy, pageSize, pageNumber, queryString)));
         }
         else
         {
             return(Request.CreateResponse(HttpStatusCode.Unauthorized));
         }
     }
     catch
     {
         throw new HttpResponseException(HttpStatusCode.InternalServerError);
     }
 }
Beispiel #4
0
        public async Task <IActionResult> Send([FromBody] Order order,
                                               [FromServices] AntiFraudConfigurations antiFraudConfigurations,
                                               [FromServices] GatewayCieloConfigurations gatewayCieloConfigurations)
        {
            var user = JsonConvert.DeserializeObject <User>(HttpContext.Session.GetString("User").ToString());
            var urlAntiFraudApiLogin = antiFraudConfigurations.Url + (antiFraudConfigurations.Port != string.Empty ? ":" + antiFraudConfigurations.Port : "") + antiFraudConfigurations.LoginApi;
            var urlAntiFraudApiOrder = antiFraudConfigurations.Url + (antiFraudConfigurations.Port != string.Empty ? ":" + antiFraudConfigurations.Port : "") + antiFraudConfigurations.OrderApi;

            eAntiFraudSatus statusAntiFraud = eAntiFraudSatus.NotRequired;

            if (user.HasAntiFraud)
            {
                var objJson = JsonConvert.SerializeObject(new {
                    Login = new {
                        ApiKey       = user.AntiFraudApiKey,
                        ClientID     = user.AntiFraudClientID,
                        ClientSecret = user.AntiFraudClientSecret
                    }
                });

                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    HttpResponseMessage response = await client.PostAsync(urlAntiFraudApiLogin, new StringContent(objJson, Encoding.UTF8, "application/json"));

                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        response.EnsureSuccessStatusCode();
                        string responseBody = await response.Content.ReadAsStringAsync();

                        var obj = JsonConvert.DeserializeObject <AntiFraudAuthToken>(responseBody);

                        var objJsonOrder = JsonConvert.SerializeObject(new
                        {
                            ApiKey     = user.AntiFraudApiKey,
                            LoginToken = obj.Token.value,
                            Order      = order
                        });

                        HttpResponseMessage responseOrder = await client.PostAsync(urlAntiFraudApiOrder, new StringContent(objJsonOrder, Encoding.UTF8, "application/json"));

                        if (responseOrder.StatusCode == HttpStatusCode.OK)
                        {
                            responseOrder.EnsureSuccessStatusCode();
                            string responseBodyOrder = await responseOrder.Content.ReadAsStringAsync();

                            var objCheckFraud = JsonConvert.DeserializeObject <ResponseSend>(responseBodyOrder);

                            if (objCheckFraud.Orders.Status != "APA")
                            {
                                return(BadRequest(new
                                {
                                    message = "Fluxo de pagamento deverá ser interrompido - Codigo:" + objCheckFraud.Orders.Status,
                                    status = "fail",
                                    StatusCode = HttpStatusCode.BadGateway
                                }));
                            }
                            else
                            {
                                statusAntiFraud = eAntiFraudSatus.Valid;
                            }
                        }
                        else
                        {
                            return(BadRequest(new
                            {
                                message = "Erro na requisição",
                                status = "fail",
                                StatusCode = HttpStatusCode.BadGateway
                            }));
                        }
                    }
                    else
                    {
                        return(BadRequest(new
                        {
                            message = "Registro não realizado.",
                            status = "fail",
                            StatusCode = HttpStatusCode.BadGateway
                        }));
                    }
                }
            }

            bool result = false;

            GatewayCielo objPay = null;

            if (statusAntiFraud == eAntiFraudSatus.NotRequired || statusAntiFraud == eAntiFraudSatus.Valid)
            {
                order.User = user;
                order.IdentificationCode = Guid.NewGuid().ToString();
                result = _orderDao.Save(order);

                if (result)
                {
                    var urlGateWayCielo = gatewayCieloConfigurations.Url + gatewayCieloConfigurations.SalesApi;

                    for (int i = 0; i < order.Payment.Length; i++)
                    {
                        var objJSonCielo = JsonConvert.SerializeObject(new
                        {
                            MerchantOrderId = order.IdentificationCode,
                            Customer        = new
                            {
                                Name = order.BillingData.Name
                            },
                            Payment = new
                            {
                                Type           = "CreditCard",
                                Amount         = order.Payment[i].Amount,
                                Installments   = order.Payment[i].QtyInstallments,
                                SoftDescriptor = user.Name,
                                CreditCard     = new
                                {
                                    CardNumber     = order.Payment[i].CardNumber,
                                    Holder         = order.Payment[i].CardHolderName,
                                    ExpirationDate = order.Payment[i].CardExpirationDate,
                                    SecurityCode   = order.Payment[i].SecurityCode,
                                    Brand          = DefineCardBrandCielo(order.Payment[i].CardType)
                                }
                            }
                        });

                        using (var clientCielo = new HttpClient())
                        {
                            clientCielo.DefaultRequestHeaders.Accept.Clear();
                            clientCielo.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                            clientCielo.DefaultRequestHeaders.Add("MerchantId", gatewayCieloConfigurations.MerchantId);
                            clientCielo.DefaultRequestHeaders.Add("MerchantKey", gatewayCieloConfigurations.MerchantKey);
                            clientCielo.DefaultRequestHeaders.Add("RequestId", "");

                            HttpResponseMessage response = await clientCielo.PostAsync(urlGateWayCielo, new StringContent(objJSonCielo, Encoding.UTF8, "application/json"));

                            if (response.StatusCode == HttpStatusCode.Created)
                            {
                                response.EnsureSuccessStatusCode();
                                string responseBody = await response.Content.ReadAsStringAsync();

                                objPay = JsonConvert.DeserializeObject <GatewayCielo>(responseBody);
                            }
                            else
                            {
                                BadRequest(new
                                {
                                    message    = "Pagamento não registrado.",
                                    status     = "fail",
                                    StatusCode = HttpStatusCode.NotAcceptable
                                });
                            }
                        }
                    }
                }
            }
            else
            {
                BadRequest(new
                {
                    message    = "Registro não realizado - Falha Anti Fraude.",
                    status     = "fail",
                    StatusCode = HttpStatusCode.NotAcceptable
                });
            }

            if (result)
            {
                return(Ok(new
                {
                    message = "Registrado com sucesso",
                    status = "success",
                    orderId = order.IdentificationCode,
                    Payment = objPay
                }));
            }
            else
            {
                return(BadRequest(new
                {
                    message = "Registro não realizado.",
                    status = "fail",
                    StatusCode = HttpStatusCode.NotAcceptable
                }));
            }
        }