private void RedirectToSucceedingPage() { if (_checkOutMode) { string redirectUrl; if (isAnonPayPal) { _cart.BuildSalesOrderDetails(false, false); Customer.Current.ThisCustomerSession["paypalfrom"] = "shoppingcart"; redirectUrl = PayPalExpress.CheckoutURL(_cart); } else if (isAnonGoogleCheckout) { _cart.BuildSalesOrderDetails(false, false); redirectUrl = GoogleCheckout.CreateGoogleCheckout(_cart); } else if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { redirectUrl = "checkout1.aspx"; } else { redirectUrl = "checkoutshipping.aspx"; } Response.Redirect(redirectUrl); } else { Response.Redirect("account.aspx"); } }
protected void btnPayPalExpressCheckout_Click(object sender, System.Web.UI.ImageClickEventArgs e) { if (!ThisCustomer.IsRegistered && (AppLogic.AppConfigBool("PasswordIsOptionalDuringCheckout") && AppLogic.AppConfigBool("PayPalCheckout.AllowAnonCheckout"))) { Response.Redirect("checkoutanon.aspx?checkout=true&checkouttype=pp"); } else { // Get IS Cart ready ProcessCart(false); if (cart == null) { cart = new InterpriseShoppingCart(base.EntityHelpers, SkinID, ThisCustomer, CartTypeEnum.ShoppingCart, String.Empty, false, true); } cart.BuildSalesOrderDetails(false, false); ThisCustomer.ThisCustomerSession["paypalfrom"] = "shoppingcart"; Response.Redirect(PayPalExpress.CheckoutURL(cart)); } }
protected void btnSignInAndCheckout_Click(object sender, EventArgs e) { Page.Validate(); if (Page.IsValid) { String EMailField = EMail.Text.ToLower(); String PasswordField = Password.Text; if (AppLogic.AppConfigBool("SecurityCodeRequiredOnStoreLogin")) { String sCode = Session["SecurityCode"].ToString(); String fCode = SecurityCode.Text; Boolean codeMatch = false; if (AppLogic.AppConfigBool("Captcha.CaseSensitive")) { if (fCode.Equals(sCode)) { codeMatch = true; } } else { if (fCode.Equals(sCode, StringComparison.InvariantCultureIgnoreCase)) { codeMatch = true; } } if (!codeMatch) { ErrorMsgLabel.Text = string.Format(AppLogic.GetString("signin.aspx.22", SkinID, ThisCustomer.LocaleSetting, true), string.Empty, string.Empty); ErrorPanel.Visible = true; SecurityImage.ImageUrl = "Captcha.ashx?id=1"; return; } } Customer customerWithValidLogin = Customer.FindByLogin(EMail.Text, PasswordField); if (null == customerWithValidLogin) { ErrorMsgLabel.Text = AppLogic.GetString("signin.aspx.20", SkinID, ThisCustomer.LocaleSetting, true); ErrorPanel.Visible = true; return; } ThisCustomer.ThisCustomerSession["CustomerID"] = customerWithValidLogin.ContactGUID.ToString(); AppLogic.ExecuteSigninLogic(ThisCustomer.CustomerCode, ThisCustomer.ContactCode, customerWithValidLogin.CustomerCode, customerWithValidLogin.PrimaryShippingAddressID, customerWithValidLogin.ContactCode); string cookieUserName = customerWithValidLogin.ContactGUID.ToString(); Security.SignOutCrossDomainCookie(); Security.CreateLoginCookie(cookieUserName, true); if (_checkoutType == "pp") { var customer = Customer.Find(customerWithValidLogin.ContactGUID); Security.OverrideThisCustomer(customer); if (!cart.IsSalesOrderDetailBuilt) { cart.BuildSalesOrderDetails(); } Customer.Current.ThisCustomerSession["paypalFrom"] = "checkoutanon"; Response.Redirect(PayPalExpress.CheckoutURL(cart)); } else { string sReturnURL = "shoppingcart.aspx"; FormPanel.Visible = false; HeaderPanel.Visible = false; ExecutePanel.Visible = true; SignInExecuteLabel.Text = AppLogic.GetString("signin.aspx.2", SkinID, ThisCustomer.LocaleSetting, true); Response.AddHeader("REFRESH", "1; URL=" + Server.UrlDecode(sReturnURL)); } } }
public void ProcessRequest(HttpContext context) { var ThisCustomer = ((InterpriseSuiteEcommercePrincipal)context.User).ThisCustomer; var m_PayPalExpress = new PayPalExpress(); //Get PayPal info var PayPalDetails = m_PayPalExpress.GetExpressCheckoutDetails(context.Request.QueryString["token"]).GetExpressCheckoutDetailsResponseDetails; var paypalShippingAddress = Address.New(ThisCustomer, AddressTypes.Shipping); if (PayPalDetails.PayerInfo.Address.Name.IsNullOrEmptyTrimmed() && (PayPalDetails.PayerInfo.Address.Street1.IsNullOrEmptyTrimmed() || PayPalDetails.PayerInfo.Address.Street2.IsNullOrEmptyTrimmed()) && PayPalDetails.PayerInfo.Address.CityName.IsNullOrEmptyTrimmed() && PayPalDetails.PayerInfo.Address.StateOrProvince.IsNullOrEmptyTrimmed() && PayPalDetails.PayerInfo.Address.PostalCode.IsNullOrEmptyTrimmed() && PayPalDetails.PayerInfo.Address.CountryName.ToString().IsNullOrEmptyTrimmed() || PayPalDetails.PayerInfo.ContactPhone.IsNullOrEmptyTrimmed()) { paypalShippingAddress = ThisCustomer.PrimaryShippingAddress; } else { string streetAddress = PayPalDetails.PayerInfo.Address.Street1 + (!PayPalDetails.PayerInfo.Address.Street2.IsNullOrEmptyTrimmed() ? Environment.NewLine : String.Empty) + PayPalDetails.PayerInfo.Address.Street2; string sql = String.Empty; if (ThisCustomer.IsRegistered) { sql = String.Format("SELECT COUNT(ShipToCode) AS N FROM CustomerShipTo where Address = {0} and City = {1} and State = {2} and PostalCode = {3} and Country = {4} and ShipToName = {5} and CustomerCode = {6}", streetAddress.ToDbQuote(), PayPalDetails.PayerInfo.Address.CityName.ToDbQuote(), PayPalDetails.PayerInfo.Address.StateOrProvince.ToDbQuote(), PayPalDetails.PayerInfo.Address.PostalCode.ToDbQuote(), AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName).ToString().ToDbQuote(), PayPalDetails.PayerInfo.Address.Name.ToDbQuote(), ThisCustomer.CustomerCode.ToDbQuote()); } else { sql = String.Format("SELECT COUNT(1) AS N FROM EcommerceAddress where ShipToAddress = {0} and ShipToCity = {1} and ShipToState = {2} and ShipToPostalCode = {3} and ShipToCountry = {4} and ShipToName = {5} and CustomerID = {6}", streetAddress.ToDbQuote(), PayPalDetails.PayerInfo.Address.CityName.ToDbQuote(), PayPalDetails.PayerInfo.Address.StateOrProvince.ToDbQuote(), PayPalDetails.PayerInfo.Address.PostalCode.ToDbQuote(), AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName).ToString().ToDbQuote(), PayPalDetails.PayerInfo.Address.Name.ToDbQuote(), ThisCustomer.CustomerCode.ToDbQuote()); paypalShippingAddress.EMail = ThisCustomer.IsRegistered ? ThisCustomer.EMail : ThisCustomer.GetAnonEmail(); paypalShippingAddress.Name = PayPalDetails.PayerInfo.Address.Name; paypalShippingAddress.Address1 = PayPalDetails.PayerInfo.Address.Street1 + (PayPalDetails.PayerInfo.Address.Street2 != String.Empty ? Environment.NewLine : String.Empty) + PayPalDetails.PayerInfo.Address.Street2; paypalShippingAddress.City = PayPalDetails.PayerInfo.Address.CityName; paypalShippingAddress.State = PayPalDetails.PayerInfo.Address.StateOrProvince; paypalShippingAddress.PostalCode = PayPalDetails.PayerInfo.Address.PostalCode; paypalShippingAddress.Country = AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName.ToString()); paypalShippingAddress.Phone = PayPalDetails.PayerInfo.ContactPhone ?? String.Empty; } int isAddressExists = DB.GetSqlN(sql); if (AppLogic.AppConfigBool("PayPalCheckout.RequireConfirmedAddress") || isAddressExists == 0) { ServiceFactory.GetInstance <ICustomerService>().UpdateCustomerNotesWhenPaypalAddressIsUsed(); } } ThisCustomer.PrimaryShippingAddress = paypalShippingAddress; paypalShippingAddress.Save(); string redirectUrl = String.Empty; //Checking for redirectURL of PayPal -- Express Checkout button in Shopping Cart page or PayPal Radio Button in Payment Page if (Customer.Current.ThisCustomerSession["paypalfrom"] == "shoppingcart" || Customer.Current.ThisCustomerSession["paypalfrom"] == "checkoutanon") { redirectUrl = "checkoutshipping.aspx?PayPal=True&token=" + context.Request.QueryString["token"]; } else { if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { if (!AppLogic.AppConfigBool("Checkout.UseOnePageCheckout.UseFinalReviewOrderPage")) { //Insert PayPal call here for response - For authorize and capture of order from paypal inside IS ThisCustomer.ThisCustomerSession["paypalfrom"] = "onepagecheckout"; string OrderNumber = String.Empty; string status = String.Empty; string receiptCode = String.Empty; var billingAddress = ThisCustomer.PrimaryBillingAddress; Address shippingAddress = null; var cart = new InterpriseShoppingCart(null, ThisCustomer.SkinID, ThisCustomer, CartTypeEnum.ShoppingCart, String.Empty, false, true); if (cart.IsNoShippingRequired()) { cart.BuildSalesOrderDetails(false, true); } else { cart.BuildSalesOrderDetails(); } if (!AppLogic.AppConfigBool("PayPalCheckout.OverrideAddress")) { if (!cart.HasShippableComponents()) { shippingAddress = ThisCustomer.PrimaryShippingAddress; } else { if (ThisCustomer.IsRegistered) { var GetShippingAddress = new Address() { Name = PayPalDetails.PayerInfo.Address.Name, Address1 = PayPalDetails.PayerInfo.Address.Street1 + (PayPalDetails.PayerInfo.Address.Street2 != String.Empty ? Environment.NewLine : String.Empty) + PayPalDetails.PayerInfo.Address.Street2, City = PayPalDetails.PayerInfo.Address.CityName, State = PayPalDetails.PayerInfo.Address.StateOrProvince, PostalCode = PayPalDetails.PayerInfo.Address.PostalCode, Country = AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName.ToString()), CountryISOCode = AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.Country.ToString()), Phone = PayPalDetails.PayerInfo.ContactPhone ?? String.Empty }; shippingAddress = GetShippingAddress; } else { shippingAddress = paypalShippingAddress; } } } var doExpressCheckoutResp = m_PayPalExpress.DoExpressCheckoutPayment(PayPalDetails.Token, PayPalDetails.PayerInfo.PayerID, OrderNumber, cart); string result = String.Empty; if (doExpressCheckoutResp.Errors != null && !doExpressCheckoutResp.Errors[0].ErrorCode.IsNullOrEmptyTrimmed()) { if (AppLogic.AppConfigBool("ShowGatewayError")) { result = String.Format(AppLogic.GetString("shoppingcart.aspx.27", ThisCustomer.SkinID, ThisCustomer.LocaleSetting), doExpressCheckoutResp.Errors[0].ErrorCode, doExpressCheckoutResp.Errors[0].LongMessage); } else { result = AppLogic.GetString("shoppingcart.aspx.28", ThisCustomer.SkinID, ThisCustomer.LocaleSetting); } context.Response.Redirect("shoppingcart.aspx?ErrorMsg=" + result.ToUrlEncode(), false); return; } else { Gateway gatewayToUse = null; var payPalResp = new GatewayResponse(String.Empty) { AuthorizationCode = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID, TransactionResponse = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), Details = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), AuthorizationTransID = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID }; InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, DomainConstants.PAYMENT_METHOD_CREDITCARD); status = cart.PlaceOrder(gatewayToUse, billingAddress, shippingAddress, ref OrderNumber, ref receiptCode, true, true, payPalResp, true, false); if (status != AppLogic.ro_OK) { ThisCustomer.IncrementFailedTransactionCount(); if (ThisCustomer.FailedTransactionCount >= AppLogic.AppConfigUSInt("MaxFailedTransactionCount")) { cart.ClearTransaction(); ThisCustomer.ResetFailedTransactionCount(); context.Response.Redirect("orderfailed.aspx"); } ThisCustomer.ClearTransactions(false); context.Response.Redirect("checkout1.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + status.ToUrlEncode()); } AppLogic.ClearCardNumberInSession(ThisCustomer); ThisCustomer.ClearTransactions(true); context.Response.Redirect(String.Format("orderconfirmation.aspx?ordernumber={0}", OrderNumber.ToUrlEncode())); } } else { InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, DomainConstants.PAYMENT_METHOD_CREDITCARD); redirectUrl = "checkoutreview.aspx?PayPal=True&token=" + context.Request.QueryString["token"]; } } else { InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, DomainConstants.PAYMENT_METHOD_CREDITCARD); redirectUrl = "checkoutreview.aspx?PayPal=True&token=" + context.Request.QueryString["token"]; } } context.Response.Redirect(redirectUrl); }
private void ProcessPayment() { if (!_cart.IsEmpty()) { var isOutOfStockAndPhaseOut = _cart.CartItems.Any(item => item.Status == "P" && item.IsOutOfStock); if (isOutOfStockAndPhaseOut) { Response.Redirect("shoppingcart.aspx?resetlinkback=1"); } } if (!_isRequirePayment) { Response.Redirect("checkoutreview.aspx"); } bool isCustomerRegistered = Customer.Current.IsRegistered; bool isCreditCardTokenizationEnabled = IsCreditCardTokenizationEnabled; string paymentMethodFromInput = ctrlPaymentTerm.PaymentMethod; string paymentTermCodeFromInput = ctrlPaymentTerm.PaymentTerm; #region Payments string PAYMENT_METHOD_PAYPALX = DomainConstants.PAYMENT_METHOD_PAYPALX; string PAYMENT_METHOD_CREDITCARD = DomainConstants.PAYMENT_METHOD_CREDITCARD; if (_cart.GetOrderBalance() == System.Decimal.Zero && AppLogic.AppConfigBool("SkipPaymentEntryOnZeroDollarCheckout")) { _cart.MakePaymentTermNotRequired(); } if (paymentTermCodeFromInput.ToString().Trim().Equals("PURCHASE ORDER", StringComparison.InvariantCultureIgnoreCase)) { ThisCustomer.ThisCustomerSession.SetVal("PONumber", ctrlPaymentTerm.PONumber); } else if (paymentTermCodeFromInput.ToString().Trim().Equals("REQUEST QUOTE", StringComparison.InvariantCultureIgnoreCase)) { } else if (paymentMethodFromInput == PAYMENT_METHOD_PAYPALX) { ThisCustomer.ThisCustomerSession["paypalfrom"] = "checkoutpayment"; Response.Redirect(PayPalExpress.CheckoutURL(_cart)); } else if (paymentMethodFromInput == PAYMENT_METHOD_CREDITCARD) { //Validate first the inputs (empty and invalid dropdown selection) //triggers the input registered validators. if (!IsValid) { return; } //Skip credit card valiation when card is tokenized if (!_skipCreditCardValidation) { //credit card validation if (!IsValidCreditCardInfo()) { return; } } UpdateAnonForAge13(); #region Posted Data (Credit Card Information) string nameOnCard = ctrlPaymentTerm.NameOnCard; string cardNumberFromInput = ctrlPaymentTerm.CardNumber; string cardTypeFromInput = ctrlPaymentTerm.CardType; string cardExpiryYearFromInput = ctrlPaymentTerm.CardExpiryYear; string cardExpiryMonthFromInput = ctrlPaymentTerm.CardExpiryMonth; string cVVFromInput = ctrlPaymentTerm.CVV; string saveCreditCardAsFromInput = ctrlPaymentTerm.CardDescription; string cardStartMonth = string.Empty; string cardStartYear = string.Empty; string cardIssueNumber = string.Empty; if (AppLogic.AppConfigBool("ShowCardStartDateFields")) { cardStartMonth = ctrlPaymentTerm.CardStartMonth; cardStartYear = ctrlPaymentTerm.CardStartYear; cardIssueNumber = ctrlPaymentTerm.CardIssueNumber; } #endregion #region Save Billing Address var aBillingAddress = Address.New(ThisCustomer, AddressTypes.Billing); var ThisAddress = Address.New(ThisCustomer, AddressTypes.Shipping); var aShippingAddress = ThisCustomer.PrimaryShippingAddress; string maskedCardNumber = string.Empty; //set the default value of creditCardCode to primary billing address string creditCardCode = ThisCustomer.PrimaryBillingAddress.AddressID; if (isCustomerRegistered) { if (!txtCode.Text.IsNullOrEmptyTrimmed()) { //txtCode.Text - Customer CreditCard code //Override the credit card code if tokenization //decrypt the credit card code from the rendered hidden text box since it is encrypted. creditCardCode = AppLogic.DecryptCreditCardCode(ThisCustomer, txtCode.Text); maskedCardNumber = AppLogic.GetCustomerCreditCardMaskedCardNumber(creditCardCode); } if (maskedCardNumber.StartsWith("X")) { CreditCardDTO credit = null; if (!creditCardCode.IsNullOrEmptyTrimmed()) { //set the credit card info using the creditcard code credit = CreditCardDTO.Find(creditCardCode); } //test if the credit card info has been tokenized and saved by the client //if refno > 0 means the credit card has been authorized if (credit.RefNo > 0) { cardNumberFromInput = credit.CardNumber; nameOnCard = credit.NameOnCard; cardTypeFromInput = credit.CardType; cardExpiryMonthFromInput = credit.ExpMonth; cardExpiryYearFromInput = credit.ExpYear; if (AppLogic.AppConfigBool("ShowCardStartDateFields")) { cardStartMonth = credit.StartMonth; cardStartYear = credit.StartYear; } } } aBillingAddress.Address1 = BillingAddressControl.street; aBillingAddress.Country = BillingAddressControl.country; aBillingAddress.PostalCode = BillingAddressControl.postal; string bCityStates = txtCityStates.Text; string city = String.Empty; string state = String.Empty; var cityStateArray = GetCityStateArray(); aBillingAddress.State = cityStateArray[0]; aBillingAddress.City = cityStateArray[1]; aBillingAddress.ResidenceType = aShippingAddress.ThisCustomer.PrimaryShippingAddress.ResidenceType; aBillingAddress.Name = txtBillingContactName.Text; aBillingAddress.Phone = txtBillingContactNumber.Text; if (AppLogic.AppConfigBool("Address.ShowCounty")) { aBillingAddress.County = BillingAddressControl.county; } } else { var primariBillingAddress = ThisCustomer.PrimaryBillingAddress; aBillingAddress.Address1 = primariBillingAddress.Address1; aBillingAddress.Country = primariBillingAddress.Country; aBillingAddress.PostalCode = primariBillingAddress.PostalCode; aBillingAddress.City = primariBillingAddress.City; aBillingAddress.State = primariBillingAddress.State; aBillingAddress.ResidenceType = primariBillingAddress.ResidenceType; aBillingAddress.Name = primariBillingAddress.Name; aBillingAddress.Phone = primariBillingAddress.Phone; aBillingAddress.EMail = primariBillingAddress.EMail; } //Credit card code has default value of primary billing addressid //This will be overridden when tokenization aBillingAddress.AddressID = creditCardCode; aBillingAddress.CardNumber = cardNumberFromInput; aBillingAddress.CardName = nameOnCard; aBillingAddress.CardType = cardTypeFromInput; aBillingAddress.CardExpirationMonth = cardExpiryMonthFromInput; aBillingAddress.CardExpirationYear = cardExpiryYearFromInput; aBillingAddress.CustomerCode = ThisCustomer.CustomerCode; //Try save the new billing address if anonymous //if registered the billing will not be created aBillingAddress.Save(); //update the address if user is registered and is already exist Address.Update(ThisCustomer, aBillingAddress); #endregion if (AppLogic.AppConfigBool("ShowCardStartDateFields")) { //-> Some CCs do not have StartDate, so here we should provide Default if none was supplied. string defaultCardStartMonth = DateTime.Now.Month.ToString(); string defaultCardStartYear = DateTime.Now.Year.ToString(); aBillingAddress.CardStartMonth = (cardStartMonth != "MONTH")? cardStartMonth: defaultCardStartMonth; aBillingAddress.CardStartYear = (cardStartYear != "YEAR")? cardStartYear : defaultCardStartYear; aBillingAddress.CardIssueNumber = cardIssueNumber; } //-> Capture the credit card number from the payment page and encrypt it so that the gateway can capture from that credit card if (!cardNumberFromInput.StartsWith("X")) { string salt = String.Empty; string iv = String.Empty; string cardNumberEnc = AppLogic.EncryptCardNumber(cardNumberFromInput, ref salt, ref iv); AppLogic.StoreCardNumberInSession(ThisCustomer, cardNumberEnc, salt, iv); } if (isCreditCardTokenizationEnabled) { InterpriseHelper.MakeDefaultAddress(ThisCustomer.ContactCode, creditCardCode, AddressTypes.Billing); bool saveCreditCardInfo = (AppLogic.AppConfigBool("ForceCreditCardInfoSaving") || ctrlPaymentTerm.SaveCreditCreditCardInfo); ThisCustomer.ThisCustomerSession["SaveCreditCardChecked"] = saveCreditCardInfo.ToString(); #region "Update Address w/ CreditCardInfo" string thisCardNumber = Interprise.Framework.Base.Shared.Common.MaskCardNumber(aBillingAddress.CardNumber); if (!maskedCardNumber.IsNullOrEmptyTrimmed()) { thisCardNumber = maskedCardNumber; } #region Postal Code Handler var parsedPostalCode = InterpriseHelper.ParsePostalCode(aBillingAddress.Country, aBillingAddress.PostalCode); string postal = parsedPostalCode.PostalCode; int plus4 = parsedPostalCode.Plus4; #endregion var sql = new StringBuilder(); sql.Append(" UPDATE CustomerCreditCard "); sql.AppendFormat(" SET CreditCardDescription = {0}, MaskedCardNumber = {1}, NameOnCard = {2}, ", saveCreditCardAsFromInput.ToDbQuote(), thisCardNumber.ToDbQuote(), nameOnCard.ToDbQuote()); sql.AppendFormat(" Address = {0}, City = {1}, State={2}, ", aBillingAddress.Address1.ToDbQuote(), aBillingAddress.City.ToDbQuote(), aBillingAddress.State.ToDbQuote()); if (plus4 == 0) { sql.AppendFormat(" PostalCode = {0}, Country = {1}, Plus4=NULL, ", postal.ToDbQuote(), aBillingAddress.Country.ToDbQuote()); } else { sql.AppendFormat(" PostalCode = {0}, Country = {1}, Plus4={2}, ", postal.ToDbQuote(), aBillingAddress.Country.ToDbQuote(), plus4); } sql.AppendFormat(" ExpMonth={0}, ExpYear={1}, Telephone={2}, ", InterpriseHelper.ToInterpriseExpMonth(aBillingAddress.CardExpirationMonth).ToDbQuote(), aBillingAddress.CardExpirationYear.ToDbQuote(), aBillingAddress.Phone.ToDbQuote()); sql.AppendFormat(" CreditCardType = {0}, DateModified=getdate() ", aBillingAddress.CardType.ToDbQuote()); sql.AppendFormat(" WHERE CreditCardCode={0} ", creditCardCode.ToDbQuote()); DB.ExecuteSQL(sql.ToString()); sql.Clear(); #endregion DB.ExecuteSQL(@"UPDATE Customer SET Creditcardcode={0} WHERE CustomerCode={1}", DB.SQuote(creditCardCode), DB.SQuote(ThisCustomer.CustomerCode)); AppLogic.ClearCreditCardCodeInSession(ThisCustomer); } else { if (ThisCustomer.IsRegistered) { Address.Update(ThisCustomer, aBillingAddress); InterpriseHelper.MakeDefaultAddress(ThisCustomer.ContactCode, creditCardCode, AddressTypes.Billing); } } AppLogic.StoreCardExtraCodeInSession(ThisCustomer, cVVFromInput); AppLogic.SavePostalCode(aBillingAddress); //Redirect to Confirmation Page } InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, paymentTermCodeFromInput); Response.Redirect("checkoutreview.aspx"); #endregion }
protected void btnCompletePurchase_Click(object sender, EventArgs e) { if (!this.IsValid) { return; } if (_weShouldRequirePayment) { if (ctrlPaymentTerm.PaymentTerm.ToString().Trim().Equals("PURCHASE ORDER", StringComparison.InvariantCultureIgnoreCase)) { ThisCustomer.ThisCustomerSession.SetVal("PONumber", ctrlPaymentTerm.PONumber); } else if (ctrlPaymentTerm.PaymentTerm.ToString().Trim().Equals("REQUEST QUOTE", StringComparison.InvariantCultureIgnoreCase)) { } else if (ctrlPaymentTerm.PaymentMethod == DomainConstants.PAYMENT_METHOD_PAYPALX) { ThisCustomer.ThisCustomerSession["paypalfrom"] = "checkoutpayment"; Response.Redirect(PayPalExpress.CheckoutURL(_cart)); } else if (ctrlPaymentTerm.PaymentMethod == DomainConstants.PAYMENT_METHOD_CREDITCARD) { //Validate Card Number bool blnCcInvalid = false; string cardNumber; string cardNumberInvalidErrorMessage; var ccValidator = new CreditCardValidator(); ccValidator.AcceptedCardTypes = ctrlPaymentTerm.CardType; if (ccValidator.AcceptedCardTypes.Contains("0")) { ctrlPaymentTerm.CardTypeInvalidErrorMessage = AppLogic.GetString("checkout1.aspx.14", ThisCustomer.SkinID, ThisCustomer.LocaleSetting); errorSummary.DisplayErrorMessage(ctrlPaymentTerm.CardTypeInvalidErrorMessage); return; } //See if we should use the card number on file. //We also want to see if the card number starts with an *. //If it doesn't it probably means the user entered a new number. if (ctrlPaymentTerm.CardNumber.StartsWith("*")) { //Get the stored card number. cardNumber = ThisCustomer.PrimaryBillingAddress.CardNumber; cardNumberInvalidErrorMessage = ctrlPaymentTerm.StoredCardNumberInvalidErrorMessage; } else { //Get the card number the user entered. cardNumber = ctrlPaymentTerm.CardNumber; cardNumberInvalidErrorMessage = ctrlPaymentTerm.CardNumberInvalidErrorMessage; } if (!ccValidator.IsValidCardType(cardNumber) || !ccValidator.ValidateCardNumber(cardNumber)) { errorSummary.DisplayErrorMessage(cardNumberInvalidErrorMessage); blnCcInvalid = true; } //Validate Expiration Date if (!ccValidator.IsValidExpirationDate(string.Concat(ctrlPaymentTerm.CardExpiryYear, ctrlPaymentTerm.CardExpiryMonth))) { ctrlPaymentTerm.ExpirationMonthInvalidErrorMessage = AppLogic.GetString("checkout1.aspx.15", ThisCustomer.SkinID, ThisCustomer.LocaleSetting); ctrlPaymentTerm.ExpirationYearInvalidErrorMessage = AppLogic.GetString("checkout1.aspx.16", ThisCustomer.SkinID, ThisCustomer.LocaleSetting); errorSummary.DisplayErrorMessage(ctrlPaymentTerm.ExpirationMonthInvalidErrorMessage); errorSummary.DisplayErrorMessage(ctrlPaymentTerm.ExpirationYearInvalidErrorMessage); blnCcInvalid = true; } //If an error was found display them if (blnCcInvalid) { return; } var billingAddress = ThisCustomer.PrimaryBillingAddress; billingAddress.CardNumber = cardNumber; billingAddress.CardName = ctrlPaymentTerm.NameOnCard; billingAddress.CardType = ctrlPaymentTerm.CardType; billingAddress.CardExpirationMonth = ctrlPaymentTerm.CardExpiryMonth; billingAddress.CardExpirationYear = ctrlPaymentTerm.CardExpiryYear; if (AppLogic.AppConfigBool("ShowCardStartDateFields")) { //Some CCs do not have StartDate, so here we should provide Default if none was supplied. string defaultCardStartMonth = DateTime.Now.Month.ToString(); string defaultCardStartYear = DateTime.Now.Year.ToString(); billingAddress.CardStartMonth = CommonLogic.IIF(ctrlPaymentTerm.CardStartMonth != "MONTH", ctrlPaymentTerm.CardStartMonth, defaultCardStartMonth); billingAddress.CardStartYear = CommonLogic.IIF(ctrlPaymentTerm.CardStartYear != "YEAR", ctrlPaymentTerm.CardStartYear, defaultCardStartYear); billingAddress.CardIssueNumber = ctrlPaymentTerm.CardIssueNumber; } AppLogic.StoreCardExtraCodeInSession(ThisCustomer, ctrlPaymentTerm.CVV); //Capture the credit card number from the payment page and encrypt it so that the gateway can capture from that credit card string salt = null; string iv = null; string cardNumberEnc = AppLogic.EncryptCardNumber(cardNumber, ref salt, ref iv); AppLogic.StoreCardNumberInSession(ThisCustomer, cardNumberEnc, salt, iv); Address.Update(ThisCustomer, billingAddress); } InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, ctrlPaymentTerm.PaymentTerm); } Response.Redirect("checkoutreview.aspx"); }
private void ProcessCheckout() { string OrderNumber = string.Empty; // ---------------------------------------------------------------- // Process The Order: // ---------------------------------------------------------------- if (string.IsNullOrEmpty(ThisCustomer.PaymentTermCode)) { Response.Redirect("checkoutpayment.aspx?errormsg=" + Server.UrlEncode(AppLogic.GetString("checkoutpayment.aspx.7", ThisCustomer.SkinID, ThisCustomer.LocaleSetting))); } else { string receiptCode = string.Empty; string status = string.Empty, multiorder = string.Empty; if (cart.HasMultipleShippingAddresses()) // Paypal will never hit this { var splittedCarts = cart.SplitIntoMultipleOrdersByDifferentShipToAddresses(); bool gatewayAuthFailed = false; for (int ctr = 0; ctr < splittedCarts.Count; ctr++) { var splitCart = splittedCarts[ctr]; splitCart.BuildSalesOrderDetails(); var shippingAddress = Address.Get(ThisCustomer, AddressTypes.Shipping, splitCart.FirstItem().m_ShippingAddressID); string processedSalesOrderCode = string.Empty; string processedReceiptCode = string.Empty; // NOTE: // 3DSecure using Sagepay Gateway is not supported on multiple shipping orders // We will revert to the regular IS gateway defined on the WebStore status = splitCart.PlaceOrder(null, ThisCustomer.PrimaryBillingAddress, shippingAddress, ref processedSalesOrderCode, ref processedReceiptCode, false, true, false); OrderNumber = processedSalesOrderCode; receiptCode = processedReceiptCode; if (status == AppLogic.ro_INTERPRISE_GATEWAY_AUTHORIZATION_FAILED) { gatewayAuthFailed = true; if (ctr == 0) { ThisCustomer.IncrementFailedTransactionCount(); if (ThisCustomer.FailedTransactionCount >= AppLogic.AppConfigUSInt("MaxFailedTransactionCount")) { cart.ClearTransaction(); ThisCustomer.ResetFailedTransactionCount(); Response.Redirect("orderfailed.aspx"); } ThisCustomer.ClearTransactions(false); if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { Response.Redirect("checkout1.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } else { Response.Redirect("checkoutpayment.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } } } // NOTE : // Should handle cases when 1 or more orders failed the payment processor // if using a payment gateway on credit card multiorder = multiorder + "," + OrderNumber; } if (multiorder != string.Empty) { OrderNumber = multiorder.Remove(0, 1); } if (!gatewayAuthFailed) { cart.ClearTransaction(); } } else { var billingAddress = ThisCustomer.PrimaryBillingAddress; Address shippingAddress = null; //added for PayPal ADDRESSOVERRIDE if (IsPayPalCheckout && !AppLogic.AppConfigBool("PayPalCheckout.OverrideAddress")) { if (!cart.HasShippableComponents()) { shippingAddress = ThisCustomer.PrimaryShippingAddress; } else { pp = new PayPalExpress(); var GetPayPalDetails = pp.GetExpressCheckoutDetails(Request.QueryString["token"]).GetExpressCheckoutDetailsResponseDetails; shippingAddress = new Address() { Name = GetPayPalDetails.PayerInfo.Address.Name, Address1 = GetPayPalDetails.PayerInfo.Address.Street1 + (GetPayPalDetails.PayerInfo.Address.Street2 != String.Empty ? Environment.NewLine : String.Empty) + GetPayPalDetails.PayerInfo.Address.Street2, City = GetPayPalDetails.PayerInfo.Address.CityName, State = GetPayPalDetails.PayerInfo.Address.StateOrProvince, PostalCode = GetPayPalDetails.PayerInfo.Address.PostalCode, Country = AppLogic.ResolvePayPalAddressCode(GetPayPalDetails.PayerInfo.Address.CountryName.ToString()), CountryISOCode = AppLogic.ResolvePayPalAddressCode(GetPayPalDetails.PayerInfo.Address.Country.ToString()), Phone = GetPayPalDetails.PayerInfo.ContactPhone }; } } else { // Handle the scenario wherein the items in the cart // does not ship to the customer's primary shipping address if (cart.OnlyShippingAddressIsNotCustomerDefault()) { shippingAddress = Address.Get(ThisCustomer, AddressTypes.Shipping, cart.FirstItem().m_ShippingAddressID); } else { shippingAddress = ThisCustomer.PrimaryShippingAddress; } } if (!cart.IsSalesOrderDetailBuilt) { cart.BuildSalesOrderDetails(); } Gateway gatewayToUse = null; try { if (IsPayPalCheckout) { //Insert PayPal call here for response - For authorize and capture of order from paypal inside IS pp = new PayPalExpress(); var PayPalDetails = pp.GetExpressCheckoutDetails(Request.QueryString["token"]).GetExpressCheckoutDetailsResponseDetails; var doExpressCheckoutResp = pp.DoExpressCheckoutPayment(PayPalDetails.Token, PayPalDetails.PayerInfo.PayerID, OrderNumber, cart); var payPalResp = new GatewayResponse(string.Empty) { AuthorizationCode = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID, TransactionResponse = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), Details = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), AuthorizationTransID = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID }; status = cart.PlaceOrder(gatewayToUse, billingAddress, shippingAddress, ref OrderNumber, ref receiptCode, true, true, payPalResp, IsPayPalCheckout, false); } else { status = cart.PlaceOrder(gatewayToUse, billingAddress, shippingAddress, ref OrderNumber, ref receiptCode, true, true, null, !IsPayPalCheckout, false); } } catch (Exception ex) { if (ex.Message == "Unable to instantiate Default Credit Card Gateway") { cart.ClearLineItems(); Response.Redirect("pageError.aspx?Parameter=" + "An Error Occured while Authorizing your Credit Card, However your order has been Placed."); } Response.Redirect("pageError.aspx?Parameter=" + Server.UrlEncode(ex.Message)); } if (status == AppLogic.ro_3DSecure) { // If credit card is enrolled in a 3D Secure service (Verified by Visa, etc.) Response.Redirect("secureform.aspx"); } if (status != AppLogic.ro_OK) { ThisCustomer.IncrementFailedTransactionCount(); if (ThisCustomer.FailedTransactionCount >= AppLogic.AppConfigUSInt("MaxFailedTransactionCount")) { cart.ClearTransaction(); ThisCustomer.ResetFailedTransactionCount(); Response.Redirect("orderfailed.aspx"); } ThisCustomer.ClearTransactions(false); if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { Response.Redirect("checkout1.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } else { Response.Redirect("checkoutpayment.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } } } } AppLogic.ClearCardNumberInSession(ThisCustomer); ThisCustomer.ClearTransactions(true); if (!_PayPalFailed) { Response.Redirect(string.Format("orderconfirmation.aspx?ordernumber={0}", Server.UrlEncode(OrderNumber))); } }
private void InitializePageContent() { checkoutheadergraphic.ImageUrl = AppLogic.LocateImageURL("skins/skin_" + SkinID.ToString() + "/images/step_5.gif"); for (int i = 0; i < checkoutheadergraphic.HotSpots.Count; i++) { var rhs = checkoutheadergraphic.HotSpots[i] as RectangleHotSpot; if (rhs.NavigateUrl.IndexOf("shoppingcart") != -1) { rhs.AlternateText = AppLogic.GetString("checkoutreview.aspx.2", SkinID, ThisCustomer.LocaleSetting); } if (rhs.NavigateUrl.IndexOf("account") != -1) { rhs.AlternateText = AppLogic.GetString("checkoutreview.aspx.3", SkinID, ThisCustomer.LocaleSetting); } if (rhs.NavigateUrl.IndexOf("checkoutshipping") != -1) { rhs.AlternateText = AppLogic.GetString("checkoutreview.aspx.4", SkinID, ThisCustomer.LocaleSetting); } if (rhs.NavigateUrl.IndexOf("checkoutpayment") != -1) { rhs.AlternateText = AppLogic.GetString("checkoutreview.aspx.5", SkinID, ThisCustomer.LocaleSetting); } } if (!AppLogic.AppConfigBool("SkipShippingOnCheckout")) { checkoutheadergraphic.HotSpots[2].HotSpotMode = HotSpotMode.Navigate; if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { checkoutheadergraphic.HotSpots[2].NavigateUrl = "checkout1.aspx"; } else { checkoutheadergraphic.HotSpots[2].NavigateUrl = CommonLogic.IIF(cart.HasMultipleShippingAddresses(), "checkoutshippingmult.aspx", "checkoutshipping.aspx"); } } if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { checkoutheadergraphic.HotSpots[3].NavigateUrl = "checkout1.aspx"; } if (IsPayPalCheckout) { checkoutheadergraphic.HotSpots[1].HotSpotMode = HotSpotMode.Inactive; checkoutheadergraphic.HotSpots[2].NavigateUrl += string.Format("?PayPal={0}&token={1}", bool.TrueString, Request.QueryString["token"]); checkoutheadergraphic.HotSpots[3].HotSpotMode = HotSpotMode.Inactive; } String XmlPackageName = AppLogic.AppConfig("XmlPackage.CheckoutReviewPageHeader"); if (XmlPackageName.Length != 0) { XmlPackage_CheckoutReviewPageHeader.Text = "<br/>" + AppLogic.RunXmlPackage(XmlPackageName, base.GetParser, ThisCustomer, SkinID, String.Empty, null, true, true); } if (cart.HasMultipleShippingAddresses()) { var splittedCarts = cart.SplitIntoMultipleOrdersByDifferentShipToAddresses(); foreach (var splitCart in splittedCarts) { splitCart.BuildSalesOrderDetails(); CartSummary.Text += splitCart.RenderHTMLLiteral(new MobileCheckOutPaymentPageLiteralRenderer()); } litShippingAddress.Text = "<br/>Multiple Ship Addresses"; } else { //If the shopping cart contains only Electronic Downloads or Services then pass a "false" parameter for computeFreight. if (cart.IsNoShippingRequired()) { cart.BuildSalesOrderDetails(false, true); } else { cart.BuildSalesOrderDetails(); } Address shippingAddress = null; //added for PayPal ADDRESSOVERRIDE if (IsPayPalCheckout && !AppLogic.AppConfigBool("PayPalCheckout.OverrideAddress")) { if (!cart.HasShippableComponents()) { shippingAddress = ThisCustomer.PrimaryShippingAddress; } else { pp = new PayPalExpress(); var GetPayPalDetails = pp.GetExpressCheckoutDetails(Request.QueryString["token"]).GetExpressCheckoutDetailsResponseDetails; var GetShippingAddress = new Address(); GetShippingAddress.Name = GetPayPalDetails.PayerInfo.Address.Name; GetShippingAddress.Address1 = GetPayPalDetails.PayerInfo.Address.Street1 + (GetPayPalDetails.PayerInfo.Address.Street2 != String.Empty ? Environment.NewLine : String.Empty) + GetPayPalDetails.PayerInfo.Address.Street2; GetShippingAddress.City = GetPayPalDetails.PayerInfo.Address.CityName; GetShippingAddress.State = GetPayPalDetails.PayerInfo.Address.StateOrProvince; GetShippingAddress.PostalCode = GetPayPalDetails.PayerInfo.Address.PostalCode; GetShippingAddress.Country = AppLogic.ResolvePayPalAddressCode(GetPayPalDetails.PayerInfo.Address.CountryName.ToString()); GetShippingAddress.CountryISOCode = AppLogic.ResolvePayPalAddressCode(GetPayPalDetails.PayerInfo.Address.Country.ToString()); GetShippingAddress.Phone = GetPayPalDetails.PayerInfo.ContactPhone; shippingAddress = GetShippingAddress; } } else { if (cart.OnlyShippingAddressIsNotCustomerDefault()) { shippingAddress = Address.Get(ThisCustomer, AddressTypes.Shipping, cart.FirstItem().m_ShippingAddressID); } else { shippingAddress = ThisCustomer.PrimaryShippingAddress; } } litShippingAddress.Text = shippingAddress.DisplayString(true, true, true, "<br/>"); CartSummary.Text = cart.RenderHTMLLiteral(new MobileCheckOutPaymentPageLiteralRenderer()); } if (AppLogic.AppConfigBool("ShowEditAddressLinkOnCheckOutReview")) { pnlEditBillingAddress.Visible = true; pnlEditShippingAddress.Visible = true; //removed image arrow in mobile //imgBillingRedArrow.ImageUrl = AppLogic.LocateImageURL("skins/skin_" + SkinID.ToString() + "/images/redarrow.gif"); //imgShippingRedArrow.ImageUrl = AppLogic.LocateImageURL("skins/skin_" + SkinID.ToString() + "/images/redarrow.gif"); } litBillingAddress.Text = ThisCustomer.PrimaryBillingAddress.DisplayString(true, true, true, "<br/>"); if (IsPayPalCheckout) { litPaymentMethod.Text = "PayPal Express Checkout"; } else { litPaymentMethod.Text = GetPaymentMethod(ThisCustomer.PrimaryBillingAddress); } string XmlPackageName2 = AppLogic.AppConfig("XmlPackage.CheckoutReviewPageFooter"); if (XmlPackageName2.Length != 0) { XmlPackage_CheckoutReviewPageFooter.Text = "<br/>" + AppLogic.RunXmlPackage(XmlPackageName2, base.GetParser, ThisCustomer, SkinID, String.Empty, null, true, true); } //mobile button AppLogic.GetButtonDisable(btnContinueCheckout1.TheButton); CheckoutReviewPageHeader.SetContext = this; CheckoutReviewPageFooter.SetContext = this; }