public void checkRequestStatus(object source, ElapsedEventArgs e, long paymentID, long userID, long amount) { Debug.WriteLine("GIRDI"); PaymentInsert pInsert = new PaymentInsert(Configuration, _hostingEnvironment); string smsXML = @$ "<request point = " "3587" "><status id=" "{paymentID}" "/></request >"; KeyManager.SetKeyPath($"{_hostingEnvironment.ContentRootPath}/wwwroot/private.pem"); string certificate = KeyManager.GenerateSignature(smsXML, Encoding.UTF8); var smsContent = new StringContent(smsXML, Encoding.UTF8, "text/xml"); //smsContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml"); string smsUrl = $"https://smartpay.az/external/extended"; HttpClient smsClient = new HttpClient(); smsClient.DefaultRequestHeaders.Add("paylogic-signature", certificate); var smsRslt = smsClient.PostAsync(smsUrl, smsContent).Result; var smsResp = smsRslt.Content.ReadAsStringAsync().Result; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(smsResp); XmlNodeList parentNode = xmlDoc.GetElementsByTagName("result"); foreach (XmlNode childrenNode in parentNode) { int state = Convert.ToInt32(childrenNode.Attributes["state"].Value); int substate = Convert.ToInt32(childrenNode.Attributes["substate"].Value); int final = Convert.ToInt32(childrenNode.Attributes["final"].Value); if (final == 1) { aTimer.Stop(); aTimer.Enabled = false; pInsert.UpdateTransaction(paymentID, state, substate, final); switch (state) { case 60: pInsert.WithdrawUserBalance(userID, amount); break; default: break; } //status.response = 1;//ugurlu } } }
public Status WithdrawFunds(long mobile, string pass, long account, long serviceID, long amount) { Status status = new Status(); try { //(amount / 100) % 1 == 0 if (amount > 100) { PaymentSelect pSelect = new PaymentSelect(Configuration, _hostingEnvironment); long smartpayServiceID = pSelect.GetSmartpayServiceID(serviceID); if (smartpayServiceID > 0) { DbSelect select = new DbSelect(Configuration, _hostingEnvironment); long userID = select.getUserIdByMobile(mobile, pass); if (userID > 0) { decimal earningValue = pSelect.GetUserEarningValue(userID); if (earningValue > amount / 100) { if (account.ToString().Length == 9) { PaymentInsert pInsert = new PaymentInsert(Configuration, _hostingEnvironment); long paymentID = pInsert.InsertTransaction(userID, serviceID, amount, account); if (paymentID > 0) { DateTime now = DateTime.Now; string smsXML = @$ "<request point=" "3587" "> <payment account = " "{account}" " check = " "24776" " date = " "{DateTime.Now.ToString(" yyyy - MM - ddTHH : mm : sszz00 ")}" " id = " "{paymentID}" " service = " "{smartpayServiceID}" " source = " "CASH" " sum = " "{amount}" "> <attribute name = " "id2" " value = " "pack" "/> </payment> </request>"; KeyManager.SetKeyPath($"{_hostingEnvironment.ContentRootPath}/wwwroot/private.pem"); string certificate = KeyManager.GenerateSignature(smsXML, Encoding.UTF8); var smsContent = new StringContent(smsXML, Encoding.UTF8, "text/xml"); //smsContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml"); string smsUrl = $"https://smartpay.az/external/extended"; HttpClient smsClient = new HttpClient(); smsClient.DefaultRequestHeaders.Add("paylogic-signature", certificate); var smsRslt = smsClient.PostAsync(smsUrl, smsContent).Result; var smsResp = smsRslt.Content.ReadAsStringAsync().Result; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(smsResp); XmlNodeList parentNode = xmlDoc.GetElementsByTagName("result"); if (parentNode.Count > 0) { foreach (XmlNode childrenNode in parentNode) { int state = Convert.ToInt32(childrenNode.Attributes["state"].Value); int substate = Convert.ToInt32(childrenNode.Attributes["substate"].Value); int final = Convert.ToInt32(childrenNode.Attributes["final"].Value); if (state == 60 && substate == 0 && final == 1) { pInsert.UpdateTransaction(paymentID, state, substate, final); pInsert.WithdrawUserBalance(userID, amount); status.response = 1; //ugurlu //Debug.WriteLine(""); } else if (state == 0 || state == 30 || state == 40 || state == 70) { pInsert.UpdateTransaction(paymentID, state, substate, final); StartCheckRequestTimer(paymentID, userID, amount); status.response = 2;//gozlemededi } else { pInsert.UpdateTransaction(paymentID, state, substate, final); status.response = 3;//odenish xetasi } } } else { status.response = 4; // signature and etc status.responseString = "Error"; } } else { status.response = 4; // error status.responseString = "Error"; } } else { status.response = 5;//wrong payNumber status.responseString = "check account"; } } else { status.response = 6;//access danied status.responseString = "not enough earning balance"; } } else { status.response = 7;//access danied status.responseString = "access danied"; } } else { status.response = 8; // service not found status.responseString = "Service not found"; } } else { status.response = 9; // service not found status.responseString = "wrong amount"; } } catch (Exception ex) { status.response = 4; // error status.responseString = $"Internal error: {ex.Message}"; } return(status); }