Beispiel #1
0
        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"));
        }
Beispiel #6
0
        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));
        }