private void GetFee() { string outputTrigger = "error"; // Reset respective transaction context fields. try { if (Boolean.Parse(ConfigurationManager.AppSettings["StandAloneMode"])) { Thread.Sleep(1000); this.Transaction.AppliedFee = 2.35; } else { using (MBMEMawaqifServiceClient client = new MBMEMawaqifServiceClient()) { this.Transaction.AppliedFee = client.GetAppliedFee(Convert.ToInt32(this.Transaction.MachineId)); } } switch (this.Transaction.ServiceType) { case MawaqifServiceType.AccountTopUp: outputTrigger = "topupsubmit"; break; case MawaqifServiceType.PermitRenewal: outputTrigger = "rpsubmit"; break; case MawaqifServiceType.ViolationPayment: outputTrigger = "pvtsubmit"; break; } if (this.Transaction.AppliedFee == 0) { outputTrigger = ERRORACTION; } } catch (Exception ex) { if (log.IsErrorEnabled) log.Error("DU,caught exception GetAppliedFee try block for Transactionid:" + this.Transaction.Id + "." + ex.Message); } finally { ViewGrid.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new DGetBalanceProcessed(ChangeState), outputTrigger); } }
/// <summary> /// Mawaqif Account Top Up Call /// </summary> /// <param name="outputTrigger"></param> /// <returns>eg error or submit</returns> private string TopUpRequest(string outputTrigger) { if (log.IsInfoEnabled) log.Info("mawaqif,TopUpRequest started.."); TopUpPaymentRequest request = new TopUpPaymentRequest { TransactionTime = DateTime.Now, TransactionId = this.Transaction.Id, AccountNumber = this.Transaction.AccountNumber, PaymentMode = (this.Transaction.CardPayment) ? MBMEPaymentMode.CARD : MBMEPaymentMode.CASH, LastBalance = this.Transaction.BalanceDue, NewBalance = this.Transaction.AmountDue, Amount = this.Transaction.AmountPaid, MachineId = long.Parse(this.Transaction.MachineId), StimulateResponse = this.Transaction.StimulateBackend, ClientTxnId = this.Transaction.Id, Language = (Transaction.SelectedLanguageKey == "english") ? KioskLanguage.English: KioskLanguage.Arabic, ServiceType = MawaqifBackendProxy.MawaqifServiceType.AccountTopUp, AppliedFee = this.Transaction.AppliedFeeAmount }; if (log.IsInfoEnabled) log.Info("mawaqif,TopUpPaymentRequest initialized.."); TopUpPaymentResponse response = new TopUpPaymentResponse { ResponseCode = "-2" }; try { if (this.Transaction.AmountPaid != "0.00") { ValidateCertificate.RegisterCallback(); if (log.IsInfoEnabled) log.Info("mawaqif,before TopUpPostPayment call.."); using (MBMEMawaqifServiceClient client = new MBMEMawaqifServiceClient()) { response = client.TopUpPostPayment(request); trnsLoggedLocaly = true; if (log.IsInfoEnabled) log.Info("mawaqif,TopUpPostPayment success.." + response.ResponseMessage); } } else { trnsLoggedLocaly = true; } } catch (TimeoutException ex) { Trace.WriteLine("mawaqif,caught TimeoutException exception.."); if (log.IsErrorEnabled) log.Error("mawaqif,caught TimeoutException exception.." + ex.Message.ToString()); outputTrigger = "error"; this.TransactionContext.PostingFailed = true; Trace.WriteLine(ex.Message); } catch (EndpointNotFoundException ex) { if (log.IsErrorEnabled) log.Error("mawaqif,found EndpointNotFoundException in TopUpRequest " + ex.Message); outputTrigger = "error"; this.Transaction.PostingFailed = true; Trace.WriteLine(ex.Message); } catch (CommunicationException ex) { if (log.IsErrorEnabled) log.Error("mawaqif,found CommunicationException in TopUpRequest " + ex.Message); outputTrigger = "error"; this.Transaction.PostingFailed = true; } catch (Exception ex) { if (log.IsErrorEnabled) log.Error("mawaqif,found general exception in TopUpRequest " + ex.Message); this.Transaction.PostingFailed = true; Trace.WriteLine(ex.Message); } finally { if (log.IsInfoEnabled) log.Info("mawaqif,certificate deregistered.."); ValidateCertificate.DeregisterCallback(); if (response.TxnId > 0) { this.Transaction.TxnId = response.TxnId; this.Transaction.ReceiptNumber = response.TxnId.ToString(); } if (!trnsLoggedLocaly) { bool trans = this.LogTransactionToLocalDb(); trnsLoggedLocaly = true; } } if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.Success).ToString()) { outputTrigger = SUBMITACTION; } else { if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.BillerError).ToString()) { this.Transaction.Message = response.ResponseMessage; outputTrigger = BILLERERRORACTION; this.Transaction.TransactionFailed = true; } else { outputTrigger = SUBMITACTION; this.Transaction.TransactionFailed = true; } } outputTrigger = SUBMITACTION; if (log.IsInfoEnabled) log.Info("mawaqif,TopUpRequest ended ..And outputTrigger=" + outputTrigger); return outputTrigger; }
///// <summary> ///// Violation Payment Request ///// </summary> ///// <param name="outputTrigger"></param> ///// <returns></returns> //private string vpayRequest(string outputTrigger) //{ // PVTPaymentRequest request = new PVTPaymentRequest // { // TransactionTime = DateTime.Now, // TransactionId = this.Transaction.Id, // AccountNumber = this.Transaction.AccountNumber, // LastBalance = this.Transaction.BalanceDue, // NewBalance = this.Transaction.AmountDue, // Amount = this.Transaction.AmountPaid, // MachineId = long.Parse(this.Transaction.MachineId), // ReceiptNo = this.Transaction.Id, // StimulateResponse = this.Transaction.StimulateBackend, // Language = (Transaction.SelectedLanguageKey == "english") ? KioskLanguage.English : // KioskLanguage.Arabic, // ServiceType = MawaqifBackendProxy.MawaqifServiceType.ViolationPayment, // PaymentMode = (this.Transaction.CardPayment) ? MBMEPaymentMode.CARD : MBMEPaymentMode.CASH, // AppliedFee = this.Transaction.AppliedFeeAmount // }; // PVTPaymentResponse response = new PVTPaymentResponse { ResponseCode = "-2" }; // //Kiosk Stimulate Response // if (Boolean.Parse(ConfigurationManager.AppSettings["StandAloneMode"])) // { // if (log.IsInfoEnabled) log.Info("mawaqif, Checking standalone configuration" + Boolean.Parse(ConfigurationManager.AppSettings["StandAloneMode"]).ToString()); // outputTrigger = SUBMITACTION; // Thread.Sleep(1000); // } // else // { // try // { // ValidateCertificate.RegisterCallback(); // using (MBMEMawaqifServiceClient client = new MBMEMawaqifServiceClient()) // { // response = client.PVTPostPayment(request); // trnsLoggedLocaly = true; // } // } // catch (EndpointNotFoundException ex) // { // this.Transaction.PostingFailed = true; // Trace.WriteLine(ex.Message); // } // catch (CommunicationException ex) // { // this.Transaction.PostingFailed = true; // Trace.WriteLine(ex.Message); // } // catch (Exception ex) // { // this.Transaction.PostingFailed = true; // Trace.WriteLine(ex.Message); // } // finally // { // ValidateCertificate.DeregisterCallback(); // this.Transaction.TxnId = response.TxnId; // if (response.TxnId > 0) // { // this.Transaction.TxnId = response.TxnId; // this.Transaction.ReceiptNumber = response.TxnId.ToString(); // } // if (!trnsLoggedLocaly) // { // bool trans = this.LogTransactionToLocalDb(); // trnsLoggedLocaly = true; // } // outputTrigger = SUBMITACTION; // } // //Check for Biller Response // if (response.ResponseCode == ((int)MBMEServiceResponse.Success).ToString()) // { // outputTrigger = SUBMITACTION; // } // else // { // if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.BillerError).ToString()) // { // this.Transaction.Message = response.ResponseMessage; // outputTrigger = BILLERERRORACTION; // this.Transaction.TransactionFailed = true; // } // else // { // outputTrigger = SUBMITACTION; // this.Transaction.TransactionFailed = false; // } // } // } // return outputTrigger; //} /// <summary> /// Renewal Permit Request /// </summary> /// <param name="outputTrigger"></param> /// <returns></returns> private string rpRequest(string outputTrigger) { RPPaymentRequest request = new RPPaymentRequest { TransactionTime = DateTime.Now, TransactionId = this.Transaction.Id, AccountNumber = this.Transaction.AccountNumber, LastBalance = this.Transaction.BalanceDue, NewBalance = this.Transaction.AmountDue, Amount = this.Transaction.AmountPaid, MachineId = long.Parse(this.Transaction.MachineId), StimulateResponse = this.Transaction.StimulateBackend, Language = (Transaction.SelectedLanguageKey == "english") ? KioskLanguage.English : KioskLanguage.Arabic, ServiceType = MawaqifBackendProxy.MawaqifServiceType.PermitRenewal, PaymentMode = (this.Transaction.CardPayment) ? MBMEPaymentMode.CARD : MBMEPaymentMode.CASH, AppliedFee = this.Transaction.AppliedFeeAmount }; RPPaymentResponse response = new RPPaymentResponse { ResponseCode = "-2" }; try { ValidateCertificate.RegisterCallback(); using (MBMEMawaqifServiceClient client = new MBMEMawaqifServiceClient()) { response = client.RPPostPayment(request); trnsLoggedLocaly = true; this.Transaction.TxnId = response.TxnId; } } catch (EndpointNotFoundException ex) { Transaction.PostingFailed = true; outputTrigger = ERRORACTION; Trace.WriteLine(ex.Message); } catch (CommunicationException ex) { Transaction.PostingFailed = true; outputTrigger = ERRORACTION; Trace.WriteLine(ex.Message); } catch (Exception ex) { Transaction.PostingFailed = true; Trace.WriteLine(ex.Message); } finally { ValidateCertificate.DeregisterCallback(); if (response.TxnId > 0) { this.Transaction.TxnId = response.TxnId; this.Transaction.ReceiptNumber = response.TxnId.ToString(); } if (!trnsLoggedLocaly) { bool trans = this.LogTransactionToLocalDb(); trnsLoggedLocaly = true; } } if (response.ResponseCode == "0") { outputTrigger = SUBMITACTION; } else { if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.BillerError).ToString()) { this.Transaction.Message = response.ResponseMessage; outputTrigger = BILLERERRORACTION; //outputTrigger = SUBMITACTION; this.Transaction.TransactionFailed = true; } else { outputTrigger = ERRORACTION; this.Transaction.TransactionFailed = false; } } return outputTrigger; }
private void TopupRequest(ref string outputTrigger) { outputTrigger = ERRORACTION; TopUpBalanceRequest request = new TopUpBalanceRequest { AccountNumber = this.TransactionContext.AccountNumber, TransactionTime = Transaction.Date, TransactionId = this.Transaction.Id, MachineId = long.Parse(this.Transaction.MachineId), //StimulateResponse = this.Transaction.StimulateBackend, PIN = "000", ServiceType = MawaqifBackendProxy.MawaqifServiceType.AccountTopUp, Language = (Transaction.SelectedLanguageKey == "english") ? MawaqifBackendProxy.KioskLanguage.English : MawaqifBackendProxy.KioskLanguage.Arabic, }; TopUpBalanceResponse response = new TopUpBalanceResponse { BalanceAmount = "0.00", ResponseCode = Convert.ToInt16(MBMEServiceResponse.Failed).ToString() }; ValidateCertificate.RegisterCallback(); using (MBMEMawaqifServiceClient client = new MBMEMawaqifServiceClient()) { try { response = client.TopUpGetBalance(request); } catch (TimeoutException ex) { outputTrigger = TIMEOUTACTION; if (log.IsInfoEnabled) log.Info("caught timeout exception in mawaqif." + ex.Message); } catch (Exception ex) { outputTrigger = ERRORACTION; //Trace.WriteLine(ex.Message.ToString()); if (log.IsInfoEnabled) log.Info("caught exception in mawaqif."+ex.Message); // KS TODO: Logging. } finally { this.Transaction.TxnId = response.TxnId; this.Transaction.ReceiptNumber = response.TxnId.ToString(); ValidateCertificate.DeregisterCallback(); } } //KS TODO : Logging. if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.Success).ToString()) { //this.Transaction.AccountNumber = response.AccountNumber; this.Transaction.BalanceDue = string.Format("{0:0.00}", (Math.Ceiling(Convert.ToDecimal(response.BalanceAmount))).ToString()); this.Transaction.AmountDue = string.Format("{0:0.00}", (Math.Ceiling(Convert.ToDecimal(response.BalanceAmount))).ToString()); //this.Transaction.AmountPaid = response.BalanceAmount; outputTrigger = SUBMITACTION; } else { this.Transaction.AccountNumber = string.Empty; if (this.Transaction.InvalidCount < this.State.RetryCount) { if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.BillerError).ToString()) { Transaction.InvalidCount++; Transaction.Message = response.ResponseMessage; outputTrigger = BILLERERRORACTION; } } else outputTrigger = ERRORACTION; } }
//private void vpayRequest(ref string outputTrigger) //{ // outputTrigger = ERRORACTION; // PVTBalanceRequest request = new PVTBalanceRequest // { // TransactionTime = Transaction.Date, // AccountNumber = this.TransactionContext.AccountNumber, // TransactionId = this.Transaction.Id, // MachineId = long.Parse(this.Transaction.MachineId), // StimulateResponse = this.Transaction.StimulateBackend, // Locale = this.Transaction.LocaleId, // ServiceType= MawaqifBackendProxy.MawaqifServiceType.ViolationPayment, // Language = (Transaction.SelectedLanguageKey == "english") ? MawaqifBackendProxy.KioskLanguage.English : MawaqifBackendProxy.KioskLanguage.Arabic, // }; // PVTBalanceResponse response = new PVTBalanceResponse // { // ResponseCode = Convert.ToInt16(MBMEServiceResponse.Failed).ToString(), // }; // ValidateCertificate.RegisterCallback(); // using (MBMEMawaqifServiceClient client = new MBMEMawaqifServiceClient()) // { // try // { // response = client.PVTGetBalance(request); // } // catch (Exception ex) // { // outputTrigger = ERRORACTION; // //Trace.WriteLine(ex.Message); // if (log.IsInfoEnabled) log.Info("caught exception in PVTGetBalance." + ex.Message); // } // finally // { // this.Transaction.TxnId = response.TxnId; // this.Transaction.ReceiptNumber = response.TxnId.ToString(); // ValidateCertificate.DeregisterCallback(); // } // } // //KS TODO : Logging. // if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.Success).ToString()) // { // this.Transaction.AccountNumber = response.AccountNumber; // Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); // this.Transaction.IssueDate = response.IssueDate.ToString((this.Transaction.LocaleId == "en") ? // "dd/MM/yyyy HH:mm:ss" : "HH:mm:ss yyyy/MM/dd"); // //this.Transaction.IssueDate = response.IssueDate.ToString("dd/MM/yyyy HH:mm:ss"); // this.Transaction.PlateNumber = response.PlateNumber; // this.Transaction.BalanceDue = Convert.ToDouble(response.Amount).ToString("0.00"); // this.Transaction.AmountDue = Convert.ToDouble(response.Amount).ToString("0.00"); // this.Transaction.Country = response.Country; // this.Transaction.Category = response.Category; // this.Transaction.PVTType = response.Type; // this.Transaction.StageMessage = response.ResponseMessage; // outputTrigger = SUBMITACTION; // } // else // { // this.Transaction.AccountNumber = string.Empty; // if (this.Transaction.InvalidCount < this.State.RetryCount) // { // if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.BillerError).ToString()) // { // Transaction.InvalidCount++; // Transaction.Message = response.ResponseMessage; // outputTrigger = BILLERERRORACTION; // } // else // { // outputTrigger = ERRORACTION; // } // } // else // outputTrigger = ERRORACTION; // } //} private void rpRequest(ref string outputTrigger) { outputTrigger = ERRORACTION; RPBalanceRequest request = new RPBalanceRequest { TransactionTime = Transaction.Date, AccountNumber = this.TransactionContext.AccountNumber, TransactionId = this.Transaction.Id, StimulateResponse = this.Transaction.StimulateBackend, MachineId = long.Parse(this.Transaction.MachineId), LocaleId = this.Transaction.LocaleId, ServiceType = MawaqifBackendProxy.MawaqifServiceType.PermitRenewal, Language = (Transaction.SelectedLanguageKey=="english")?MawaqifBackendProxy.KioskLanguage.English: MawaqifBackendProxy.KioskLanguage.Arabic, }; RPBalanceResponse response = new RPBalanceResponse { ResponseCode = Convert.ToInt16(MBMEServiceResponse.Failed).ToString() }; ValidateCertificate.RegisterCallback(); using (MBMEMawaqifServiceClient client = new MBMEMawaqifServiceClient()) { try { response = client.RPGetBalance(request); } catch (Exception ex) { outputTrigger = ERRORACTION; if (log.IsErrorEnabled) log.Error(ex.Message); //Trace.WriteLine(ex.Message); // KS TODO: Logging. } finally { this.Transaction.TxnId = response.TxnId; this.Transaction.ReceiptNumber = response.TxnId.ToString(); ValidateCertificate.DeregisterCallback(); } } //KS TODO : Logging. if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.Success).ToString()) { this.Transaction.AccountNumber = response.AccountNumber; this.Transaction.IssueDate = response.IssuedDate.ToString((this.Transaction.LocaleId=="en")? "dd/MM/yyyy" : "yyyy/MM/dd"); this.Transaction.ExpiryDate = response.ExpiryDate.ToString((this.Transaction.LocaleId == "en")? "dd/MM/yyyy" : "yyyy/MM/dd"); this.Transaction.BalanceDue = Convert.ToDouble(response.PermitCost).ToString("0.00"); this.Transaction.AmountDue = Convert.ToDouble(response.PermitCost).ToString("0.00"); //this.Transaction.AmountPaid = response.BalanceAmount; outputTrigger = SUBMITACTION; } else { this.Transaction.AccountNumber = string.Empty; if (this.Transaction.InvalidCount < this.State.RetryCount) { if (response.ResponseCode == Convert.ToInt16(MBMEServiceResponse.BillerError).ToString()) { Transaction.InvalidCount++; //split the message into two lines if ((string.IsNullOrEmpty(response.PermitStage) ? "" : response.PermitStage.ToLower()) == "permit issued") { Transaction.Message = response.ResponseMessage.Replace("-n","\n"); } else { Transaction.Message = response.ResponseMessage; } outputTrigger = BILLERERRORACTION; } else { outputTrigger = ERRORACTION; } } else outputTrigger = ERRORACTION; } }