private PaymentOptions GetPaymentOptions(TextBox paymentOption, TextBox option1, TextBox option2, DropDownList installments)
        {
            var options          = new PaymentOptions_V01();
            int installmentValue = 0;

            int.TryParse(installments.SelectedValue, out installmentValue);
            options.NumberOfInstallments = installmentValue;

            return(options);
        }
Ejemplo n.º 2
0
        public override Payment GetPaymentInfo()
        {
            var    payment = base.GetBasePaymentInfo() as CreditPayment_V01;
            string payCode = ddlCards.SelectedValue;

            if (!string.IsNullOrEmpty(payCode))
            {
                payment.Card.IssuerAssociation = CreditCard.GetCardType(payCode);
            }
            var options = new PaymentOptions_V01();

            options.NumberOfInstallments = Int32.Parse(ddlInstallments.SelectedValue);
            payment.PaymentOptions       = options;
            //payment.Card.IssuingBankID = _cards.Card.Find(c => c.CardId == ddlCards.SelectedValue).Id.ToString();

            Session.Remove(PaymentGatewayInvoker.PaymentInformation);
            Session.Add(PaymentGatewayInvoker.PaymentInformation, payment);

            return(payment);
        }
        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);
        }
        public override void GetPaymentInfo(SerializedOrderHolder holder)
        {
            ServiceProvider.SubmitOrderBTSvc.Payment payment = holder.BTOrder.Payments[0];
            CreditPayment_V01 orderPayment      = (holder.Order as Order_V01).Payments[0] as CreditPayment_V01;
            List <string>     PaymentGatewayLog = OrderProvider.GetPaymentGatewayLog(OrderNumber, PaymentGatewayLogEntryType.Response);
            string            theOne            = PaymentGatewayLog.Find(i => i.Contains(CardNum));

            if (!string.IsNullOrEmpty(theOne))
            {
                NameValueCollection theResponse = GetRequestVariables(theOne);
                // Card Number
                if (!string.IsNullOrEmpty(theResponse[CardNum]))
                {
                    CardNumber = theResponse[CardNum];
                }
                // Authorization Code
                if (!string.IsNullOrEmpty(theResponse[AuthCode]))
                {
                    base.AuthorizationCode = theResponse[AuthCode];
                }
                base.GetPaymentInfo(holder);

                //WebPay Amount
                if (!string.IsNullOrEmpty(theResponse[Amount]))
                {
                    payment.Amount = Int32.Parse(theResponse[Amount]);
                }
                orderPayment.Amount = payment.Amount;


                // Number of Installments
                PaymentOptions_V01 options = new PaymentOptions_V01();
                if (!string.IsNullOrEmpty(theResponse[InstallmentNumber]))
                {
                    options.NumberOfInstallments = Int32.Parse(theResponse[InstallmentNumber]);
                }
                else
                {
                    options.NumberOfInstallments = 1;
                }
                payment.NumberOfInstallments = options.NumberOfInstallments;
                orderPayment.PaymentOptions  = options;

                // Installment Type is Card Type (VN for credit card, VD for debit card); borrow the Auth Merchant field to place the data to display on the page
                if (!string.IsNullOrEmpty(theResponse[InstallmentType]))
                {
                    payment.AuthMerchant = theResponse[InstallmentType];
                    switch (theResponse[InstallmentType].ToString().ToUpper())
                    {
                    case "VN":
                        CardType = IssuerAssociationType.Visa;
                        break;

                    case "VD":
                        CardType = IssuerAssociationType.GenericDebitCard;
                        break;

                    default:
                        CardType = IssuerAssociationType.Visa;
                        break;
                    }
                }
                orderPayment.AuthorizationMerchantAccount = payment.AuthMerchant;
            }
        }
        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));
                }
            }
        }
        private Payment CreateDummyPayment(Address_V01 address)
        {
            Payment payment = null;
            var     cc      = new CreditCard();

            cc.IssuerAssociation = CreditCard.GetCardType("VI");
            cc.AccountNumber     = PaymentInfoProvider.VisaCardNumber;
            cc.CVV        = "123";
            cc.Expiration = new DateTime(2012, 2, 1);
            cc.NameOnCard = "Test Card";

            switch (GetCurrentPaymentOption())
            {
            case PaymentOptionChoice.CreditCard:
            {
                var cp      = new CreditPayment_V01();
                var options = new PaymentOptions_V01();
                options.NumberOfInstallments = 1;
                cp.PaymentOptions            = options;
                cp.AuthorizationMethod       = AuthorizationMethodType.Online;
                cp.AuthorizationCode         = "123456";
                cp.Card = cc;
                payment = cp;
                break;
            }

            case PaymentOptionChoice.PaymentGateway:
            {
                var cp      = new CreditPayment_V01();
                var options = new PaymentOptions_V01();
                options.NumberOfInstallments = 1;
                string payCode = HLConfigManager.Configurations.PaymentsConfiguration.PaymentGatewayPayCode;
                if (!string.IsNullOrEmpty(payCode))
                {
                    cc.IssuerAssociation = CreditCard.GetCardType(payCode);
                }
                cp.Card                = cc;
                cp.PaymentOptions      = options;
                cp.AuthorizationMethod = AuthorizationMethodType.PaymentGateway;
                cp.TransactionType     = HLConfigManager.Configurations.PaymentsConfiguration.PaymentGatewayAlias;
                cp.AuthorizationCode   = "654321";
                //cp.TransactionID = (null != _paymentGatewayResponse) ? _paymentGatewayResponse.TransactionCode : Guid.NewGuid().ToString();
                cp.Card = cc;
                payment = cp;
                break;
            }

            case PaymentOptionChoice.WireTransfer:
            {
                var wp = new WirePayment_V01();
                wp.TransactionType = ddlWire.SelectedItem.Text;
                wp.PaymentCode     = ddlWire.SelectedValue;
                wp.ReferenceID     = DistributorOrderingProfile.ReferenceNumber;
                wp.TransactionType = GetLocalResourceObject("ListItemResource3.Text") as string +
                                     ddlWire.SelectedItem.Text;
                payment = wp;
                break;
            }

            case PaymentOptionChoice.DirectDeposit:
            {
                var wp = new DirectDepositPayment_V01();
                wp.PaymentCode     = ddlDirectDeposit.SelectedValue;
                wp.ReferenceID     = DistributorOrderingProfile.ReferenceNumber;
                wp.TransactionType = string.Format("{0}{1}",
                                                   GetLocalResourceObject("ListItemResource4.Text") as string,
                                                   ddlDirectDeposit.Items.Count > 1
                                                               ? string.Format("/{0}",
                                                                               ddlDirectDeposit.SelectedItem.Text)
                                                               : string.Empty);
                payment = wp;
                break;
            }
            }
            if (null == address)
            {
                address = new Address_V01();
                //address = new Address_V01();
                //address.City = "Torrance";
                //address.Country = _countryCode;
                //address.CountyDistrict = "Los Angeles";
                //address.Line1 = "950W 190th Street";
                //address.PostalCode = "90502";
                //address.StateProvinceTerritory = "CA";
            }
            if (null == payment.Address)
            {
                payment.Address = address;
            }
            payment.Address  = address;
            payment.Amount   = GetTotals().AmountDue;
            payment.Currency = HLConfigManager.Configurations.CheckoutConfiguration.Currency;

            return(payment);
        }