//private string UR = ""; public async Task <Models.prepagotaemodel.respuesta> DoREPTAE(string carrier, string referencia, string monto) { var client = new RestClient("https://demo.prepagotae.com/services/ventasSoap?wsdl="); var request = new RestRequest(Method.POST); request.AddHeader("Postman-Token", "b3cc836c-2f6c-4613-854d-7d609f0a28e3"); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Content-Type", "text/xml"); request.AddParameter("undefined", "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:soap=\"http://soap/\">\r\n <soapenv:Header/>\r\n <soapenv:Body>\r\n <soap:recargaTae>\r\n <user>" + UI + "</user>\r\n <password>" + PI + "</password>\r\n <carrier>" + carrier + "</carrier>\r\n <telefono>" + referencia + "</telefono>\r\n <monto>" + monto + "</monto>\r\n </soap:recargaTae>\r\n </soapenv:Body>\r\n</soapenv:Envelope>", ParameterType.RequestBody); IRestResponse response = client.Execute(request); Models.prepagotaemodel.respuesta respuesta = new Models.prepagotaemodel.respuesta(); XmlDocument doc = new XmlDocument(); doc.LoadXml(response.Content.ToString()); XmlNodeList nodeList = doc.GetElementsByTagName("data"); string respuu = ""; foreach (XmlNode xmlNode in nodeList) { foreach (XmlNode xmlNode2 in xmlNode) { respuu = xmlNode2.Value; } } XmlDocument doc2 = new XmlDocument(); doc2.LoadXml(respuu); respuesta.codigo = doc2.SelectSingleNode("//codigo").InnerText; respuesta.autorizacion = doc2.SelectSingleNode("//autorizacion").InnerText; respuesta.mensaje = doc2.SelectSingleNode("//mensaje").InnerText; return(respuesta); }
public async Task <string> GetTransactioPrepaTaeRE(string carrier, string monto, string referencia) { Models.prepagotaemodel.respuesta respuesta = await getServicesR.DoREPTAE(carrier, referencia, monto); if (respuesta.Equals("0")) { data.updateEndTrans(respuesta.autorizacion, respuesta.autorizacion, "3"); return(""); } else { data.updateEndTrans(respuesta.codigo, respuesta.codigo, "4"); return("Error, " + respuesta.mensaje); } }
public async Task <Models.prepagotaemodel.respuesta> DoPSPTAE(string carrier, string referencia, string referencia2, string monto) { var client = new RestClient("https://demo.prepagotae.com/services/ventasSoap?wsdl="); var request = new RestRequest(Method.POST); request.AddHeader("Postman-Token", "d1e704c5-f1d5-4eab-8f1e-8b405ce31c4b"); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Content-Type", "text/xml"); request.AddParameter("undefined", "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:soap=\"http://soap/\">\r\n <soapenv:Header/>\r\n <soapenv:Body>\r\n <soap:pagoServicios>\r\n <user>" + UI + "</user>\r\n <password>" + PI + "</password>\r\n <idServicio>" + carrier + "</idServicio>\r\n <referencia>" + referencia + "</referencia>\r\n <digitoVerificador>" + referencia2 + "</digitoVerificador>\r\n <monto>" + monto + "</monto>\r\n </soap:pagoServicios>\r\n </soapenv:Body>\r\n</soapenv:Envelope>", ParameterType.RequestBody); IRestResponse response = client.Execute(request); Models.prepagotaemodel.respuesta respuesta = new Models.prepagotaemodel.respuesta(); XmlDocument doc = new XmlDocument(); doc.LoadXml(response.Content.ToString()); XmlNodeList nodeList = doc.GetElementsByTagName("data"); string respuu = ""; foreach (XmlNode xmlNode in nodeList) { foreach (XmlNode xmlNode2 in xmlNode) { respuu = xmlNode2.Value; } } XmlDocument doc2 = new XmlDocument(); doc2.LoadXml(respuu); respuesta.codigo = doc2.SelectSingleNode("//codigo").InnerText; try { respuesta.autorizacion = doc2.SelectSingleNode("//autorizacion").InnerText; } catch { } respuesta.mensaje = doc2.SelectSingleNode("//mensaje").InnerText; return(respuesta); }
public async Task <Models.centralRecargaAPIModel.respondeRE> DoRecargaElectronica(Models.centralRecargaAPIModel.recargaElectronica recargaElectronica, string via, string IP) { //login when its ready //after that, do check company balance vs service code vs suppliers balances Models.centralRecargaAPIModel.respondeRE responde = new Models.centralRecargaAPIModel.respondeRE(); double companyBalance = Convert.ToDouble(data.GetBalanceAvailable(recargaElectronica.APIK)); double serviceAmount = Convert.ToDouble(recargaElectronica.codigo.Split('-')[1]); double debit = serviceAmount - ((serviceAmount / 10) * data.GetFeeRE(recargaElectronica.APIK)); if (companyBalance >= debit) { string IDSupplier = data.GetBestBalanceAndSupplier(debit.ToString(), "saldorecargas"); string localTransactionID = data.GetLocalTransactionID(recargaElectronica.codigo, recargaElectronica.APIK, recargaElectronica.referencia, via, IP, IDSupplier, debit.ToString(), "0", recargaElectronica.codigo.Split('-')[1]); switch (IDSupplier) { case "1": Models.TaecelModel.RequestTXNModel requestTXN = GetServicesTaeCel.SendServiceRE(data.GetSupplierCode(recargaElectronica.codigo, IDSupplier), "0", recargaElectronica.referencia); if (requestTXN.success) { if (requestTXN.error.Equals(0)) { data.updateIdTrans(localTransactionID, requestTXN.data.transID); System.Threading.Thread.Sleep(2000); Models.TaecelModel.StatusTXNRE StatusTXNRE = GetServicesTaeCel.GetStatusTXNRE(requestTXN.data.transID); if (StatusTXNRE.error.Equals(0) || StatusTXNRE.message.Equals("Recarga Exitosa")) { data.updateEndTrans(requestTXN.data.transID, StatusTXNRE.data.Folio, "3"); string headerTicket = data.GetNotesticket(recargaElectronica.codigo, recargaElectronica.APIK); responde.ticket = "Recarga " + StatusTXNRE.data.Carrier + " exitosa. Folio:" + StatusTXNRE.data.Folio + " # Tel. " + StatusTXNRE.data.Telefono + " Monto:" + StatusTXNRE.data.Monto + " Hora:" + StatusTXNRE.data.Fecha + " "; responde.error = false; responde.fechaOperacion = StatusTXNRE.data.Fecha; responde.abono = "0.00"; responde.cargo = debit.ToString(); responde.transaccion = localTransactionID; responde.monto = serviceAmount.ToString(); responde.folio = StatusTXNRE.data.Folio; responde.aclaraciones = headerTicket.Split('|')[2]; responde.carrier = headerTicket.Split('|')[1]; responde.headerticket = headerTicket.Split('|')[0]; data.UpdateBalanceCia(debit.ToString(), recargaElectronica.APIK, IDSupplier, serviceAmount.ToString()); } else { data.updateEndTrans(requestTXN.data.transID, "", "4"); responde.ticket = "Error, transacción # " + localTransactionID + " " + StatusTXNRE.message; responde.error = true; } } } else { data.updateIdTrans(localTransactionID, localTransactionID); data.updateEndTrans(localTransactionID, "", "4"); responde.ticket = "Error, transacción # " + localTransactionID + " " + " Error en la respuesta del servicio, favor de reportar a soporte."; responde.error = true; } break; case "2": Models.prepagotaemodel.respuesta respuesta = await getServicesR.DoREPTAE(data.GetSupplierCode(recargaElectronica.codigo, IDSupplier), recargaElectronica.referencia, recargaElectronica.codigo.Split('-')[1]); if (respuesta.codigo.Equals("0")) { data.updateIdTrans(localTransactionID, respuesta.autorizacion); data.updateEndTrans(respuesta.autorizacion, respuesta.autorizacion, "3"); string headerTicket = data.GetNotesticket(recargaElectronica.codigo, recargaElectronica.APIK); responde.ticket = respuesta.mensaje; responde.error = false; responde.fechaOperacion = DateTime.Now.ToString(); responde.abono = "0.00"; responde.cargo = debit.ToString(); responde.transaccion = localTransactionID; responde.monto = serviceAmount.ToString(); responde.folio = respuesta.autorizacion; responde.aclaraciones = headerTicket.Split('|')[2]; responde.carrier = headerTicket.Split('|')[1]; responde.headerticket = headerTicket.Split('|')[0]; data.UpdateBalanceCia(debit.ToString(), recargaElectronica.APIK, IDSupplier, serviceAmount.ToString()); } else { data.updateIdTrans(localTransactionID, localTransactionID); data.updateEndTrans(localTransactionID, "", "4"); responde.ticket = "Error, transacción # " + localTransactionID + " " + respuesta.mensaje; responde.error = true; } break; case "3": break; default: responde.error = true; responde.ticket = "Ocurrió un problema en la transacción, le solicitamos reportar el código #318181002 al teléfono de contacto."; return(responde); } } else { responde.error = true; responde.ticket = "Saldo insuficiente, sólo cuenta con $ " + companyBalance.ToString(); } return(responde); }
public async Task <Models.centralRecargaAPIModel.respondeRE> DoPagoServicios(Models.centralRecargaAPIModel.pagoServicios pagoServicios, string via, string IP) { //login when its ready //after that, do check company balance vs service code vs suppliers balances Models.centralRecargaAPIModel.respondeRE responde = new Models.centralRecargaAPIModel.respondeRE(); double companyBalance = Convert.ToDouble(data.GetBalanceAvailable(pagoServicios.APIK)); double serviceAmount = Convert.ToDouble(pagoServicios.monto); double debit = serviceAmount + 5; if (companyBalance >= debit) { string IDSupplier = data.GetBestBalanceAndSupplier(debit.ToString(), "saldoservicios"); string localTransactionID = data.GetLocalTransactionIDPS(pagoServicios.codigo, pagoServicios.APIK, (pagoServicios.referencia + pagoServicios.referencia2), via, IP, IDSupplier, debit.ToString(), "0", pagoServicios.monto); switch (IDSupplier) { case "1": Models.TaecelModel.RequestTXNModel requestTXN = GetServicesTaeCel.SendServicePS(data.GetSupplierCode(pagoServicios.codigo, IDSupplier), pagoServicios.monto, pagoServicios.referencia); if (requestTXN.success) { if (requestTXN.error.Equals(0)) { Models.TaecelModel.StatusTXNRE StatusTXNRE = GetServicesTaeCel.GetStatusTXNRE(requestTXN.data.transID); if (StatusTXNRE.error.Equals(0) || StatusTXNRE.message.Equals("Recarga Exitosa")) { data.updateEndTrans(requestTXN.data.transID, StatusTXNRE.data.Folio, "3"); string headerTicket = data.GetNotesticket(pagoServicios.codigo, pagoServicios.APIK); responde.ticket = "Pago de servicio " + StatusTXNRE.data.Carrier + " exitosa. Folio:" + StatusTXNRE.data.Folio + " # Referencia. " + StatusTXNRE.data.Telefono + " Monto:" + StatusTXNRE.data.Monto + " Hora:" + StatusTXNRE.data.Fecha + " "; responde.error = false; responde.fechaOperacion = StatusTXNRE.data.Fecha; responde.abono = "0.00"; responde.cargo = debit.ToString(); responde.transaccion = localTransactionID; responde.monto = serviceAmount.ToString(); responde.folio = StatusTXNRE.data.Folio; responde.aclaraciones = headerTicket.Split('|')[2]; responde.carrier = headerTicket.Split('|')[1]; responde.headerticket = headerTicket.Split('|')[0]; data.UpdateBalanceCia(debit.ToString(), pagoServicios.APIK, IDSupplier, (serviceAmount + 5).ToString()); } else { data.updateEndTrans(requestTXN.data.transID, "", "4"); responde.ticket = "Error, transacción # " + localTransactionID + " " + StatusTXNRE.message; responde.error = true; } } } break; case "2": Models.prepagotaemodel.respuesta respuesta = await getServicesR.DoPSPTAE(data.GetCodeServiceSupplierPS(pagoServicios.codigo, IDSupplier), pagoServicios.referencia, pagoServicios.referencia2, pagoServicios.monto); if (respuesta.codigo.Equals("0")) { data.updateIdTrans(localTransactionID, respuesta.autorizacion); data.updateEndTrans(respuesta.autorizacion, respuesta.autorizacion, "3"); string headerTicket = data.GetNotesticket(pagoServicios.codigo, pagoServicios.APIK); responde.ticket = respuesta.mensaje; responde.error = false; responde.fechaOperacion = DateTime.Now.ToString(); responde.abono = "0.00"; responde.cargo = debit.ToString(); responde.transaccion = localTransactionID; responde.monto = serviceAmount.ToString(); responde.folio = respuesta.autorizacion; responde.aclaraciones = headerTicket.Split('|')[2]; responde.carrier = headerTicket.Split('|')[1]; responde.headerticket = headerTicket.Split('|')[0]; data.UpdateBalanceCia(debit.ToString(), pagoServicios.APIK, IDSupplier, (serviceAmount + 4).ToString()); } else { data.updateIdTrans(localTransactionID, localTransactionID); data.updateEndTrans(localTransactionID, "", "4"); responde.ticket = "Error, transacción # " + localTransactionID + " " + respuesta.mensaje; responde.error = true; } break; } } else { responde.error = true; responde.ticket = "Saldo insuficiente, sólo cuenta con $ " + companyBalance.ToString(); } return(responde); }