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); }
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); }
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; } }
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); }