private UmemeApi.Transaction GetUmemeTrans(Transaction trans, UtilityCredentials creds)
        {
            UmemeApi.Transaction umemeTrans = new UmemeApi.Transaction();
            umemeTrans.CustomerName = trans.CustName;
            umemeTrans.CustomerRef  = trans.CustRef;
            umemeTrans.CustomerTel  = trans.CustomerTel;
            umemeTrans.CustomerType = trans.CustomerType;
            umemeTrans.Offline      = trans.Offline;
            umemeTrans.Password     = creds.UtilityPassword;
            string format  = "d/M/yyyy";
            string newdate = formateDate(trans.PaymentDate.Trim()).Trim();
            string payDate = newdate;//DateTime.ParseExact(newdate, format, CultureInfo.InvariantCulture).ToString();

            umemeTrans.PaymentDate       = payDate;
            umemeTrans.PaymentType       = trans.PaymentType;
            umemeTrans.Reversal          = trans.Reversal;
            umemeTrans.StatusCode        = "0";
            umemeTrans.StatusDescription = "SUCCESS";
            umemeTrans.Teller            = trans.Teller;
            umemeTrans.TranAmount        = trans.TransactionAmount;
            umemeTrans.TranIdToReverse   = trans.TranIdToReverse;
            umemeTrans.TranNarration     = trans.Narration;
            umemeTrans.TranType          = trans.TransactionType;
            umemeTrans.VendorCode        = creds.UtilityCode;
            umemeTrans.VendorTranId      = trans.BankID;
            string dataToSign = umemeTrans.CustomerRef + umemeTrans.CustomerName + umemeTrans.CustomerTel + umemeTrans.CustomerType + umemeTrans.VendorTranId + umemeTrans.VendorCode + umemeTrans.Password + umemeTrans.PaymentDate + umemeTrans.PaymentType + umemeTrans.Teller + umemeTrans.TranAmount + umemeTrans.TranNarration + umemeTrans.TranType;

            umemeTrans.DigitalSignature = GetDigitalSignature(dataToSign, trans.VendorCode);
            return(umemeTrans);
        }
Example #2
0
        internal UtilityCredentials GetUtilityCreds(string utilityCode, string vendorCode)
        {
            UtilityCredentials creds = new UtilityCredentials();

            try
            {
                DbCommand command = PegPayInterface.GetStoredProcCommand("GetUtilityCredentials", vendorCode, utilityCode);
                DataTable dt      = PegPayInterface.ExecuteDataSet(command).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    creds.UtilityCode     = dt.Rows[0]["UtilityUsername"].ToString();
                    creds.UtilityPassword = dt.Rows[0]["UtilityPassword"].ToString();
                    creds.Utility         = dt.Rows[0]["UtilityCode"].ToString();
                    creds.BankCode        = dt.Rows[0]["BankCode"].ToString();
                    creds.SecretKey       = dt.Rows[0]["SecretKey"].ToString();
                    creds.Key             = dt.Rows[0]["Key"].ToString();
                }
                else
                {
                    creds.UtilityCode     = "";
                    creds.UtilityPassword = "";
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(creds);
        }
Example #3
0
    public string[] makePaymentUraNewImplementation(URATransaction transaction, UtilityCredentials creds)
    {
        try
        {
            BusinessLogic bll = new BusinessLogic();
            UtilityReferences.URA.UraPmtService clt = new UtilityReferences.URA.UraPmtService();
            string username  = creds.UtilityCode;                        //"STN";
            string Passwd    = bll.DecryptString(creds.UtilityPassword); // "C1bn@t5#739";
            string CryptPass = EncryptBankString(Passwd);
            //-- one single payment transaction entity
            UtilityReferences.URA.TransactionEntity av = new UtilityReferences.URA.TransactionEntity();
            string tranAmt = Convert.ToString(int.Parse(transaction.TransactionAmount));
            av.Amount         = EncryptBankString(tranAmt);
            av.Prn            = EncryptBankString(transaction.CustRef);
            av.Tin            = EncryptBankString(transaction.TIN);
            av.Reason         = transaction.Narration;
            av.Bank_branch_cd = creds.BankCode;     // transaction.BranchCode;
            av.Bank_cd        = username;
            av.Bank_tr_no     = transaction.VendorTransactionRef;
            av.Chq_no         = transaction.ChequeNumber;
            av.Paid_dt        = DateTime.Now.ToString("dd/MM/yyyy");
            av.Status         = "C"; //transaction.Status;

            av.Value_dt = DateTime.Now.ToString("dd/MM/yyyy");

            av.Signature = GetSignature(av.Bank_cd + av.Prn + av.Tin + av.Amount + av.Paid_dt + av.Value_dt + av.Status +
                                        av.Bank_branch_cd + av.Bank_tr_no + av.Chq_no + av.Reason);

            UtilityReferences.URA.TransactionEntity[] arr = { av };
            string[] RetStr;
            try
            {
                RetStr = clt.NotifyUraPayment(username, CryptPass, arr);
            }
            catch (Exception exe)
            {
                string   res     = "000,OFFLINE";
                string[] arr_str = res.Split(',');
                RetStr = arr_str;
            }
            return(RetStr);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
Example #4
0
    public void makePaymentUra(URATransaction transaction, UtilityCredentials creds)
    {
        //URATransaction trans = new URATransaction();
        //trans.Tin = pay.Tin;
        //trans.BillAmount = int.Parse(pay.Amount);
        //trans.CustName = pay.TaxpayerName;
        //trans.CustomerTel = "0781123654";
        //trans.CustRef = pay.Prn;
        //trans.Narration = "CASH";
        //trans.PaymentDate = DateTime.Now;
        //trans.VendorTransactionRef = "123559stn90";
        //trans.TransactionType = "CASH";
        //trans.ChequeNumber = "";
        //trans.Status = "C";
        //trans.BranchCode = "040047";

        ////send to URA
        //string response = SendToURA(trans);
    }
        public PostResponse SendToUmeme(Transaction trans)
        {
            PostResponse    resp       = new PostResponse();
            DatabaseHandler dp         = new DatabaseHandler();
            string          vendorCode = trans.VendorCode;
            string          custref    = trans.CustRef;

            try
            {
                UtilityCredentials creds = dp.GetUtilityCreds("UMEME", trans.VendorCode);
                if (!creds.UtilityCode.Equals(""))
                {
                    System.Net.ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidation;
                    UmemeApi.EPayment umemeapi = new UmemeApi.EPayment();
                    creds.UtilityCode     = "Stanbic-Bank";
                    creds.UtilityPassword = "******";

                    UmemeApi.Transaction umemeTrans = GetUmemeTrans(trans, creds);

                    //throw new Exception("unable to connect");
                    UmemeApi.Token umemeResp = umemeapi.PostYakaPayment(umemeTrans);

                    string UmemeStatusCode = umemeResp.StatusCode.ToUpper();
                    string UmemeStatusDesc = umemeResp.StatusDescription.Trim().ToUpper();

                    if (UmemeStatusCode == "0")
                    {
                        if (trans.CustomerType.ToUpper() == "PREPAID")
                        {
                            resp.NoOfUnits         = umemeResp.Units;
                            resp.PegPayPostId      = umemeResp.PrepaidToken;
                            resp.StatusCode        = "0";
                            resp.StatusDescription = "SUCCESS";
                        }
                        else
                        {
                            resp.NoOfUnits         = umemeResp.Units;
                            resp.PegPayPostId      = umemeResp.ReceiptNumber;
                            resp.StatusCode        = "0";
                            resp.StatusDescription = "SUCCESS";
                        }
                    }
                    else if (UmemeStatusDesc.Contains("DUPLICATE VENDOR REFERENCE"))
                    {
                        UmemeApi.Response umemeResp2 = umemeapi.GetTransactionDetails(trans.BankID, creds.UtilityCode, creds.UtilityPassword);
                        if (umemeResp2.StatusCode == "0")
                        {
                            if (trans.CustomerType.ToUpper().Equals("PREPAID"))
                            {
                                resp.PegPayPostId      = umemeResp2.Token;
                                resp.StatusCode        = "0";
                                resp.StatusDescription = "SUCCESS";
                            }
                            else
                            {
                                resp.PegPayPostId      = umemeResp2.ReceiptNumber;
                                resp.StatusCode        = "0";
                                resp.StatusDescription = "SUCCESS";
                            }
                        }
                        else
                        {
                            resp.PegPayPostId      = "";
                            resp.StatusCode        = "100";
                            resp.StatusDescription = umemeResp.StatusDescription + " AT UMEME";
                        }
                    }
                    else if (UmemeStatusDesc.Contains("SUSPECTED DOUBLE POSTING"))
                    {
                        resp.PegPayPostId      = "";
                        resp.StatusCode        = "100";
                        resp.StatusDescription = UmemeStatusDesc + " AT UMEME";
                    }
                    else if (UmemeStatusDesc.Contains("GENERAL ERROR"))
                    {
                        //signal to skip this transaction
                        //resp.PegPayPostId = "";
                        //resp.StatusCode = "500";
                        //resp.StatusDescription = UmemeStatusDesc;

                        UmemeApi.Response umemeResp2 = umemeapi.GetTransactionDetails(trans.BankID, creds.UtilityCode, creds.UtilityPassword);
                        if (umemeResp2.StatusCode.Equals("35") && umemeResp2.StatusDescription.Contains("DON'T EXIST")) // Doesnt exist
                        {
                            resp.StatusCode        = "100";
                            resp.StatusDescription = UmemeStatusDesc;
                        }
                        else
                        {
                            resp.StatusCode        = "500";
                            resp.StatusDescription = UmemeStatusDesc;
                        }
                    }
                    else
                    {
                        resp.PegPayPostId      = "";
                        resp.StatusCode        = "100";
                        resp.StatusDescription = UmemeStatusDesc + " AT UMEME";
                    }
                }
                else
                {
                    //////////////////////////////// remove this part
                    resp.PegPayPostId      = "";
                    resp.StatusCode        = "100";
                    resp.StatusDescription = "UTILITY CREDENTIALS NOT SET AT PEGASUS FOR THIS REVERSAL";
                }
            }
            catch (Exception ex)
            {
                string errorMsg = ex.Message.ToUpper().Trim();

                if (errorMsg.Contains("UNABLE TO CONNECT"))
                {
                    //signal to fail this transaction
                    resp.PegPayPostId      = "";
                    resp.StatusCode        = "100";
                    resp.StatusDescription = ex.Message;
                }
                else
                {
                    //signal to skip this transaction
                    resp.PegPayPostId      = "";
                    resp.StatusCode        = "500";
                    resp.StatusDescription = ex.Message;
                }
            }
            return(resp);
        }