//====================================================================== public void PostUmemebill(string refernum , string strReferenceNum , string strCustomerName , string strAmountPaid , string strPayOption , string strChequeNum , string strPhoneNumber , string strRemarks , string strUser , string strTranCode , string strValDate , string custype , int statcode, string statdesc , string paytypes ) { //System.Net.ServicePointManager.CertificatePolicy = new MyPolicy(); UMEMEGateway.EPayment service = new UMEMEGateway.EPayment (); //var pr = new System.Net.WebProxy(ProxyIP, ProxyPort); //If UseProxy = True Then // service.Proxy = pr //End If UMEMEGateway.Transaction MyTransactionEntity = new UMEMEGateway.Transaction(); string VendorCode = ConfigurationManager.AppSettings["UMEMEVendorCode"]; string VendorPass = ConfigurationManager.AppSettings["UMEMEVendorPass"]; X509Certificate2 x509Cert_bnk = new X509Certificate2(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["BankCertificate"]), ConfigurationManager.AppSettings["BankCertPass"]); string vendorid = refernum ; string tranno ; int reversal = 0 ; int mode = 0; if (strCustomerName =="REVERSAL") { tranno = refernum; vendorid = strReferenceNum + strTranCode ; reversal = 1 ; } else { tranno = ""; reversal = 0; } string det = DateTime.Today.ToString (); //Format(Date.Today, "dd/MM/yyyy"); if( strTranCode == "Authorize") { strAmountPaid = strAmountPaid.Substring(0, strAmountPaid.Length - 2); } if (reversal == 1 ) { strAmountPaid = "-" + strAmountPaid.Substring(0, strAmountPaid.Length - 2); } var validateresponse = service.ValidateCustomer(strReferenceNum, UmemeVendorCode, UmemeVendorPassword); string strrefnum = strReferenceNum.Trim (); string validy = strCustomerName.Trim(); string phoneno = strPhoneNumber.Trim(); string custtype = custype.Trim(); string vendoidentity = vendorid.Trim(); string vendacode = UmemeVendorCode.Trim(); string vendapass = UmemeVendorPassword.Trim(); string dets = det.Trim(); string payty = paytypes.Trim(); string user = strUser.Trim(); string ammount = strAmountPaid.Trim(); string remark = strRemarks.Trim(); string payoptiony = strPayOption.Trim(); string MyString = strrefnum + validy + phoneno + custtype + vendoidentity + vendacode + vendapass + dets + payty + user + ammount + remark + payoptiony ; RSACryptoServiceProvider privateKey = (x509Cert_bnk.PrivateKey) as RSACryptoServiceProvider ; // RSACryptoServiceProvider (x509Cert_bnk.PrivateKey); var buffer = new ASCIIEncoding().GetBytes(MyString) ; //Encoding.[Default].GetBytes(MyString) var hash = new SHA1Managed().ComputeHash(buffer); var signature = privateKey.SignData(buffer, "SHA1"); //privateKey.SignData(buffer, New SHA1Managed()) string digitalsignature = System.Convert.ToBase64String(signature); //Dim strConvertedSignature As String digitalsignature = Convert.ToBase64String(signature); //verify the signature RSACryptoServiceProvider publicKey = (x509Cert_bnk.PublicKey.Key) as RSACryptoServiceProvider; Boolean verify = privateKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature); //publicKey.VerifyData(buffer, New SHA1Managed(), signature) MyTransactionEntity.StatusDescription = validateresponse.StatusDescription.Trim(); MyTransactionEntity.DigitalSignature = digitalsignature.Trim(); MyTransactionEntity.StatusCode = validateresponse.StatusCode.Trim(); DateTime dt = DateTime.Today; MyTransactionEntity.PaymentDate = String.Format("{0:d}", dt); //DateTime .Today .ToString (); //Format(Date.Today, "dd/MM/yyyy"); MyTransactionEntity.Password = UmemeVendorPassword.Trim(); MyTransactionEntity.TranAmount = strAmountPaid.Trim(); MyTransactionEntity.Teller = strUser.Trim(); MyTransactionEntity.VendorCode = UmemeVendorCode.Trim(); MyTransactionEntity.TranNarration = strRemarks.Trim(); MyTransactionEntity.VendorTranId = vendorid.Trim(); MyTransactionEntity.TranIdToReverse = tranno.Trim(); paytypes = "2"; MyTransactionEntity.PaymentType = paytypes.Trim(); MyTransactionEntity.TranType = strPayOption.Trim(); MyTransactionEntity.CustomerRef = validateresponse.CustomerRef.Trim(); MyTransactionEntity.CustomerName = validateresponse.CustomerName.Trim(); MyTransactionEntity.CustomerType = validateresponse.CustomerType.Trim(); MyTransactionEntity.CustomerTel = strPhoneNumber.Trim(); string rever = reversal.ToString(); MyTransactionEntity.Reversal = rever .Trim(); string modey = mode.ToString(); MyTransactionEntity.Offline = modey.Trim(); var Token = new UMEMEGateway.Token(); UMEMEGateway.Response PostUmemeTransactionsResponse = new UMEMEGateway.Response(); var conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Finpay"].ConnectionString); // Dim postresponse As UmemeBillInterface.Response //check customer type to determine method to use if (validateresponse.CustomerType == "POSTPAID" ) { PostUmemeTransactionsResponse = service.PostBankUmemePayment(MyTransactionEntity); string receiptno = PostUmemeTransactionsResponse.ReceiptNumber; string status = PostUmemeTransactionsResponse.StatusCode; string desc = PostUmemeTransactionsResponse.StatusDescription; if (desc == "SUCCESS" ) { if (rever == "0" ) { string query = "UPDATE UmemePayments set umemeStatus = 'Posted' where ReferenceNumber = " + strrefnum ; string query1 = "Insert into UmemePaymentsArchive Select * from umemePayments where ReferenceNumber = " + strrefnum; string query2 = "Delete from umemePayments where ReferenceNumber =" + strrefnum; var cmd = new SqlCommand(query, conn); var cmd1 = new SqlCommand(query1, conn); var cmd2 = new SqlCommand(query2, conn); cmd.ExecuteScalar(); } else { string query = "UPDATE UmemePayments set umemeStatus = 'Reversed' where ReferenceNumber = " + strrefnum; string query1 = "Insert into UmemePaymentsArchive Select * from umemePayments where ReferenceNumber = " + strrefnum; string query2 = "Delete from umemePayments where ReferenceNumber =" + strrefnum; var cmd = new SqlCommand(query, conn); var cmd1 = new SqlCommand(query1, conn); var cmd2 = new SqlCommand(query2, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePaymentsarchive set umemeStatus = 'Reversed', ReceiptNo='" & receiptno & "',FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) } } } else { if ( rever == "0" ) { string query = "UPDATE UmemePayments set FEEDBACK = + desc + where ReferenceNumber = " + strrefnum ; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePayments set FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) } else { string query = "UPDATE UmemePaymentsarchive set FEEDBACK = + desc + where ReferenceNumber = " + strrefnum ; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePaymentsarchive set FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) } } if ( validateresponse.CustomerType == "PREPAID" ) { //var Token = new UMEMEGateway.Token(); Token = service.PostYakaPayment(MyTransactionEntity); string account, debt, receiptno, status, desc, meterno, unitno, tokenvalue, inflation, tax, fx, fuel, amount, prepaidt ; account = Token.PayAccount; debt = Token.DebtRecovery; receiptno = Token.ReceiptNumber; status = Token.StatusCode; desc = Token.StatusDescription; meterno = Token.MeterNumber; unitno = Token.Units; tokenvalue = Token.TokenValue; inflation = Token.Inflation; tax = Token.Tax; fx = Token.Fx; fuel = Token.Fuel; amount = Token.TotalAmount; prepaidt = Token.PrepaidToken; if (desc == "SUCCESS" ) { string query = "UPDATE UmemePayments set umemeStatus = 'Posted' where ReferenceNumber = " + strrefnum ; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); ////'Dim str As String = "UPDATE UmemePayments set umemeStatus = 'Posted' AND ReceiptNo='" & receiptno & "' AND FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'" //dat.DBAction("UPDATE UmemePayments set umemeStatus = 'Posted', ReceiptNo='" & receiptno & "',FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) ////'--- Weka token Hapa --- //Dim strAct As String = "INSERT INTO PREPAID_TOKEN(PaymentID,ReferenceNumber,ReceiptNo,PayAccount,DebtRecovery,MeterNumber,Units,TokenValue,Inflation,Tax,FX,Fuel,TotalAmount,PrepaidToken,StatusCode,StatusDesc)" & _ //"VALUES((Select PaymentID from umemePayments where ReferenceNumber = '" & vendorid & "'),'" & vendorid & "','" & receiptno & "','" & account & "','" & debt & "','" & meterno & "','" & unitno & "','" & tokenvalue & "','" & inflation & "','" & tax & "','" & fx & "','" & fuel & "','" & amount & "','" & prepaidt & "','" & statcode & "','" & desc & "')" //dat.DBAction(strAct, DataManagement.DBActionType.Insert) } else { string query = "UPDATE UmemePaymentsarchive set FEEDBACK = + desc + where ReferenceNumber = " + strrefnum ; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePayments set FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) //'reverse transaction from core } } if (validateresponse.CustomerType == "POSTPAID") { //return PostUmemeTransactionsResponse; } else { //return Token; } }
//====================================================================== public void PostUmemebill(string refernum, string strReferenceNum, string strCustomerName, string strAmountPaid, string strPayOption, string strChequeNum, string strPhoneNumber, string strRemarks, string strUser, string strTranCode, string strValDate, string custype, int statcode, string statdesc, string paytypes) { //System.Net.ServicePointManager.CertificatePolicy = new MyPolicy(); UMEMEGateway.EPayment service = new UMEMEGateway.EPayment(); //var pr = new System.Net.WebProxy(ProxyIP, ProxyPort); //If UseProxy = True Then // service.Proxy = pr //End If UMEMEGateway.Transaction MyTransactionEntity = new UMEMEGateway.Transaction(); string VendorCode = ConfigurationManager.AppSettings["UMEMEVendorCode"]; string VendorPass = ConfigurationManager.AppSettings["UMEMEVendorPass"]; X509Certificate2 x509Cert_bnk = new X509Certificate2(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["BankCertificate"]), ConfigurationManager.AppSettings["BankCertPass"]); string vendorid = refernum; string tranno; int reversal = 0; int mode = 0; if (strCustomerName == "REVERSAL") { tranno = refernum; vendorid = strReferenceNum + strTranCode; reversal = 1; } else { tranno = ""; reversal = 0; } string det = DateTime.Today.ToString(); //Format(Date.Today, "dd/MM/yyyy"); if (strTranCode == "Authorize") { strAmountPaid = strAmountPaid.Substring(0, strAmountPaid.Length - 2); } if (reversal == 1) { strAmountPaid = "-" + strAmountPaid.Substring(0, strAmountPaid.Length - 2); } var validateresponse = service.ValidateCustomer(strReferenceNum, UmemeVendorCode, UmemeVendorPassword); string strrefnum = strReferenceNum.Trim(); string validy = strCustomerName.Trim(); string phoneno = strPhoneNumber.Trim(); string custtype = custype.Trim(); string vendoidentity = vendorid.Trim(); string vendacode = UmemeVendorCode.Trim(); string vendapass = UmemeVendorPassword.Trim(); string dets = det.Trim(); string payty = paytypes.Trim(); string user = strUser.Trim(); string ammount = strAmountPaid.Trim(); string remark = strRemarks.Trim(); string payoptiony = strPayOption.Trim(); string MyString = strrefnum + validy + phoneno + custtype + vendoidentity + vendacode + vendapass + dets + payty + user + ammount + remark + payoptiony; RSACryptoServiceProvider privateKey = (x509Cert_bnk.PrivateKey) as RSACryptoServiceProvider; // RSACryptoServiceProvider (x509Cert_bnk.PrivateKey); var buffer = new ASCIIEncoding().GetBytes(MyString); //Encoding.[Default].GetBytes(MyString) var hash = new SHA1Managed().ComputeHash(buffer); var signature = privateKey.SignData(buffer, "SHA1"); //privateKey.SignData(buffer, New SHA1Managed()) string digitalsignature = System.Convert.ToBase64String(signature); //Dim strConvertedSignature As String digitalsignature = Convert.ToBase64String(signature); //verify the signature RSACryptoServiceProvider publicKey = (x509Cert_bnk.PublicKey.Key) as RSACryptoServiceProvider; Boolean verify = privateKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature); //publicKey.VerifyData(buffer, New SHA1Managed(), signature) MyTransactionEntity.StatusDescription = validateresponse.StatusDescription.Trim(); MyTransactionEntity.DigitalSignature = digitalsignature.Trim(); MyTransactionEntity.StatusCode = validateresponse.StatusCode.Trim(); DateTime dt = DateTime.Today; MyTransactionEntity.PaymentDate = String.Format("{0:d}", dt); //DateTime .Today .ToString (); //Format(Date.Today, "dd/MM/yyyy"); MyTransactionEntity.Password = UmemeVendorPassword.Trim(); MyTransactionEntity.TranAmount = strAmountPaid.Trim(); MyTransactionEntity.Teller = strUser.Trim(); MyTransactionEntity.VendorCode = UmemeVendorCode.Trim(); MyTransactionEntity.TranNarration = strRemarks.Trim(); MyTransactionEntity.VendorTranId = vendorid.Trim(); MyTransactionEntity.TranIdToReverse = tranno.Trim(); paytypes = "2"; MyTransactionEntity.PaymentType = paytypes.Trim(); MyTransactionEntity.TranType = strPayOption.Trim(); MyTransactionEntity.CustomerRef = validateresponse.CustomerRef.Trim(); MyTransactionEntity.CustomerName = validateresponse.CustomerName.Trim(); MyTransactionEntity.CustomerType = validateresponse.CustomerType.Trim(); MyTransactionEntity.CustomerTel = strPhoneNumber.Trim(); string rever = reversal.ToString(); MyTransactionEntity.Reversal = rever.Trim(); string modey = mode.ToString(); MyTransactionEntity.Offline = modey.Trim(); var Token = new UMEMEGateway.Token(); UMEMEGateway.Response PostUmemeTransactionsResponse = new UMEMEGateway.Response(); var conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Finpay"].ConnectionString); // Dim postresponse As UmemeBillInterface.Response //check customer type to determine method to use if (validateresponse.CustomerType == "POSTPAID") { PostUmemeTransactionsResponse = service.PostBankUmemePayment(MyTransactionEntity); string receiptno = PostUmemeTransactionsResponse.ReceiptNumber; string status = PostUmemeTransactionsResponse.StatusCode; string desc = PostUmemeTransactionsResponse.StatusDescription; if (desc == "SUCCESS") { if (rever == "0") { string query = "UPDATE UmemePayments set umemeStatus = 'Posted' where ReferenceNumber = " + strrefnum; string query1 = "Insert into UmemePaymentsArchive Select * from umemePayments where ReferenceNumber = " + strrefnum; string query2 = "Delete from umemePayments where ReferenceNumber =" + strrefnum; var cmd = new SqlCommand(query, conn); var cmd1 = new SqlCommand(query1, conn); var cmd2 = new SqlCommand(query2, conn); cmd.ExecuteScalar(); } else { string query = "UPDATE UmemePayments set umemeStatus = 'Reversed' where ReferenceNumber = " + strrefnum; string query1 = "Insert into UmemePaymentsArchive Select * from umemePayments where ReferenceNumber = " + strrefnum; string query2 = "Delete from umemePayments where ReferenceNumber =" + strrefnum; var cmd = new SqlCommand(query, conn); var cmd1 = new SqlCommand(query1, conn); var cmd2 = new SqlCommand(query2, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePaymentsarchive set umemeStatus = 'Reversed', ReceiptNo='" & receiptno & "',FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) } } } else { if (rever == "0") { string query = "UPDATE UmemePayments set FEEDBACK = + desc + where ReferenceNumber = " + strrefnum; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePayments set FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) } else { string query = "UPDATE UmemePaymentsarchive set FEEDBACK = + desc + where ReferenceNumber = " + strrefnum; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePaymentsarchive set FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) } } if (validateresponse.CustomerType == "PREPAID") { //var Token = new UMEMEGateway.Token(); Token = service.PostYakaPayment(MyTransactionEntity); string account, debt, receiptno, status, desc, meterno, unitno, tokenvalue, inflation, tax, fx, fuel, amount, prepaidt; account = Token.PayAccount; debt = Token.DebtRecovery; receiptno = Token.ReceiptNumber; status = Token.StatusCode; desc = Token.StatusDescription; meterno = Token.MeterNumber; unitno = Token.Units; tokenvalue = Token.TokenValue; inflation = Token.Inflation; tax = Token.Tax; fx = Token.Fx; fuel = Token.Fuel; amount = Token.TotalAmount; prepaidt = Token.PrepaidToken; if (desc == "SUCCESS") { string query = "UPDATE UmemePayments set umemeStatus = 'Posted' where ReferenceNumber = " + strrefnum; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); ////'Dim str As String = "UPDATE UmemePayments set umemeStatus = 'Posted' AND ReceiptNo='" & receiptno & "' AND FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'" //dat.DBAction("UPDATE UmemePayments set umemeStatus = 'Posted', ReceiptNo='" & receiptno & "',FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) ////'--- Weka token Hapa --- //Dim strAct As String = "INSERT INTO PREPAID_TOKEN(PaymentID,ReferenceNumber,ReceiptNo,PayAccount,DebtRecovery,MeterNumber,Units,TokenValue,Inflation,Tax,FX,Fuel,TotalAmount,PrepaidToken,StatusCode,StatusDesc)" & _ //"VALUES((Select PaymentID from umemePayments where ReferenceNumber = '" & vendorid & "'),'" & vendorid & "','" & receiptno & "','" & account & "','" & debt & "','" & meterno & "','" & unitno & "','" & tokenvalue & "','" & inflation & "','" & tax & "','" & fx & "','" & fuel & "','" & amount & "','" & prepaidt & "','" & statcode & "','" & desc & "')" //dat.DBAction(strAct, DataManagement.DBActionType.Insert) } else { string query = "UPDATE UmemePaymentsarchive set FEEDBACK = + desc + where ReferenceNumber = " + strrefnum; var cmd = new SqlCommand(query, conn); cmd.ExecuteScalar(); //dat.DBAction("UPDATE UmemePayments set FEEDBACK= '" & desc & "' where ReferenceNumber = '" & ref & "'", DataManagement.DBActionType.Update) //'reverse transaction from core } } if (validateresponse.CustomerType == "POSTPAID") { //return PostUmemeTransactionsResponse; } else { //return Token; } }