// 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); } }
// 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); } }
// 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); } }
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 })); } }