public string FinpayNWSC(string CustRefence, string Area, string EXREF, string DRACCBRANCH, string DRACCOUNTNUMBER, string DRAMOUNT, string DRACCURR, string TXNDATE, string TXNTIME, string PhoneNumber, string CustRemarks, string Location) { string ReferenceNumberx = ""; string Areax = ""; string OutstandingBalx = ""; string CustNamex = ""; string PropertyRefx = ""; string CustomerErrorx = ""; string OriginalReference = ""; OriginalReference = CustRefence; string[] FCDBSetting = null; string FCDBSetings = ""; string FCDBINTERNALGL = ""; string FCDBTELLERCODE = ""; string FCDBDESC = ""; string FCDBTILLID = ""; string FCDBLIMIT = ""; string FCDBMAKERy = ""; string FCDBCHECKERy = ""; string Subhosty = ""; string Msgtypey = ""; string Procodey = ""; string Commissiony = ""; string Trantypey = ""; string Terminaly = ""; string Batchy = ""; string MessageFlagy = ""; string Workstationy = ""; string PosConfirmedy = ""; string PosReversedy = ""; string EftSourcey = ""; string IbTxny = ""; string Flexuseridy = ""; string UtilityAccountY = ""; string UtilityAccBranchY = ""; string UtilityAccCurrencyY = ""; string MerchantTypeY = ""; string sp_reference = ""; bool isrepeat = false; bool istransacted = false; bool issuccess = false; string valuefield = ""; var FailureDetailsinfo = new NWSCFCDBResponse(); var WaterDetailsinfo = new NWSCFCDBResponse(); Datamanagement.PushWaterCustReferenceDetails(CustRefence, Location); Thread.Sleep(5000); string CustReferenceDetials = Datamanagement.getWaterCustRefDetails(CustRefence); string[] Custrefdets = null; Custrefdets = CustReferenceDetials.Split('|'); ReferenceNumberx = Custrefdets[0]; Areax = Custrefdets[1]; OutstandingBalx = Custrefdets[2]; CustNamex = Custrefdets[3]; PropertyRefx = Custrefdets[4]; CustomerErrorx = Custrefdets[5]; switch (CustomerErrorx) { case "NONE": //Continue break; default: //Do Zilch FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.NWSCReferenceNumber = CustRefence; FailureDetailsinfo.Area = Area; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <NWSCFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new NWSCFailureDetials() { Remark = CustomerErrorx, Responcecode = "05" }); return("UNSUCCESSFUL"); break; } sp_reference = ReferenceNumberx + "-" + CustNamex; //Get FCDB details here FCDBSetings = Datamanagement.getFCDBSettings("NWSC"); FCDBSetting = FCDBSetings.Split('|'); FCDBINTERNALGL = FCDBSetting[0]; FCDBTELLERCODE = FCDBSetting[1]; FCDBDESC = FCDBSetting[2]; FCDBTILLID = FCDBSetting[3]; FCDBLIMIT = FCDBSetting[4]; FCDBMAKERy = FCDBSetting[5]; FCDBCHECKERy = FCDBSetting[6]; Subhosty = FCDBSetting[7]; Msgtypey = FCDBSetting[8]; Procodey = FCDBSetting[9]; Commissiony = FCDBSetting[10]; Trantypey = FCDBSetting[11]; Terminaly = FCDBSetting[12]; Batchy = FCDBSetting[13]; MessageFlagy = FCDBSetting[14]; Workstationy = FCDBSetting[15]; PosConfirmedy = FCDBSetting[16]; PosReversedy = FCDBSetting[17]; EftSourcey = FCDBSetting[18]; IbTxny = FCDBSetting[19]; Flexuseridy = FCDBSetting[20]; UtilityAccountY = FCDBSetting[21]; UtilityAccBranchY = FCDBSetting[22]; UtilityAccCurrencyY = FCDBSetting[23]; MerchantTypeY = FCDBSetting[24]; istransacted = Datamanagement.isalreadyTransacted(CustRefence); switch (istransacted) { case true: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.NWSCReferenceNumber = CustRefence; FailureDetailsinfo.Area = Area; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <NWSCFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new NWSCFailureDetials() { Remark = "Payment reference has already been transacted", Responcecode = "05" }); return("UNSUCCESSFUL"); break; default: break; } CustRefence = CustRefence + Trantypey; string MyRef = (OriginalReference.ToString()).Trim().Replace(" ", "").ToUpper() + System.DateTime.Today.ToString("yyMMdd") + System.DateTime.Now.ToString("hhmmss") + "UTIL"; valuefield = Datamanagement.getFinpayGlobalDetails( "select * from Payments where CustomerRefNumber = '" + OriginalReference + "' AND STATUS= 'Posted' AND AccountNumber= '" + DRACCOUNTNUMBER + "' AND AMOUNTPAID= '" + DRAMOUNT + "' AND VALUEDATE='" + TXNDATE + "' and phonenumber='" + PhoneNumber + "'", "CustomerRefNumber"); if (valuefield == "") { valuefield = Datamanagement.getFinpayGlobalDetails( "select * from PaymentsArchive where CustomerRefNumber = '" + OriginalReference + "' AND STATUS= 'Posted' AND AccountNumber= '" + DRACCOUNTNUMBER + "' AND AMOUNTPAID= '" + DRAMOUNT + "' AND VALUEDATE='" + TXNDATE + "' and phonenumber='" + PhoneNumber + "'", "CustomerRefNumber"); } switch (valuefield) { case "": break; default: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.NWSCReferenceNumber = CustRefence; FailureDetailsinfo.Area = Area; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <NWSCFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new NWSCFailureDetials() { Remark = "Payment reference has already been transacted", Responcecode = "05" }); return("UNSUCCESSFUL"); break; } //check whether transaction already sent to the bridge isrepeat = Datamanagement.isalreadyPosted(MyRef); if (isrepeat == false) { //post to the bridge Datamanagement.InsertIntoLog(MyRef, Subhosty, Msgtypey, Procodey, TXNDATE, TXNTIME, DRACCBRANCH, CustRefence, CustRefence, DRAMOUNT, Commissiony, DRACCOUNTNUMBER, MerchantTypeY, EXREF, Terminaly, DRACCBRANCH, Batchy, Terminaly, sp_reference, DRACCOUNTNUMBER, DRACCURR, "0", MessageFlagy, Workstationy, PosConfirmedy, PosReversedy, "0", UtilityAccountY, UtilityAccBranchY, MerchantTypeY, EftSourcey, IbTxny, "", Flexuseridy); } Thread.Sleep(5000); issuccess = Datamanagement.isSuccessful(MyRef); EXREF = Datamanagement.Ecternalref(MyRef); switch (issuccess) { case true: Datamanagement.IsertintoNWSCPayments(MyRef, "Energy Payment", UtilityAccBranchY, UtilityAccountY, CustNamex, OutstandingBalx, DRAMOUNT, "DIRECTDEBIT", DRACCBRANCH, DRACCOUNTNUMBER, "", OriginalReference, PhoneNumber, CustRemarks, FCDBMAKERy, Procodey, TXNDATE, DRACCBRANCH, "", Areax); break; case false: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.NWSCReferenceNumber = OriginalReference; FailureDetailsinfo.Area = Area; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <NWSCFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new NWSCFailureDetials() { Remark = "Failed To Post To Core Banking", Responcecode = "05" }); return("UNSUCCESSFUL"); break; } //Notify Payments...joannah 9/7/2015 string VendorCode = ConfigurationManager.AppSettings["WaterVendorCode"]; string VendorPass = ConfigurationManager.AppSettings["WaterVendorPass"]; var service = new NWSCGateway.NWSCBillingInterface(); DateTime convertedDate = Convert.ToDateTime(TXNDATE); int convertedAmount = Int32.Parse(DRAMOUNT); var x = service.postCustomerTransactionsWithArea(OriginalReference, CustNamex, Areax, PhoneNumber, convertedDate, convertedAmount, MyRef, "DIRECTDEBIT", VendorCode, VendorPass); if (x.PostError == "NONE") { var strUpdate = " UPDATE Payments set NWSCStatus = 'Posted' where ReferenceNumber = OriginalReference "; try { using ( var conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Bridge"].ConnectionString)) { conn.Open(); using (var cmd = new SqlCommand(strUpdate, conn)) { var dr = cmd.ExecuteReader(); } } } catch (Exception ex) { } } else { var strUpdate = " UPDATE Payments set NWSCStatus = 'UnPosted' where ReferenceNumber = OriginalReference "; try { using ( var conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Bridge"].ConnectionString)) { conn.Open(); using (var cmd = new SqlCommand(strUpdate, conn)) { var dr = cmd.ExecuteReader(); } } } catch (Exception ex) { } } // notiffy that is wadey for you //RESPOND HERE WaterDetailsinfo.EXRef = EXREF; WaterDetailsinfo.NWSCReferenceNumber = OriginalReference; WaterDetailsinfo.PaymentAmount = DRAMOUNT; WaterDetailsinfo.WaterDetails = new List <NWSCDetials>(); WaterDetailsinfo.WaterDetails.Add(new NWSCDetials() { CustomerName = CustNamex, PropertyRef = PropertyRefx, OutstandingBal = OutstandingBalx, Responcecode = "00", CustomerError = CustRemarks }); return(WaterDetailsinfo.EXRef.ToString()); }
//joannah ..10/7/2015 public void notifyKCCA(string prn) { DataTable MyDataTable; string KCCAVendorCode = ConfigurationManager.AppSettings["KCCAVendorCode"]; string KCCAVendorPassword = ConfigurationManager.AppSettings["KCCAVendorPassword"]; string KCCASession_key = ConfigurationManager.AppSettings["KCCASession_Key"]; string KCCAHash = ConfigurationManager.AppSettings["KCCAHash"]; System.Net.ServicePointManager.CertificatePolicy = new MyPolicy(); string HashKey = MD5Hash(KCCASession_key + KCCAVendorCode + KCCAVendorPassword + KCCAHash); KCCAGateway.BankPaymentService x = new KCCAGateway.BankPaymentService(); //WebRequest.DefaultWebProxy = new WebProxy("http://" + ProxyIP + ":" + ProxyPort + "/", true); // ----------------------- Get Session Key -------------------------- var Sessionkey = new object(); try { Sessionkey = x.authenticate(KCCASession_key, KCCAVendorCode, KCCAVendorPassword, HashKey, ""); } catch (Exception ex) { } string KCCATransaction = ""; string skey = ""; string BankStatus = "C"; DataTable MyRst = new DataTable(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); StringReader strRdr = new StringReader(Sessionkey.ToString()); try { ds.ReadXml(strRdr); } catch (Exception ex) { } dt = ds.Tables [0]; skey = dt.Rows[0][1].ToString(); MyDataTable = Datamanagement.getKCCA(prn); DataRow dr = MyDataTable.Rows[0]; string MyRef = dr["CustomerRefNumber"].ToString(); string coin = dr["COIN"].ToString(); string DRAMOUNT = dr["AmountPaid"].ToString(); string DRACCBRANCH = dr["UtilityBranch"].ToString(); DateTime dt1 = Convert.ToDateTime(dr["ValueDate"]); string TXNDATE = String.Format("{0:MM/dd/yy}", dt1); //dr["ValueDate"].ToString(); //String.Format("{0:d}", dt); string TnxId = dr["ReferenceNumber"].ToString(); int Id = Convert.ToInt32(dr["PaymentId"].ToString()); //Create the Xml string var XmlMs = new MemoryStream(); var XmlTxtWtr = new XmlTextWriter(XmlMs, System.Text.Encoding.UTF8); XmlTxtWtr.Formatting = Formatting.Indented; XmlTxtWtr.Indentation = 4; XmlTxtWtr.WriteStartDocument(); XmlTxtWtr.WriteStartElement("transactionRecord"); XmlTxtWtr.WriteElementString("PRN", MyRef); XmlTxtWtr.WriteElementString("COIN", coin); XmlTxtWtr.WriteElementString("amountPaid", DRAMOUNT); XmlTxtWtr.WriteElementString("paymentDate", TXNDATE); XmlTxtWtr.WriteElementString("valueDate", TXNDATE); XmlTxtWtr.WriteElementString("status", BankStatus); XmlTxtWtr.WriteElementString("bankBranchCode", DRACCBRANCH); XmlTxtWtr.WriteElementString("transactionID", TnxId); XmlTxtWtr.WriteEndElement(); XmlTxtWtr.WriteEndDocument(); XmlTxtWtr.Flush(); var strmrdr = new StreamReader(XmlMs); XmlMs.Seek(0, SeekOrigin.Begin); KCCATransaction = strmrdr.ReadToEnd(); // KCCATransaction = KCCATransaction.Replace("encoding=""utf-8""", ""); // .Replace("encoding=""utf-8""", ""); HashKey = MD5Hash(skey + MyRef + KCCAHash); var KCCANotification = new KCCAGateway.BankPaymentService(); var validateresponse = KCCANotification.transact(skey, MyRef, KCCATransaction, HashKey, TnxId); //DataTable MyRst1 = new DataTable(); //MyRst1 = ds.Tables(0) //DataSet dts = new DataSet(); strRdr = new StringReader(validateresponse); ds.ReadXml(strRdr); if (dt.Rows[0][1].ToString() != "0") { //var stat = validateresponse. var strUpdate = "UPDATE KCCAPayments SET KCCAStatus='Posted' where PaymentId = Id"; string query1 = "Insert into KCCAPaymentsArchive Select * from KCCAPayments where CustmerRefNumber = " + prn; string query2 = "Delete from KCCAPayments where CustmerRefNumber =" + prn; try { using ( var conn = new System.Data.SqlClient.SqlConnection(WebConfigurationManager.ConnectionStrings["Bridge"].ConnectionString)) { conn.Open(); using (var cmd = new System.Data.SqlClient.SqlCommand(strUpdate, conn)) { var df = cmd.ExecuteReader(); } } } catch (Exception ex) { } //dat.DBAction("UPDATE KCCAPayments SET Authorized=1,Status = 'Posted' ,KCCAStatus='Posted',AuthorizedBy = '" & Session("userName") & "' where PaymentID = " & MyPayID & "", DataManagement.DBActionType.Update) } }
public string PayKCCA(string PRN, string data, string UTILITYACCOUNT, string Amount, string debitmobilenumber, string TXNDATE, string TXNTIME, string alertcontact, string EXREF) { var FailureDetailsinfo = new KCCAADAPAYResponse(); var KCCADetailsinfo = new KCCAADAPAYResponse(); string HashKey = MD5Hash(KCCASession_key + KCCAVendorCode + KCCAVendorPassword + KCCAHash); KCCAGateway.BankPaymentService x = new KCCAGateway.BankPaymentService(); // ----------------------- Get Session Key -------------------------- var Sessionkey = new object(); try { Sessionkey = x.authenticate(KCCASession_key, KCCAVendorCode, KCCAVendorPassword, HashKey, ""); } catch (Exception ex) { //result = ex.Message; } string skey = ""; //DataRow rw = null; DataSet ds = new DataSet(); DataTable dt = new DataTable(); StringReader strRdr = new StringReader(Sessionkey.ToString()); try { ds.ReadXml(strRdr); } catch (Exception ex) { //result = ex.Message; } dt = ds.Tables[0]; skey = dt.Rows[0][1].ToString(); // ------------------- Validate against prn -------------------------- string validateresponse = ""; try { validateresponse = x.verifyReference(skey, PRN, "", ""); } catch (Exception ex) { // result = ex.Message; } dt = new DataTable(); ds = new DataSet(); strRdr = new StringReader(validateresponse); try { ds.ReadXml(strRdr); } catch (Exception ex) { //result = ex.Message; } dt = ds.Tables[0]; string COIN, CUSTOMERNAME, PHONENUMBER, PRNDATE, EXPIRYDATE, AMOUNTDUE, PAYMENTCURRENCY, STATUS, StatusDescriptionx, balance, CustomerTypex; COIN = dt.Rows[0][1].ToString(); CUSTOMERNAME = dt.Rows[0][2].ToString(); PHONENUMBER = dt.Rows[0][3].ToString(); PRNDATE = dt.Rows[0][5].ToString(); EXPIRYDATE = dt.Rows[0][6].ToString(); AMOUNTDUE = dt.Rows[0][7].ToString(); StatusDescriptionx = "UNSUCCCESSFUL"; balance = ""; CustomerTypex = "POST PAID"; PAYMENTCURRENCY = ""; STATUS = dt.Rows[0][0].ToString(); Datamanagement.PushKCCACustReferenceDetails(PRN, COIN, CUSTOMERNAME, PHONENUMBER, PRNDATE, EXPIRYDATE, AMOUNTDUE, PAYMENTCURRENCY, STATUS); Thread.Sleep(5000); switch (STATUS) { case "A": break; default: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.CustReference = PRN; FailureDetailsinfo.PaymentAmount = Amount; FailureDetailsinfo.FailureDetails = new List <KCCAFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new KCCAFailureDetials() { Remark = StatusDescriptionx, Responcecode = "05" }); if (STATUS == "T") { return("Transaction Already Transacted"); } else if (STATUS == "X") { return("Transaction Has Expired "); } else { return("UNSUCCESSFULL"); } break; } string sp_reference = PRN + "-" + CUSTOMERNAME; bool istransacted = Datamanagement.isalreadyTransactedKCCA(PRN); switch (istransacted) { case true: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.CustReference = PRN; FailureDetailsinfo.PaymentAmount = Amount; FailureDetailsinfo.FailureDetails = new List <KCCAFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new KCCAFailureDetials() { Remark = "Payment reference has already been transacted", Responcecode = "05" }); return("UNSUCCESSFULL"); break; default: break; } string Trantypey = "FCDB"; PRN = PRN + Trantypey; string MyRef = (PRN.ToString()).Trim().Replace(" ", "").ToUpper() + System.DateTime.Today.ToString("yyMMdd") + System.DateTime.Now.ToString("hhmmss") + "UTIL"; Thread.Sleep(5000); //DEBIT CUSTOMER MOBILE MONEY ACCOUNT bool issuccess = true; string coin = Datamanagement.coin_(PRN); EXREF = "exref"; switch (issuccess) { case true: Datamanagement.IsertintoKCCAPayments(MyRef, "KCCA Payment", UTILITYACCOUNT, CUSTOMERNAME, balance, Amount, "mobile money payment", debitmobilenumber, PRN, CustomerTypex, alertcontact, "", TXNDATE, STATUS, StatusDescriptionx, "KCCA Payment", "0", "2", "", coin); break; case false: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.CustReference = PRN; FailureDetailsinfo.PaymentAmount = AMOUNTDUE; FailureDetailsinfo.FailureDetails = new List <KCCAFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new KCCAFailureDetials() { Remark = "Failed To Post To Core Banking", Responcecode = "05" }); return("UNSUCCESSFULL"); break; } //Notify KCCA Thread.Sleep(5000); notifyKCCA(PRN); //RESPOND HERE KCCADetailsinfo.EXRef = EXREF; KCCADetailsinfo.CustReference = PRN; KCCADetailsinfo.PaymentAmount = AMOUNTDUE; KCCADetailsinfo.KCCADetails = new List <KCCADetails>(); KCCADetailsinfo.KCCADetails.Add(new KCCADetails() { AmountPaid = AMOUNTDUE, Balance = AMOUNTDUE, CustomerName = CUSTOMERNAME, CustomerType = "", Remark = "", Responcecode = "00", StatusCode = STATUS, StatusDescription = StatusDescriptionx, FlexResponse = EXREF }); return(KCCADetailsinfo.EXRef.ToString()); }
public string FinpayUmeme(string CustRefence, string Area, string EXREF, string DRACCBRANCH, string DRACCOUNTNUMBER, string DRAMOUNT, string DRACCURR, string TXNDATE, string TXNTIME, string PhoneNumber, string CustRemarks, string Location) { string ReferenceNumberx = ""; string Areax = ""; string OutstandingBalx = ""; string CustNamex = ""; string PropertyRefx = ""; string CustomerErrorx = ""; string cust_ref_ = CustRefence; string OriginalReference = ""; OriginalReference = CustRefence; string[] FCDBSetting = null; string FCDBSetings = ""; string FCDBINTERNALGL = ""; string FCDBTELLERCODE = ""; string FCDBDESC = ""; string FCDBTILLID = ""; string FCDBLIMIT = ""; string FCDBMAKERy = ""; string FCDBCHECKERy = ""; string Subhosty = ""; string Msgtypey = ""; string Procodey = ""; string Commissiony = ""; string Trantypey = ""; string Terminaly = ""; string Batchy = ""; string MessageFlagy = ""; string Workstationy = ""; string PosConfirmedy = ""; string PosReversedy = ""; string EftSourcey = ""; string IbTxny = ""; string Flexuseridy = ""; string UtilityAccountY = ""; string UtilityAccBranchY = ""; string UtilityAccCurrencyY = ""; string MerchantTypeY = ""; string sp_reference = ""; bool isrepeat = false; bool istransacted = false; bool issuccess = false; string valuefield = ""; var FailureDetailsinfo = new UMEMEFCDBResponse(); var UmemeDetailsinfo = new UMEMEFCDBResponse(); Datamanagement.PushUmemeCustReferenceDetails(CustRefence); // System.Net.ServicePointManager.CertificatePolicy = new MyPolicy(); string UmemeVendorCode = ConfigurationManager.AppSettings["UMEMEVendorCode"]; string UmemeVendorPassword = ConfigurationManager.AppSettings["UMEMEVendorPass"]; UMEMEGateway.EPayment service = new UMEMEGateway.EPayment(); UMEMEGateway.Customer x = new UMEMEGateway.Customer(); var d = new object(); x = service.ValidateCustomer(OriginalReference, UmemeVendorCode, UmemeVendorPassword); var res = service.ValidateCustomer(CustRefence, UmemeVendorCode, UmemeVendorPassword); string remark = ""; string CustomerRef = res.CustomerRef; string CustomerName = res.CustomerName; string CustomerType = res.CustomerType; string Balance = Convert.ToString(res.Balance); string StatusCode = res.StatusCode; string StatusDescription = res.StatusDescription; Boolean auth = false; if (res.StatusDescription != "SUCCESS") { auth = false; remark = res.StatusDescription; } else { auth = true; remark = "Successful"; } Datamanagement.UpdateUMEMEDetails(CustRefence, CustomerName, CustomerType, Balance, StatusCode, StatusDescription, remark, auth); //umemept.Close(); // //Thread.Sleep(5000); string CustReferenceDetials = Datamanagement.getUmemeCustRefDetails(CustRefence); string[] Custrefdets = null; Custrefdets = CustReferenceDetials.Split('|'); ReferenceNumberx = Custrefdets[0]; //Areax = Custrefdets[1]; OutstandingBalx = Custrefdets[1]; CustNamex = Custrefdets[2]; string statuscodex = Custrefdets[3]; PropertyRefx = Custrefdets[4]; //CustomerErrorx = Custrefdets[5]; switch (PropertyRefx) { case "SUCCESS": //Continue break; default: //Do Zilch FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.CustReference = CustRefence; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <UmemeFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new UmemeFailureDetials() { Remark = CustomerErrorx, Responcecode = "05" }); return("UNSUCCESSFUL"); break; } sp_reference = ReferenceNumberx + "-" + CustNamex; //Get FCDB details here FCDBSetings = Datamanagement.getFCDBSettings("UMEME"); FCDBSetting = FCDBSetings.Split('|'); FCDBINTERNALGL = FCDBSetting[0]; FCDBTELLERCODE = FCDBSetting[1]; FCDBDESC = FCDBSetting[2]; FCDBTILLID = FCDBSetting[3]; FCDBLIMIT = FCDBSetting[4]; FCDBMAKERy = FCDBSetting[5]; FCDBCHECKERy = FCDBSetting[6]; Subhosty = FCDBSetting[7]; Msgtypey = FCDBSetting[8]; Procodey = FCDBSetting[9]; Commissiony = FCDBSetting[10]; Trantypey = FCDBSetting[11]; Terminaly = FCDBSetting[12]; Batchy = FCDBSetting[13]; MessageFlagy = FCDBSetting[14]; Workstationy = FCDBSetting[15]; PosConfirmedy = FCDBSetting[16]; PosReversedy = FCDBSetting[17]; EftSourcey = FCDBSetting[18]; IbTxny = FCDBSetting[19]; Flexuseridy = FCDBSetting[20]; UtilityAccountY = FCDBSetting[21]; UtilityAccBranchY = FCDBSetting[22]; UtilityAccCurrencyY = FCDBSetting[23]; MerchantTypeY = FCDBSetting[24]; istransacted = Datamanagement.isalreadyTransacted(CustRefence); switch (istransacted) { case true: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.CustReference = CustRefence; ////FailureDetailsinfo.Area = Area; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <UmemeFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new UmemeFailureDetials() { Remark = "Payment reference has already been transacted", Responcecode = "05" }); return("UNSUCCESSFUL"); break; default: break; } CustRefence = CustRefence + Trantypey; string MyRef = (OriginalReference.ToString()).Trim().Replace(" ", "").ToUpper() + System.DateTime.Today.ToString("yyMMdd") + System.DateTime.Now.ToString("hhmmss") + "UTIL"; valuefield = Datamanagement.getFinpayGlobalDetails( "select * from Payments where CustomerRefNumber = '" + OriginalReference + "' AND STATUS= 'Posted' AND AccountNumber= '" + DRACCOUNTNUMBER + "' AND AMOUNTPAID= '" + DRAMOUNT + "' AND VALUEDATE='" + TXNDATE + "' and phonenumber='" + PhoneNumber + "'", "CustomerRefNumber"); if (valuefield == "") { valuefield = Datamanagement.getFinpayGlobalDetails( "select * from PaymentsArchive where CustomerRefNumber = '" + OriginalReference + "' AND STATUS= 'Posted' AND AccountNumber= '" + DRACCOUNTNUMBER + "' AND AMOUNTPAID= '" + DRAMOUNT + "' AND VALUEDATE='" + TXNDATE + "' and phonenumber='" + PhoneNumber + "'", "CustomerRefNumber"); } switch (valuefield) { case "": break; default: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.CustReference = CustRefence; //FailureDetailsinfo.Area = Area; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <UmemeFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new UmemeFailureDetials() { Remark = "Payment reference has already been transacted", Responcecode = "05" }); return("UNSUCCESSFUL"); break; } //check whether transaction already sent to the bridge isrepeat = Datamanagement.isalreadyPosted(MyRef); if (isrepeat == false) { //post to the bridge Datamanagement.InsertIntoLog(MyRef, Subhosty, Msgtypey, Procodey, TXNDATE, TXNTIME, DRACCBRANCH, CustRefence, CustRefence, DRAMOUNT, Commissiony, DRACCOUNTNUMBER, MerchantTypeY, EXREF, Terminaly, DRACCBRANCH, Batchy, Terminaly, sp_reference, DRACCOUNTNUMBER, DRACCURR, "0", MessageFlagy, Workstationy, PosConfirmedy, PosReversedy, "0", UtilityAccountY, UtilityAccBranchY, MerchantTypeY, EftSourcey, IbTxny, "", Flexuseridy); } Thread.Sleep(5000); issuccess = Datamanagement.isSuccessful(MyRef); EXREF = Datamanagement.Ecternalref(MyRef); switch (issuccess) { case true: //joannah...7/8/2015 Datamanagement.IsertintoUmemePayments(MyRef, "Energy Payment", UtilityAccBranchY, UtilityAccountY, CustNamex, OutstandingBalx, DRAMOUNT, "DIRECTDEBIT", DRACCBRANCH, DRACCOUNTNUMBER, "", OriginalReference, "", PhoneNumber, CustRemarks, FCDBMAKERy, Procodey, TXNDATE, DRACCBRANCH, statuscodex, PropertyRefx, "", "", "", ""); break; case false: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.CustReference = CustRefence; //FailureDetailsinfo.Area = Area; FailureDetailsinfo.PaymentAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <UmemeFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new UmemeFailureDetials() { Remark = "Failed To Post To Core Banking", Responcecode = "05" }); return("UNSUCCESSFUL"); break; } //notify umeme payments..joannah 9/7/2015 PostUmemebill(CustRefence, OriginalReference, CustomerName, DRAMOUNT, "DIRECTDEBIT", "", PhoneNumber, remark, FCDBMAKERy, "254", TXNDATE, "", 0, "2", "2"); //RESPOND HERE UmemeDetailsinfo.EXRef = EXREF; UmemeDetailsinfo.CustReference = OriginalReference; UmemeDetailsinfo.PaymentAmount = DRAMOUNT; UmemeDetailsinfo.UmemeDetails = new List <UmemeDetials>(); UmemeDetailsinfo.UmemeDetails.Add(new UmemeDetials() { CustomerName = CustNamex, AmountPaid = OutstandingBalx, Responcecode = "00", Remark = CustRemarks }); return(UmemeDetailsinfo.EXRef.ToString()); }
public String FinpayURA(string CustPRN, string EXREF, string DRACCBRANCH, string DRACCOUNTNUMBER, string DRAMOUNT, string DRACCURR, string TXNDATE, string TXNTIME) { string TINc = ""; string TaxPayernamec = ""; string amountduec = ""; string ExpDatec = ""; string RegDatec = ""; string Remarkc = ""; string PRNResponse = ""; string OriginalPRN = ""; string FCDBSetings = ""; string FCDBINTERNALGL = ""; string FCDBTELLERCODE = ""; string FCDBDESC = ""; string FCDBTILLID = ""; string FCDBLIMIT = ""; string FCDBMAKERy = ""; string FCDBCHECKERy = ""; string Subhosty = ""; string Msgtypey = ""; string Procodey = ""; string Commissiony = ""; string Trantypey = ""; string Terminaly = ""; string Batchy = ""; string MessageFlagy = ""; string Workstationy = ""; string PosConfirmedy = ""; string PosReversedy = ""; string EftSourcey = ""; string IbTxny = ""; string Flexuseridy = ""; string UtilityAccountY = ""; string UtilityAccBranchY = ""; string UtilityAccCurrencyY = ""; string MerchantTypeY = ""; string statuscodex = ""; string[] FCDBSetting = null; bool isrepeat = false; bool istransacted = false; bool issuccess = false; bool isexisting = false; OriginalPRN = CustPRN; var FailureDetailsinfo = new URAFCDBResponse(); var TaxDetailsinfo = new URAFCDBResponse(); InterfaceUra IU = new InterfaceUra(); //string results_= IU.PullRegistrationDetails(CustPRN); //***** Lets Validate this before even bothering flex. try { // ---------------------- Validate the Prn ------------------------- System.Net.ServicePointManager.CertificatePolicy = new MyPolicy(); URAGateway.UraPmtService service = new URAGateway.UraPmtService(); eTaxPmtLibrary.UraEncryption uraEnc = new eTaxPmtLibrary.UraEncryption(); string EnctryptionAlgorith = "rijndael"; FinpayiSecurity.CryptoFactory CryptographyFactory = new FinpayiSecurity.CryptoFactory(); FinpayiSecurity.ICrypto Cryptographer = CryptographyFactory.MakeCryptographer(EnctryptionAlgorith); MyAPIPass = fn.GetFinpayParameter("Select ItemValue from Parameters where ItemKey = 'URAWEBPASS'"); MyAPIUserName = fn.GetFinpayParameter("Select ItemValue from Parameters where ItemKey = 'URAWEBUSER'"); string UraPassword = Cryptographer.Decrypt(MyAPIPass); string s = uraEnc.EncryptedData(UraPassword, x509Cert_ura); URAGateway.PaymentRegEntity res = service.GetPRNDetails(MyAPIUserName, s, System.Configuration.ConfigurationManager.AppSettings["BANK_SHORT_CODE"], CustPRN); string remark = ""; string TaxPayername = res.TaxpayerName; string amountdue = res.Amount; string TIN = res.Tin; string ExpDate = res.ExpiryDt; string RegDate = res.PaymentRegDt; string statuscode = res.StatusCode; if (amountdue != DRAMOUNT) { return("UNSUCCESSFUL - INVALID AMOUNT " + DRAMOUNT + " INSTEAD OF " + amountdue); } Boolean auth = false; switch (statuscode) { case "A": //auth = true; //remark = "Awaiting To Transact : " + res.StatusDesc; break; case "C": //auth = false; return("Registration has been cancelled by URA! : " + res.StatusDesc); //break; case "X": //auth = false; return("Registration has expired! : " + res.StatusDesc); //break; case "T": //auth = false; return("Registration has already been transacted! : " + res.StatusDesc); //break; default: //auth = false; return("Results Unknown! : " + res.StatusDesc); //break; } Datamanagement.PushRegistrationDetails(CustPRN); Datamanagement.UpdateURARegDetails(CustPRN, TaxPayername, amountdue, TIN, ExpDate, RegDate, remark, auth, statuscode); //urapt.Close(); } catch (Exception ex) { return(ex.Message); } //***** Thread.Sleep(5000); //Validate PRN here PRNResponse = Datamanagement.getPRNDetails(CustPRN); string[] prndets = null; prndets = PRNResponse.Split('|'); string sp_reference = ""; TINc = prndets[0]; TaxPayernamec = prndets[1]; amountduec = prndets[2]; ExpDatec = prndets[3]; RegDatec = prndets[4]; Remarkc = prndets[5]; statuscodex = prndets[6]; switch (statuscodex) { case "A": //Continue break; default: //Do Zilch FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.PRNNUMBER = CustPRN; FailureDetailsinfo.TaxAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <UraFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new UraFailureDetials() { Remark = Remarkc, statuscode = statuscodex, Responcecode = "05" }); return("UNSUCCESSFUL"); break; } //Get FCDB details here FCDBSetings = Datamanagement.getFCDBSettings("TAX"); FCDBSetting = FCDBSetings.Split('|'); FCDBINTERNALGL = FCDBSetting[0]; FCDBTELLERCODE = FCDBSetting[1]; FCDBDESC = FCDBSetting[2]; FCDBTILLID = FCDBSetting[3]; FCDBLIMIT = FCDBSetting[4]; FCDBMAKERy = FCDBSetting[5]; FCDBCHECKERy = FCDBSetting[6]; Subhosty = FCDBSetting[7]; Msgtypey = FCDBSetting[8]; Procodey = FCDBSetting[9]; Commissiony = FCDBSetting[10]; Trantypey = FCDBSetting[11]; Terminaly = FCDBSetting[12]; Batchy = FCDBSetting[13]; MessageFlagy = FCDBSetting[14]; Workstationy = FCDBSetting[15]; PosConfirmedy = FCDBSetting[16]; PosReversedy = FCDBSetting[17]; EftSourcey = FCDBSetting[18]; IbTxny = FCDBSetting[19]; Flexuseridy = FCDBSetting[20]; UtilityAccountY = FCDBSetting[21]; UtilityAccBranchY = FCDBSetting[22]; UtilityAccCurrencyY = FCDBSetting[23]; MerchantTypeY = FCDBSetting[24]; //Check if already transacted istransacted = Datamanagement.isalreadyTransacted(CustPRN); switch (istransacted) { case true: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.PRNNUMBER = CustPRN; FailureDetailsinfo.TaxAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <UraFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new UraFailureDetials() { Remark = "Registration has already been transacted", Responcecode = "05" }); return("UNSUCCESSFUL"); break; default: break; } CustPRN = CustPRN + Trantypey; sp_reference = CustPRN + "-" + TaxPayernamec; isexisting = Datamanagement.isalreadyExisting(OriginalPRN); switch (isexisting) { case true: //update source as fcdb Datamanagement.UpdatePRNSource(OriginalPRN, "FCDB"); break; case false: //insert into registration Datamanagement.insertnewfcdbpayment(OriginalPRN, TINc, TaxPayernamec, amountduec, RegDatec, ExpDatec, statuscodex, "FCDB"); break; } //update CLEAREDSTATUS here //Datamanagement.UpdateRegistration(CustPRN, "CLEARING CHEQUE"); //check whether transaction already sent to the bridge isrepeat = Datamanagement.isalreadyPosted(CustPRN); if (isrepeat == false) { //post to the bridge Datamanagement.InsertIntoLog(CustPRN, Subhosty, Msgtypey, Procodey, TXNDATE, TXNTIME, DRACCBRANCH, CustPRN, CustPRN, DRAMOUNT, Commissiony, DRACCOUNTNUMBER, MerchantTypeY, EXREF, Terminaly, DRACCBRANCH, Batchy, Terminaly, sp_reference, DRACCOUNTNUMBER, DRACCURR, "0", MessageFlagy, Workstationy, PosConfirmedy, PosReversedy, "0", UtilityAccountY, UtilityAccBranchY, MerchantTypeY, EftSourcey, IbTxny, "", Flexuseridy); } Thread.Sleep(5000); issuccess = Datamanagement.isSuccessful(CustPRN); EXREF = Datamanagement.Ecternalref(CustPRN); Datamanagement.UpdateMSGIDResponded(CustPRN); switch (issuccess) { case true: Datamanagement.UpdateRegistration(OriginalPRN, TXNDATE, FCDBTELLERCODE, DRACCBRANCH, "", UtilityAccountY, DRACCOUNTNUMBER, "C", "T", EXREF, false, FCDBCHECKERy, "11", UtilityAccBranchY, "", Trantypey, DRACCURR, MerchantTypeY, UtilityAccCurrencyY); break; case false: FailureDetailsinfo.EXRef = EXREF; FailureDetailsinfo.PRNNUMBER = CustPRN; FailureDetailsinfo.TaxAmount = DRAMOUNT; FailureDetailsinfo.FailureDetails = new List <UraFailureDetials>(); FailureDetailsinfo.FailureDetails.Add(new UraFailureDetials() { Remark = "Failed To Post To Core Banking", Responcecode = "05" }); return("UNSUCCESSFUL"); break; } //Notify URA - If successfully posted Datamanagement.InsertIntoBridgeRegistration(OriginalPRN, "C", TINc, DRAMOUNT, TXNDATE, TXNDATE, "T", DRACCBRANCH, CustPRN, "", ""); //joannah.....9/7/2015 Thread.Sleep(5000); //Notify URA here NotifyURA(OriginalPRN, "C", TINc, DRAMOUNT, TXNDATE, TXNDATE, "T", DRACCBRANCH, CustPRN, "", ""); var strUpdate = "Update REGISTRATIONS set Sent = 1, acknowledged = 1 where PRN = prn"; try { using ( var conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Bridge"].ConnectionString)) { conn.Open(); using (var cmd = new SqlCommand(strUpdate, conn)) { var dr = cmd.ExecuteReader(); } } } catch (Exception ex) { } //joannah.....9/7/2015 //RESPOND HERE TaxDetailsinfo.EXRef = EXREF; TaxDetailsinfo.PRNNUMBER = CustPRN; TaxDetailsinfo.TaxAmount = amountduec; TaxDetailsinfo.TAXDetails = new List <UraDetials>(); TaxDetailsinfo.TAXDetails.Add(new UraDetials() { amountdue = amountduec, TaxPayername = TaxPayernamec, TIN = TINc, ExpDate = ExpDatec, RegDate = RegDatec, Remark = Remarkc, Responcecode = "00" }); return(TaxDetailsinfo.EXRef.ToString()); }
//====================================================================== public static string GetURADetails(string PRN, string Area) { var DM = new Datamanagement(); return(""); }