public string PullRegistrationDetails(string MyPRN) { 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 d = service.GetPRNDetails(MyAPIUserName, s, System.Configuration.ConfigurationManager.AppSettings["BANK_SHORT_CODE"], MyPRN); // ---------------------- Return Xml Response ------------------------- string PaymentDetails = ""; MemoryStream XmlMs = new MemoryStream(); XmlTextWriter XmlTxtWtr = new XmlTextWriter(XmlMs, System.Text.Encoding.UTF8); XmlTxtWtr.Formatting = Formatting.Indented; XmlTxtWtr.Indentation = 4; XmlTxtWtr.WriteStartDocument(); XmlTxtWtr.WriteStartElement("URA PAYMENT DETAILS"); XmlTxtWtr.WriteElementString("PRN", d.Prn); XmlTxtWtr.WriteElementString("TIN", d.Tin); XmlTxtWtr.WriteElementString("CUSTNAME",d.TaxpayerName); XmlTxtWtr.WriteElementString("AMOUNT", d.Amount); XmlTxtWtr.WriteElementString("STATUS", d.StatusCode); XmlTxtWtr.WriteElementString("EXPIRYDATE",d.ExpiryDt); XmlTxtWtr.WriteEndElement(); XmlTxtWtr.WriteEndDocument(); XmlTxtWtr.Flush(); StreamReader strmrdr = new StreamReader(XmlMs); XmlMs.Seek(0, SeekOrigin.Begin); PaymentDetails = strmrdr.ReadToEnd(); return PaymentDetails; } catch (Exception ex) { return ex.Message; } }
public string PullRegistrationDetails(string MyPRN) { 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 d = service.GetPRNDetails(MyAPIUserName, s, System.Configuration.ConfigurationManager.AppSettings["BANK_SHORT_CODE"], MyPRN); // ---------------------- Return Xml Response ------------------------- string PaymentDetails = ""; MemoryStream XmlMs = new MemoryStream(); XmlTextWriter XmlTxtWtr = new XmlTextWriter(XmlMs, System.Text.Encoding.UTF8); XmlTxtWtr.Formatting = Formatting.Indented; XmlTxtWtr.Indentation = 4; XmlTxtWtr.WriteStartDocument(); XmlTxtWtr.WriteStartElement("URA PAYMENT DETAILS"); XmlTxtWtr.WriteElementString("PRN", d.Prn); XmlTxtWtr.WriteElementString("TIN", d.Tin); XmlTxtWtr.WriteElementString("CUSTNAME", d.TaxpayerName); XmlTxtWtr.WriteElementString("AMOUNT", d.Amount); XmlTxtWtr.WriteElementString("STATUS", d.StatusCode); XmlTxtWtr.WriteElementString("EXPIRYDATE", d.ExpiryDt); XmlTxtWtr.WriteEndElement(); XmlTxtWtr.WriteEndDocument(); XmlTxtWtr.Flush(); StreamReader strmrdr = new StreamReader(XmlMs); XmlMs.Seek(0, SeekOrigin.Begin); PaymentDetails = strmrdr.ReadToEnd(); return(PaymentDetails); } catch (Exception ex) { return(ex.Message); } }
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 NotifyURA(string PRN, string BankStatus, string Tin, string Amount, string Paid_dt, // string Value_dt, string Status, string Bank_branch_cd, string Bank_tr_no, // string Chq_no, string Reason) //{ // var uraEnc = new UraEncryption(); // string pass_Api = Decrypt(MyAPIPass); // string s = uraEnc.EncryptedData(MyAPIPass, x509Cert_ura); // var urapt = new UraPmtServiceSoapClient("UraPmtServiceSoap"); // urapt.Open(); // var MyTransactionEntity = new TransactionEntity(); // var MyTranArray = new URAPmtInterface.TransactionEntity[1]; // MyTranArray.Initialize(); // MyTransactionEntity.Bank_cd = ConfigurationManager.AppSettings["BANK_SHORT_CODE"]; // MyTransactionEntity.Prn = PRN; // MyTransactionEntity.Tin = Tin; // MyTransactionEntity.Amount = Amount; // MyTransactionEntity.Paid_dt = Paid_dt; // MyTransactionEntity.Value_dt = Value_dt; // MyTransactionEntity.Status = Status; // MyTransactionEntity.Bank_branch_cd = Bank_branch_cd; // MyTransactionEntity.Bank_tr_no = Bank_tr_no; // MyTransactionEntity.Chq_no = Chq_no; // MyTransactionEntity.Reason = Reason; // string MyString = MyTransactionEntity.Bank_cd + MyTransactionEntity.Prn + MyTransactionEntity.Tin + // MyTransactionEntity.Amount + MyTransactionEntity.Paid_dt + MyTransactionEntity.Value_dt + // MyTransactionEntity.Status + MyTransactionEntity.Bank_branch_cd + // MyTransactionEntity.Bank_tr_no + MyTransactionEntity.Chq_no + MyTransactionEntity.Reason; // var privateKey = x509Cert_bnk.PrivateKey as RSACryptoServiceProvider; // byte[] buffer = new UnicodeEncoding().GetBytes(MyString); // byte[] hash = new SHA1Managed().ComputeHash(buffer); // if (privateKey != null) // { // byte[] signature = privateKey.SignHash(hash, "SHA1"); // //verify the signature // var publicKey = x509Cert_bnk.PublicKey.Key as RSACryptoServiceProvider; // bool verify = publicKey != null && publicKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature); // MyTransactionEntity.Signature = signature; // } // //Add Transaction Entity to the Array // MyTranArray[0] = MyTransactionEntity; // var res = urapt.NotifyUraPayment(MyAPIUserName, s, MyTranArray); // return ""; //} //********** //********** //static public string NotifyURA(string PRN, string BankStatus, string Tin, string Amount, string Paid_dt, string Value_dt, string Status, string Bank_branch_cd, string Bank_tr_no, string Chq_no, string Reason) { Functions fn = new Functions(); //Crypto cp = new Crypto(); string EnctryptionAlgorithm = "rijndael"; FinpayiSecurity.CryptoFactory CryptographyFactory = new FinpayiSecurity.CryptoFactory(); FinpayiSecurity.ICrypto CrypTool = null; //FinpayiSecurity.ICrypto Cryptographer = CryptographyFactory.MakeCryptographer(EnctryptionAlgorith); string Finpayi = ConfigurationManager.ConnectionStrings["Finpay"].ConnectionString; string Bridgei = ConfigurationManager.ConnectionStrings["Bridge"].ConnectionString; X509Certificate2 x509Cert_ura = new X509Certificate2(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["URACertificate"])); X509Certificate2 x509Cert_bnk = new X509Certificate2(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["BankCertificate"]), HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["BankCertPass"])); string MyAPIUserName = ""; string MyAPIPass = ""; 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); // var urapt = new UraPmtServiceSoapClient("UraPmtServiceSoap"); // urapt.Open(); var MyTransactionEntity = new URAGateway.TransactionEntity (); var MyTranArray = new URAGateway.TransactionEntity[1]; MyTranArray.Initialize(); MyTransactionEntity.Bank_cd = ConfigurationManager.AppSettings["BANK_SHORT_CODE"]; MyTransactionEntity.Prn = PRN; MyTransactionEntity.Tin = Tin; MyTransactionEntity.Amount = Amount; MyTransactionEntity.Paid_dt = Paid_dt; MyTransactionEntity.Value_dt = Value_dt; MyTransactionEntity.Status = Status; MyTransactionEntity.Bank_branch_cd = Bank_branch_cd; MyTransactionEntity.Bank_tr_no = Bank_tr_no; MyTransactionEntity.Chq_no = Chq_no; MyTransactionEntity.Reason = Reason; string MyString = MyTransactionEntity.Bank_cd + MyTransactionEntity.Prn + MyTransactionEntity.Tin + MyTransactionEntity.Amount + MyTransactionEntity.Paid_dt + MyTransactionEntity.Value_dt + MyTransactionEntity.Status + MyTransactionEntity.Bank_branch_cd + MyTransactionEntity.Bank_tr_no + MyTransactionEntity.Chq_no + MyTransactionEntity.Reason; var privateKey = x509Cert_bnk.PrivateKey as RSACryptoServiceProvider; byte[] buffer = new UnicodeEncoding().GetBytes(MyString); byte[] hash = new SHA1Managed().ComputeHash(buffer); if (privateKey != null) { byte[] signature = privateKey.SignHash(hash, "SHA1"); //verify the signature var publicKey = x509Cert_bnk.PublicKey.Key as RSACryptoServiceProvider; bool verify = publicKey != null && publicKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature); MyTransactionEntity.Signature = signature; } //Add Transaction Entity to the Array MyTranArray[0] = MyTransactionEntity; var res = service.NotifyUraPayment(MyAPIUserName, s, MyTranArray); return ""; }
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 NotifyURA(string PRN, string BankStatus, string Tin, string Amount, string Paid_dt, // string Value_dt, string Status, string Bank_branch_cd, string Bank_tr_no, // string Chq_no, string Reason) //{ // var uraEnc = new UraEncryption(); // string pass_Api = Decrypt(MyAPIPass); // string s = uraEnc.EncryptedData(MyAPIPass, x509Cert_ura); // var urapt = new UraPmtServiceSoapClient("UraPmtServiceSoap"); // urapt.Open(); // var MyTransactionEntity = new TransactionEntity(); // var MyTranArray = new URAPmtInterface.TransactionEntity[1]; // MyTranArray.Initialize(); // MyTransactionEntity.Bank_cd = ConfigurationManager.AppSettings["BANK_SHORT_CODE"]; // MyTransactionEntity.Prn = PRN; // MyTransactionEntity.Tin = Tin; // MyTransactionEntity.Amount = Amount; // MyTransactionEntity.Paid_dt = Paid_dt; // MyTransactionEntity.Value_dt = Value_dt; // MyTransactionEntity.Status = Status; // MyTransactionEntity.Bank_branch_cd = Bank_branch_cd; // MyTransactionEntity.Bank_tr_no = Bank_tr_no; // MyTransactionEntity.Chq_no = Chq_no; // MyTransactionEntity.Reason = Reason; // string MyString = MyTransactionEntity.Bank_cd + MyTransactionEntity.Prn + MyTransactionEntity.Tin + // MyTransactionEntity.Amount + MyTransactionEntity.Paid_dt + MyTransactionEntity.Value_dt + // MyTransactionEntity.Status + MyTransactionEntity.Bank_branch_cd + // MyTransactionEntity.Bank_tr_no + MyTransactionEntity.Chq_no + MyTransactionEntity.Reason; // var privateKey = x509Cert_bnk.PrivateKey as RSACryptoServiceProvider; // byte[] buffer = new UnicodeEncoding().GetBytes(MyString); // byte[] hash = new SHA1Managed().ComputeHash(buffer); // if (privateKey != null) // { // byte[] signature = privateKey.SignHash(hash, "SHA1"); // //verify the signature // var publicKey = x509Cert_bnk.PublicKey.Key as RSACryptoServiceProvider; // bool verify = publicKey != null && publicKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature); // MyTransactionEntity.Signature = signature; // } // //Add Transaction Entity to the Array // MyTranArray[0] = MyTransactionEntity; // var res = urapt.NotifyUraPayment(MyAPIUserName, s, MyTranArray); // return ""; //} //********** //********** //static public string NotifyURA(string PRN, string BankStatus, string Tin, string Amount, string Paid_dt, string Value_dt, string Status, string Bank_branch_cd, string Bank_tr_no, string Chq_no, string Reason) { Functions fn = new Functions(); //Crypto cp = new Crypto(); string EnctryptionAlgorithm = "rijndael"; FinpayiSecurity.CryptoFactory CryptographyFactory = new FinpayiSecurity.CryptoFactory(); FinpayiSecurity.ICrypto CrypTool = null; //FinpayiSecurity.ICrypto Cryptographer = CryptographyFactory.MakeCryptographer(EnctryptionAlgorith); string Finpayi = ConfigurationManager.ConnectionStrings["Finpay"].ConnectionString; string Bridgei = ConfigurationManager.ConnectionStrings["Bridge"].ConnectionString; X509Certificate2 x509Cert_ura = new X509Certificate2(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["URACertificate"])); X509Certificate2 x509Cert_bnk = new X509Certificate2(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["BankCertificate"]), HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["BankCertPass"])); string MyAPIUserName = ""; string MyAPIPass = ""; 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); // var urapt = new UraPmtServiceSoapClient("UraPmtServiceSoap"); // urapt.Open(); var MyTransactionEntity = new URAGateway.TransactionEntity(); var MyTranArray = new URAGateway.TransactionEntity[1]; MyTranArray.Initialize(); MyTransactionEntity.Bank_cd = ConfigurationManager.AppSettings["BANK_SHORT_CODE"]; MyTransactionEntity.Prn = PRN; MyTransactionEntity.Tin = Tin; MyTransactionEntity.Amount = Amount; MyTransactionEntity.Paid_dt = Paid_dt; MyTransactionEntity.Value_dt = Value_dt; MyTransactionEntity.Status = Status; MyTransactionEntity.Bank_branch_cd = Bank_branch_cd; MyTransactionEntity.Bank_tr_no = Bank_tr_no; MyTransactionEntity.Chq_no = Chq_no; MyTransactionEntity.Reason = Reason; string MyString = MyTransactionEntity.Bank_cd + MyTransactionEntity.Prn + MyTransactionEntity.Tin + MyTransactionEntity.Amount + MyTransactionEntity.Paid_dt + MyTransactionEntity.Value_dt + MyTransactionEntity.Status + MyTransactionEntity.Bank_branch_cd + MyTransactionEntity.Bank_tr_no + MyTransactionEntity.Chq_no + MyTransactionEntity.Reason; var privateKey = x509Cert_bnk.PrivateKey as RSACryptoServiceProvider; byte[] buffer = new UnicodeEncoding().GetBytes(MyString); byte[] hash = new SHA1Managed().ComputeHash(buffer); if (privateKey != null) { byte[] signature = privateKey.SignHash(hash, "SHA1"); //verify the signature var publicKey = x509Cert_bnk.PublicKey.Key as RSACryptoServiceProvider; bool verify = publicKey != null && publicKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature); MyTransactionEntity.Signature = signature; } //Add Transaction Entity to the Array MyTranArray[0] = MyTransactionEntity; var res = service.NotifyUraPayment(MyAPIUserName, s, MyTranArray); return(""); }