private string chargeAccount(CCAccount myAccount, CCTransaction myTransaction) { string transactionCode = "0"; decimal amount = 0; if (Decimal.TryParse(myTransaction.Amount, out amount)) { SqlCommand objCommand = new SqlCommand(); objCommand.CommandType = CommandType.StoredProcedure; objCommand.CommandText = "CCGetSpecificAccount"; objCommand.Parameters.AddWithValue("@ccNum", myAccount.CCNum); objDB.GetDataSetUsingCmdObj(objCommand); decimal balance = (decimal)objDB.GetField("balance", 0); decimal limit = (decimal)objDB.GetField("creditLimit", 0); decimal newBalance = balance + amount; if (newBalance <= limit) { SqlCommand objCommandTransaction = new SqlCommand(); objCommandTransaction.CommandType = CommandType.StoredProcedure; objCommandTransaction.CommandText = "CCPerformTransaction"; objCommandTransaction.Parameters.AddWithValue("@newBalance", newBalance); objCommandTransaction.Parameters.AddWithValue("@ccNum", myAccount.CCNum); if (objDB.DoUpdateUsingCmdObj(objCommandTransaction) != -1) { transactionCode = "1"; //charge accepted SqlCommand insertTransaction = new SqlCommand(); insertTransaction.CommandType = CommandType.StoredProcedure; insertTransaction.CommandText = "CCInsertTransaction"; insertTransaction.Parameters.AddWithValue("@ccNum", myAccount.CCNum); insertTransaction.Parameters.AddWithValue("@amount", amount); insertTransaction.Parameters.AddWithValue("@type", myTransaction.Type); insertTransaction.Parameters.AddWithValue("@date", myTransaction.Date); insertTransaction.Parameters.AddWithValue("@time", myTransaction.Time); objDB.DoUpdateUsingCmdObj(insertTransaction); //insert transaction } } else { transactionCode = "2"; //declined -- over credit limit } } else { transactionCode = "3"; //invalid amount } return(transactionCode); }
public ActionResult Capture(Guid orderId) { var order = OrderService.GetQuery().FirstOrDefault(c => c.Id == orderId); if (order != null) { var trans = order.Transactions.FirstOrDefault(); if (trans != null && PaymentType.CCard == trans.PaymentType) { var transaction = new CCTransaction { GuWID = trans.GatewayReferenceNumber, Amount = (double)trans.Amount, TransactionId = trans.OrderNumber, Mode = TransactionMode.Live }; var capture = new WireCardNet.Processing.Functions.FncCCCapture { FunctionId = "FN_Capture1" }; capture.AddTransaction(transaction); var job = new WireCardNet.Processing.Job(); job.AddFunction(capture); job.JobId = "JOB_Capture1"; job.BusinessCaseSignature = trans.GatewayContractNumber; // WireCardNet.WireCard.WireCardUsername; var processing = new WireCardNet.Processing.ProcessingRequest(); processing.AddJob(job); //processing.Send(); var response = processing.GetResponse(); var status = response.FindStatus(job.JobId, capture.FunctionId, transaction.TransactionId); Debug.WriteLine("#################################"); Debug.WriteLine("Capture result: " + status.Result); if (status.Error != null) { Debug.WriteLine("Advice: " + status.Error.Advice); Debug.WriteLine("Message: " + status.Error.Message); } else { trans.ResponseGuWID = status.GuWID; order.State = OrderState.Captured; } Debug.WriteLine("#################################"); } } return(this.RedirectToAction("Index")); }
public ActionResult Inquiry() { string getVal = Request["_val"]; string getTrxType = Request["_trxType"]; Params param = new Params() { Parameter = new Dictionary <string, string>() }; if (getVal.Length == 16) { param.Parameter.Add("cardNo", getVal); } else { param.Parameter.Add("custNo", getVal); } if ("outstanding".Equals(getTrxType)) { CreditCardOutstandingTransaction model = CCTransaction.OutstandingTransactions(param); model.getTotalNominal(); model.Sampling(); var outstandingData = new { CustomerNo = model.CustomerNo, Total = model.TotalAmount, grid = model.TransactionData }; return(Json(outstandingData, JsonRequestBehavior.AllowGet)); } if ("current".Equals(getTrxType)) { CreditCardCurrentTransaction model = CCTransaction.CurrentTransactions(param); model.getTotalAmount(); model.Sampling(); var currentData = new { CustomerNo = model.CustomerNo, Total = model.TotalAmount, grid = model.TransactionData }; return(Json(currentData, JsonRequestBehavior.AllowGet)); } if ("history".Equals(getTrxType)) { CreditCardRetrieveMultipleStatementDate st = CreditCardService.RetrieveCreditCardStatementDates(param); string julianformat = string.Empty; param.Parameter.Add("statementDate", st.Statements.Count > 0 ? st.Statements.First().StatementDateInJulianFormat : ""); CreditCardHistoricalTransaction model = CCTransaction.HistoryTransactions(param); model.CompletingInformation(st); var historicalData = new { Information = model.Information, StatementDates = st.Statements, grid = model.TransactionData }; return(Json(historicalData, JsonRequestBehavior.AllowGet)); } return(Json("", JsonRequestBehavior.AllowGet)); }
public ActionResult Refund(Guid orderId, Guid orderLineId) { var order = OrderService.GetQuery().FirstOrDefault(c => c.Id == orderId); if (order != null) { var trans = order.Transactions.FirstOrDefault(); if (trans != null && PaymentType.PayPal != trans.PaymentType) { var transaction = new CCTransaction { GuWID = trans.GatewayReferenceNumber, Amount = (double)trans.Amount, TransactionId = trans.OrderNumber, Mode = TransactionMode.Live }; var refund = new WireCardNet.Processing.Functions.FncCCRefund() { FunctionId = "Func1" }; refund.AddTransaction(transaction); var job = new WireCardNet.Processing.Job(); job.AddFunction(refund); job.JobId = "Job1"; job.BusinessCaseSignature = trans.GatewayContractNumber; // WireCardNet.WireCard.WireCardUsername; var processing = new WireCardNet.Processing.ProcessingRequest(); processing.AddJob(job); //processing.Send(); var response = processing.GetResponse(); var status = response.FindStatus("Capture1", "Func1", trans.OrderNumber); if (status.Error == null) { } } } return(this.RedirectToAction("Index")); }
public ActionResult Query(Guid orderId) { var order = OrderService.GetQuery().FirstOrDefault(c => c.Id == orderId); if (order != null) { var trans = order.Transactions.FirstOrDefault(); if (trans != null && PaymentType.CCard == trans.PaymentType) { var transaction = new CCTransaction { GuWID = trans.ResponseGuWID, Amount = (double)(trans.Amount), TransactionId = trans.OrderNumber, Mode = TransactionMode.Live }; var query = new WireCardNet.Processing.Functions.FncCcQuery() { FunctionId = "FN_Query1" }; query.AddTransaction(transaction); var job = new WireCardNet.Processing.Job(); job.AddFunction(query); job.JobId = "JOB_Query1"; job.BusinessCaseSignature = trans.GatewayContractNumber; // WireCardNet.WireCard.WireCardUsername; var processing = new WireCardNet.Processing.ProcessingRequest(); processing.AddJob(job); var response = processing.GetResponse(); var status = response.FindStatus(job.JobId, query.FunctionId, transaction.TransactionId); } } return(this.RedirectToAction("Index")); }
public string[] processTransaction(ref string[] transactionInfo, int apiKey) { //create customer, transaction, and account objects CCCustomer myCustomer = new CCCustomer(); CCAccount myAccount = new CCAccount(); CCTransaction myTransaction = new CCTransaction(); //initialize return values myTransaction.Date = ""; myTransaction.Time = ""; string acceptOrDecline = "Decline"; string transactionCode = "0"; //retrieve and assign verification codes myCustomer.LastName = transactionInfo[LNAME_INDEX]; string serverVerificationCode = ccProc.generateVerificationCode(myCustomer).ToString(); string clientVerificationCode = transactionInfo[CODE_INDEX]; //check if verification codes match, if so -- proceed with account verification if (serverVerificationCode == clientVerificationCode && apiKey == API_KEY) { //assign values to customer and account objects myCustomer.FirstName = transactionInfo[FNAME_INDEX]; myCustomer.Zip = transactionInfo[ZIP_INDEX]; myAccount.CCNum = transactionInfo[CCNUM_INDEX]; myAccount.ExpDate = transactionInfo[DATE_INDEX]; myAccount.Cvc = transactionInfo[CVC_INDEX]; //verify account information, if so -- process transaction if (verifyAccount(myAccount, myCustomer)) { myTransaction.Amount = transactionInfo[AMT_INDEX]; myTransaction.Type = transactionInfo[TYPE_INDEX]; myTransaction.Date = DateTime.Today.ToString("MM/dd/yyyy"); myTransaction.Time = DateTime.Now.ToString("HH:mm"); //check for transaction type -- perform desired transaction if (myTransaction.Type == "Payment") { transactionCode = makePayment(myAccount, myTransaction); if (transactionCode == "1") //successful transaction { acceptOrDecline = "Accept"; } } else if (myTransaction.Type == "Purchase") { transactionCode = chargeAccount(myAccount, myTransaction); if (transactionCode == "1") //successful transaction { acceptOrDecline = "Accept"; } } else { transactionCode = "99"; //unknown transaction type } } else { transactionCode = "3"; //account information invalid (unverified) } } else { //verification string invalid } //assign values to return array string[] transactionReturnInfo = new string[4]; transactionReturnInfo[ACCEPTORDECLINE_INDEX] = acceptOrDecline; transactionReturnInfo[TRANSACTIONCODE_INDEX] = transactionCode; transactionReturnInfo[TRANSACTIONDATE_INDEX] = myTransaction.Date; transactionReturnInfo[TRANSACTIONTIME_INDEX] = myTransaction.Time; //return transaction array return(transactionReturnInfo); }
public ActionResult TransactionsByStatement() { string getNo = Request["_no"]; string getStatementDate = Request["_statementDate"]; Params param = new Params() { Parameter = new Dictionary <string, string>() }; if (getNo.Length == 16) { param.Parameter.Add("cardNo", getNo); } else { param.Parameter.Add("custNo", getNo); } param.Parameter.Add("statementDate", getStatementDate); CreditCardHistoricalTransaction model = CCTransaction.HistoryTransactions(param); double newBalance = 0; double newBill = 0; foreach (CreditCardInformation entry in model.CreditCards) { IEnumerable <CreditCardTransaction> creditCardTransactions = from transaction in model.Transactions where transaction.CreditCardNo == entry.CreditCardNo select transaction; double?negativeAmount = (from creditCardTransaction in creditCardTransactions where CCTransaction.HistoricalTransactionCodesForNegativeAmount.Contains(creditCardTransaction.TransactionCode) select creditCardTransaction.Amount).Sum(); double?positiveAmount = (from creditCardTransaction in creditCardTransactions where !CCTransaction.HistoricalTransactionCodesForNegativeAmount.Contains(creditCardTransaction.TransactionCode) select creditCardTransaction.Amount).Sum(); double?previousBalance = (from creditCardTransaction in creditCardTransactions select creditCardTransaction.PreviousBalance).Sum(); double?subTotal = positiveAmount - negativeAmount + previousBalance; if (subTotal.HasValue) { newBalance += subTotal.Value; newBill = newBalance - ((double)model.Information.OldBalance) + ((double)model.Information.Credit); } entry.PrevBalance = previousBalance; entry.SubTotal = subTotal; } model.Information.NewBalance = newBalance; model.Information.NewBill = newBill; model.Sampling(); var historicalData = new { Information = model.Information, grid = model.TransactionData }; return(Json(historicalData, JsonRequestBehavior.AllowGet)); }