Esempio n. 1
0
        public string Query(string RefNo, int Product, int AppId, string PassPhrase, string Location = "")
        {
            FCDBProducts p       = (FCDBProducts)Product;
            string       results = "";

            switch (p)
            {
            case FCDBProducts.URA:
                if (RefNo != "")
                {
                    try
                    {
                        InterfaceUra IU = new InterfaceUra();
                        return(IU.PullRegistrationDetails(RefNo));
                    }
                    catch (Exception ex)
                    {
                        results = ex.Message;
                    }
                }
                break;

            case FCDBProducts.KCCA:
                if (RefNo != "")
                {
                    InterfaceKcca IK = new InterfaceKcca();
                    results = IK.PullKCCADetails(RefNo);
                }
                break;

            case FCDBProducts.WATER:
                if (RefNo != "")
                {
                    InterfaceWater IW = new InterfaceWater();
                    results = IW.PullWaterDetails(RefNo, Location);
                }
                break;

            case FCDBProducts.ELECTRICITY:
                if (RefNo != "")
                {
                    InterfaceUmeme IM = new InterfaceUmeme();
                    results = IM.PullUmemeDetails(RefNo);
                }
                break;
            }
            return(results);
        }
 public string Query(string RefNo,int Product,int AppId,string PassPhrase,string Location="")
 {
     FCDBProducts p = (FCDBProducts)Product;
     string results="";
     switch (p)
     {
         case FCDBProducts.URA:
             if (RefNo != "")
             {
                 try
                 {
                     InterfaceUra IU = new InterfaceUra();
                     return IU.PullRegistrationDetails(RefNo);
                 }                      
                 catch (Exception ex)
                 {
                     results= ex.Message;
                 }                                    
             }
             break;
         case FCDBProducts.KCCA:
             if (RefNo != "")
             {                        
                 InterfaceKcca IK = new InterfaceKcca();
                 results= IK.PullKCCADetails(RefNo);
             }
             break;
         case FCDBProducts .WATER:
             if (RefNo != "")
             {
                 InterfaceWater IW = new InterfaceWater();
                 results = IW.PullWaterDetails(RefNo, Location);
             }
             break;
         case FCDBProducts .ELECTRICITY:
             if (RefNo != "")
             {
                 InterfaceUmeme IM = new InterfaceUmeme();
                 results=IM.PullUmemeDetails(RefNo);
             }
             break;                   
     }
     return results;
 }
        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();
        }
Esempio n. 4
0
        public string MakePayment(string PRN, int serviceid, string amount, string debitmobilenumber, string UTILITYACCOUNT, string alertcontact, int paymode, int appid, string apppassword, string xmldata = "", string branch = "", string Institution = "", string Location = "")
        {
            DateTime     xtime     = System.DateTime.Now;
            string       MyTime    = xtime.ToString("hhmmss");
            string       MyDate    = xtime.ToString("yyMMdd");
            string       response  = "";
            string       trnumber  = "";
            string       s_message = "";
            DataLogic    Dl        = new DataLogic();
            FCDBProducts p         = (FCDBProducts)serviceid;
            string       results   = "";

            if (PRN == "")
            {
                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING PRN");
                return(response);
            }

            if (debitmobilenumber == "")
            {
                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING DEBIT ACCOUNT");
                return(response);
            }
            if (branch == "")
            {
                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING ACCOUNT BRANCH ");
                return(response);
            }

            if (amount == "")
            {
                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING AMOUNT");
                return(response);
            }
            switch (p)
            {
            case FCDBProducts.KCCA:
                if (PRN != "")
                {
                    if (appid == 3)     // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                    {
                        // Begin upload process

                        string        responsefromCBS = "";
                        InterfaceKcca KResp           = new InterfaceKcca();
                        trnumber = KResp.PayKCCA(PRN, xmldata, UTILITYACCOUNT, amount, debitmobilenumber, MyDate, MyTime, alertcontact, "");

                        if (trnumber != "UNSUCCESSFULL")
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");
                        }
                        else
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                        }
                    }
                }
                else
                {
                    response = "Reference number missing.";
                    response = Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                    Dl.ResponseLogs(response);
                    return(response);    // Exit method at this point
                }
                break;

            case FCDBProducts.URA:
                if (PRN != "")
                {
                    if (appid == 0)     // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                    {
                        // Begin upload process

                        string       responsefromCBS = "";
                        InterfaceUra UResp           = new InterfaceUra();
                        //trnumber=UResp.FinpayURA(PRN, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime);

                        if (trnumber.Substring(0, 12) != "UNSUCCESSFUL")
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");
                        }
                        else
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                        }
                    }
                }
                else
                {
                    response = "Reference number missing.";
                    response = Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                    Dl.ResponseLogs(response);
                    // Exit method at this point
                }
                break;

            case FCDBProducts.WATER:
                if (PRN != "")
                {
                    if (appid == 1)     // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                    {
                        // Begin upload process

                        string         responsefromCBS = "";
                        InterfaceWater WResp           = new InterfaceWater();
                        // trnumber=WResp.FinpayNWSC(PRN, branch, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime, "", "", Location);

                        if (trnumber != "UNSUCCESSFUL")
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");
                        }
                        else
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                        }
                    }
                }
                else
                {
                    response = "Reference number missing.";
                    response = Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                    Dl.ResponseLogs(response);
                    // Exit method at this point
                }
                break;

            case FCDBProducts.ELECTRICITY:
                if (PRN != "")
                {
                    if (appid == 2)     // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                    {
                        // Begin upload process

                        string         responsefromCBS = "";
                        InterfaceUmeme IM = new InterfaceUmeme();
                        //trnumber = IM.FinpayUmeme(PRN, branch, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime, "", "", Location);
                        //trnumber = WResp.(PRN, branch, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime, "", "", Location);

                        if (trnumber != "UNSUCCESSFUL")
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");
                        }
                        else
                        {
                            response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                        }
                    }
                }
                else
                {
                    response = "Reference number missing.";
                    response = Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                    Dl.ResponseLogs(response);
                    // Exit method at this point
                }
                break;
            }
            return(response);
        }
        public string MakePayment(string PRN, int serviceid, string amount, string debitmobilenumber,  string UTILITYACCOUNT, string alertcontact, int paymode, int appid, string apppassword, string xmldata = "", string branch = "", string Institution = "",string Location = "")
        {
            DateTime xtime = System.DateTime.Now;
            string MyTime = xtime.ToString("hhmmss");
            string MyDate = xtime.ToString("yyMMdd");
            string response = "";
            string trnumber = "";
            string s_message = "";
            DataLogic Dl = new DataLogic();
            FCDBProducts p = (FCDBProducts)serviceid;
            string results = "";

            if (PRN == "")
            {
                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING PRN");
                return response;
            }

            if (debitmobilenumber == "")
            {                
                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING DEBIT ACCOUNT");
                return response;
            }
            if (branch == "")
            {

                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING ACCOUNT BRANCH ");
                return response;
            }

            if (amount == "")
            {
                
                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL - MISSING AMOUNT");
                return response;
            }
            switch (p)
            {
                case FCDBProducts.KCCA:
                    if (PRN != "")
                    {
                        if (appid == 3) // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                        {

                            // Begin upload process

                            string responsefromCBS = "";
                            InterfaceKcca KResp = new InterfaceKcca();
                            trnumber = KResp.PayKCCA(PRN, xmldata, UTILITYACCOUNT, amount, debitmobilenumber, MyDate, MyTime, alertcontact,"");

                            if (trnumber != "UNSUCCESSFULL")
                            {


                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");

                            }
                            else
                            {
                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                            }

                        }

                    }
                    else
                    {
                        response = "Reference number missing.";
                        response =Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                        Dl.ResponseLogs(response);
                        return response; // Exit method at this point 
                    }
                    break;
                case FCDBProducts.URA:
                    if (PRN != "")
                    {
                        if (appid == 0) // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                        {

                            // Begin upload process

                            string responsefromCBS = "";
                            InterfaceUra UResp = new InterfaceUra();
                            //trnumber=UResp.FinpayURA(PRN, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime);

                            if (trnumber.Substring(0, 12) != "UNSUCCESSFUL")
                            {
                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");
                            }
                            else
                            {
                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                            }

                        }

                    }
                    else
                    {
                        response = "Reference number missing.";
                        response = Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                        Dl.ResponseLogs(response);
                         // Exit method at this point 
                    }
                    break;
                case FCDBProducts.WATER:
                    if (PRN != "")
                    {
                        if (appid == 1) // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                        {

                            // Begin upload process

                            string responsefromCBS = "";
                            InterfaceWater WResp = new InterfaceWater();
                           // trnumber=WResp.FinpayNWSC(PRN, branch, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime, "", "", Location);

                            if (trnumber != "UNSUCCESSFUL")
                            {
                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");
                            }
                            else
                            {
                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                            }

                        }

                    }
                    else
                    {
                        response = "Reference number missing.";
                        response = Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                        Dl.ResponseLogs(response);
                        // Exit method at this point 
                    }
                    break;

                case FCDBProducts.ELECTRICITY:
                    if (PRN != "")
                    {
                        if (appid == 2) // WELCOME TO THE TELLLER INTERFACE. ALLOW ALL TRANSACTIONS
                        {

                            // Begin upload process

                            string responsefromCBS = "";
                            InterfaceUmeme IM = new InterfaceUmeme();
                            //trnumber = IM.FinpayUmeme(PRN, branch, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime, "", "", Location);
                            //trnumber = WResp.(PRN, branch, xmldata, branch, debitaccount, amount, "UGX", MyDate, MyTime, "", "", Location);

                            if (trnumber != "UNSUCCESSFUL")
                            {
                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "SUCCESS");
                            }
                            else
                            {
                                response = Functions.WriteSuccessResponseFromMakePayment(PRN, serviceid, Institution, branch, trnumber, "FAIL");
                            }

                        }

                    }
                    else
                    {
                        response = "Reference number missing.";
                        response = Functions.WriteFailureResponseFromMakePayment(PRN, serviceid, branch, "1", "Reference number missing", Institution);
                        Dl.ResponseLogs(response);
                        // Exit method at this point 
                    }
                    break;
            }
            return response;
        }
        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());
        }