public override List <Payment> GetPayments(ServiceProvider.OrderSvc.Address_V01 shippingAddress)
        {
            var paymentList = new List <Payment>();

            CheckForPaymentGatewayResponse();
            var choice = GetCurrentPaymentOption();

            switch (choice)
            {
            case PaymentOptionChoice.DirectDeposit:
            case PaymentOptionChoice.WireTransfer:
            case PaymentOptionChoice.PaymentGateway:
            {
                paymentList.Add(CreateDummyPayment(shippingAddress));
                break;
            }

            case PaymentOptionChoice.CreditCard:
            {
                var paymentInfo = GetCurrentPaymentInformation(_locale, _distributorId);

                foreach (GridViewRow row in gridViewCardInfo.Rows)
                {
                    var cardType       = row.FindControl("lblCardType") as Label;
                    var lblIssueNumber = row.FindControl("lblIssueNumber") as TextBox;
                    var txtCVV         = row.FindControl("txtCVV") as TextBox;
                    var txtAmount      = row.FindControl("txtAmount") as TextBox;
                    var id             = row.FindControl("cardID") as TextBox;
                    var payOption      = row.FindControl("txtOption") as TextBox;
                    var choice1        = row.FindControl("txtChoice1") as TextBox;
                    var choice2        = row.FindControl("txtChoice2") as TextBox;
                    var ddInstallments = (DropDownList)row.FindControl("drpInstallments");
                    var currentOptions = row.FindControl("lnkPaymentOptions") as LinkButton;
                    int cardID         = int.Parse(id.Text);
                    var ddBCPoints     = row.FindControl("drpUsePoints") as DropDownList;

                    decimal cardAmount;
                    if (decimal.TryParse(txtAmount.Text, out cardAmount) && cardID > 0)
                    {
                        var info = paymentInfo.Find(p => p.ID == cardID);

                        var thePayment = new CreditPayment();
                        if (info.CardType.Trim() == "국민카드" || info.CardType.Trim() == "비씨카드")
                        {
                            var payment = new KoreaISPPayment_V01();
                            payment.Amount = cardAmount;
                            payment.AuthorizationMethod = AuthorizationMethodType.Online;
                            payment.Card = new CreditCard();
                            payment.Card.AccountNumber = info.CardNumber;
                            payment.Card.NameOnCard    = (info.CardHolder.First.Trim() + " " + info.CardHolder.Last.Trim()).Trim();
                            payment.Card.Expiration    = info.Expiration;
                            payment.Card.CVV           = txtCVV.Text.Trim();
                            payment.Currency           = HLConfigManager.Configurations.CheckoutConfiguration.Currency.Trim();
                            payment.Address            = (null != info.BillingAddress) ? info.BillingAddress : shippingAddress;
                            payment.BCTopPoints        = info.CardType.Trim() == "국민카드" ? int.Parse(ddBCPoints.SelectedValue) : 0;
                            var options = new PaymentOptions_V01();
                            options.NumberOfInstallments = int.Parse(ddInstallments.SelectedValue) + payment.BCTopPoints;
                            payment.PaymentOptions       = options;
                            payment.KvpEncryptedData     = info.IssueNumber;
                            payment.Card.IssuingBankID   = info.CardType;
                            payment.KvpSessionKey        = "FA";

                            thePayment = payment;
                        }
                        else
                        {
                            var payment = new KoreaMPIPayment_V01();
                            payment.Amount = cardAmount;
                            payment.AuthorizationMethod = AuthorizationMethodType.Online;
                            payment.Card = new CreditCard();
                            payment.Card.AccountNumber = info.CardNumber;
                            payment.Card.NameOnCard    = (info.CardHolder.First.Trim() + " " + info.CardHolder.Last.Trim()).Trim();
                            payment.Card.Expiration    = info.Expiration;
                            payment.Card.CVV           = txtCVV.Text.Trim();
                            payment.Currency           = HLConfigManager.Configurations.CheckoutConfiguration.Currency.Trim();
                            payment.Address            = (null != info.BillingAddress) ? info.BillingAddress : shippingAddress;
                            var options = new PaymentOptions_V01();
                            options.NumberOfInstallments = int.Parse(ddInstallments.SelectedValue);
                            payment.PaymentOptions       = options;
                            payment.CAVV = info.IssueNumber;
                            payment.Card.IssuingBankID = info.CardType;
                            payment.ECI = "";
                            payment.XID = "FA";

                            thePayment = payment;
                        }

                        thePayment.ReferenceID = currentOptions.Text;
                        paymentList.Add(thePayment);
                    }
                }
                break;
            }
            }

            string currentKey = PaymentsConfiguration.GetCurrentPaymentSessionKey(_locale, _distributorId);

            Session[currentKey] = paymentList;
            return(paymentList);
        }
        protected void OnAuthorizeAttempt(object sender, EventArgs e)
        {
            string xid        = XID.Value;
            string eci        = ECI.Value;
            string cavv       = CAVV.Value;
            string sessionKey = SessionKey.Value;
            string encData    = EncryptedData.Value;
            string cardNumber = CardNumber.Value;

            var item              = dataListCardInfo.Items[dataListCardInfo.Items.Count - 1].FindControl("creditPaymentInfo") as PaymentInfoControl_KS;
            var txtId             = item.FindControl("txtId") as TextBox;
            var txtAmount         = item.FindControl("txtAmount") as TextBox;
            var txtCardholderName = item.FindControl("txtCardholderName") as TextBox;
            var txtPaymentMethod  = item.FindControl("txtPaymentMethodType") as TextBox;
            var ddlCardType       = item.FindControl("ddlCardType") as DropDownList;
            var ddlInstallments   = item.FindControl("ddlInstallments") as DropDownList;
            var ddlBCPoints       = item.FindControl("ddlBCPoint") as DropDownList;

            CreditPayment thePayment = null;

            if (txtPaymentMethod.Text == "XMPI")
            {
                if (!string.IsNullOrEmpty((xid + eci + cavv)))
                {
                    var payment = new KoreaMPIPayment_V01();
                    payment.Amount = decimal.Parse(txtAmount.Text);
                    payment.AuthorizationMethod = AuthorizationMethodType.Online;
                    payment.Card = new CreditCard();
                    payment.Card.AccountNumber = cardNumber;
                    payment.Card.NameOnCard    = txtCardholderName.Text;
                    payment.Card.Expiration    = new DateTime(2049, 12, 31);
                    payment.Currency           = CurrencyType.KRW.Key;
                    payment.XID  = xid;
                    payment.CAVV = cavv;
                    payment.ECI  = eci;
                    var options = new PaymentOptions_V01();
                    options.NumberOfInstallments = int.Parse(ddlInstallments.SelectedValue);
                    payment.PaymentOptions       = options;
                    payment.AuthorizationCode    = "123456";
                    thePayment = payment;
                }
            }
            else
            {
                if (!string.IsNullOrEmpty((sessionKey + encData)))
                {
                    var payment = new KoreaISPPayment_V01();
                    payment.LineID = txtId.Text;
                    payment.Amount = decimal.Parse(txtAmount.Text);
                    payment.AuthorizationMethod = AuthorizationMethodType.Online;
                    payment.Card = new CreditCard();
                    payment.Card.AccountNumber = PaymentInfoProvider.VisaCardNumber;
                    payment.Card.NameOnCard    = txtCardholderName.Text;
                    payment.Card.Expiration    = new DateTime(2049, 12, 31);
                    payment.Currency           = HL.Common.ValueObjects.CurrencyType.KRW.Key;
                    payment.KvpEncryptedData   = encData;
                    // "sdfsdfhsdfgsdgfsdfgsdfgsdfgsdfgsdfgsdfgsdfg;jtrtgowrhgiwerhgifhgldkfjgvs;dofgjvsdfvhdfvhsldihvrlserhgew;jgdfgnkfvnkdzs,n.x,cbn"; // encData;
                    payment.KvpSessionKey = sessionKey;
                    // "yaoieyrboacryserivnpeiorugnpxm,posijfpxfbjzx;cvzx;c mzclvk nzkchvado;fjivga'dfivhjadofvhad;fvha;uisdvhasdcbx.vlkc;'vndgtohuwpsrotuywpergynbsactyserngisrcuyudrfhxonzisudhfbxaiufheowrhcfisdfuhvsdofihjv"; // sessionKey;
                    payment.BCTopPoints = int.Parse(ddlBCPoints.SelectedValue);
                    ;
                    var options = new PaymentOptions_V01();
                    options.NumberOfInstallments = int.Parse(ddlInstallments.SelectedValue) + payment.BCTopPoints;
                    payment.PaymentOptions       = options;
                    payment.AuthorizationCode    = "123456";
                    thePayment = payment;
                }
            }

            if (null != thePayment)
            {
                thePayment.Card.IssuingBankID = ddlCardType.SelectedItem.Text;
                thePayment.Address            = new Address_V01();

                if (string.IsNullOrEmpty(thePayment.AuthorizationCode))
                {
                    //lblCreditCardMessage.Text = GetLocalResourceObject("ValidateCardPaymentAuthFailedMessage") as string;
                }
                else
                {
                    var items = GetPaymentInformation();
                    var p     = (from c in items where c.LineID == thePayment.LineID select c);

                    if (p.Count() > 0)
                    {
                        int index = items.IndexOf(p.First());
                        items.RemoveAt(index);
                        items.Insert(index, thePayment);
                    }
                    else
                    {
                        items.Insert(0, thePayment);
                    }
                    SetPaymentInformation(items);

                    _CurrentPaymentsList        = GetCurrentCardsList();
                    dataListCardInfo.DataSource = _CurrentPaymentsList;
                    dataListCardInfo.DataBind();
                    ResolvePayments();
                    SetupGridRows();

                    var status = OrderCoveredStatus.PartiallyCovered;
                    var tot    =
                        (from c in _CurrentPaymentsList where !string.IsNullOrEmpty(c.AuthorizationCode) select c.Amount)
                        .Sum();
                    if (null != _orderTotals && tot == _orderTotals.AmountDue)
                    {
                        status = OrderCoveredStatus.FullyCovered;
                    }
                    OnCreditCardAuthenticated(thePayment, new CreditCardAuthenticationCompletedEventArgs(status));
                }
            }
        }