/// <remarks/>
 public void PostBankUmemePaymentAsync(Transaction trans, object userState) {
     if ((this.PostBankUmemePaymentOperationCompleted == null)) {
         this.PostBankUmemePaymentOperationCompleted = new System.Threading.SendOrPostCallback(this.OnPostBankUmemePaymentOperationCompleted);
     }
     this.InvokeAsync("PostBankUmemePayment", new object[] {
                 trans}, this.PostBankUmemePaymentOperationCompleted, userState);
 }
        //======================================================================


             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;

                }
            
             }
 /// <remarks/>
 public void PostBankUmemePaymentAsync(Transaction trans) {
     this.PostBankUmemePaymentAsync(trans, null);
 }
 public Response PostBankUmemePayment(Transaction trans) {
     object[] results = this.Invoke("PostBankUmemePayment", new object[] {
                 trans});
     return ((Response)(results[0]));
 }
 /// <remarks/>
 public void PostYakaPaymentAsync(Transaction trans) {
     this.PostYakaPaymentAsync(trans, null);
 }
 public Token PostYakaPayment(Transaction trans) {
     object[] results = this.Invoke("PostYakaPayment", new object[] {
                 trans});
     return ((Token)(results[0]));
 }
示例#7
0
        //======================================================================


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