public virtual SubmitTransactionResult SubmitTransaction(SubmitTransactionParameter parameter) { TransactionalClient transactionalClient = new TransactionalClient(); TokensClient tokenClient = new TokensClient(); SubmitTransactionResult result = new SubmitTransactionResult(); if (parameter.PaymentProfileId != null) { UseTokenRequest cardRequest = this.GetCardRequestForToken(parameter); UseTokenResponse reply1 = tokenClient.UseToken(cardRequest); result.Success = reply1.Result == 0; result.ResponseNumber = reply1.AuthorizationNumber ?? string.Empty; result.ResponseToken = parameter.PaymentProfileId + "|" + reply1.ReferenceNumber ?? string.Empty; if (!result.Success) { result.ResponseMessages.Add(string.Format("Transaction Failed: {0} Reference: {1}", reply1.Message, reply1.ReferenceNumber)); } } else { // ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;//BUSA-669 : change Protocol to TLS v1.2 in CenPos calls ProcessCreditCardResponse reply = transactionalClient.ProcessCreditCard(this.GetCardRequest(parameter)); result.Success = reply.Result == 0; result.ResponseNumber = reply.AutorizationNumber ?? string.Empty; result.ResponseToken = ((ProcessRecurringSaleResponse)reply).RecurringSaleTokenId + "|" + reply.ReferenceNumber ?? string.Empty; this.recurringToken = ((ProcessRecurringSaleResponse)reply).RecurringSaleTokenId; if (!result.Success) { result.ResponseMessages.Add(string.Format("Transaction Failed: {0} Reference: {1}", reply.Message, reply.ReferenceNumber)); } } return(result); }
private AddPaymentTransactionResult ResendTransaction(SubmitTransactionParameter submitTransactionParameter) { SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = submitTransactionParameter.TransactionType, ReferenceNumber = submitTransactionParameter.ReferenceNumber, OriginalRequestNumber = submitTransactionParameter.OriginalRequestNumber, OriginalRequestToken = submitTransactionParameter.OriginalRequestToken, Amount = submitTransactionParameter.Amount, WebsiteId = submitTransactionParameter.WebsiteId, IsResentTransaction = true }; CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); SubmitTransactionResult submitTransactionResult = this.GetPaymentGateway().SubmitTransaction(transactionParameter); this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult); if (!submitTransactionResult.Success) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages))); } return(new AddPaymentTransactionResult() { CreditCardTransaction = this.UpdateCreditCardTransaction(creditCardTransaction, submitTransactionParameter, submitTransactionResult) }); }
private AddPaymentTransactionResult SubmitReferenceTransaction(AddPaymentTransactionParameter parameter) { if (parameter.OriginalRequestNumber.IsBlank() || parameter.OriginalRequestToken.IsBlank()) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, "Original Request Number and Original Reference Number required")); } SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = parameter.TransactionType, ReferenceNumber = parameter.ReferenceNumber, OriginalRequestNumber = parameter.OriginalRequestNumber, OriginalRequestToken = parameter.OriginalRequestToken, Amount = parameter.Amount, WebsiteId = parameter.WebsiteId }; CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); transactionParameter.CreditCardTransactionId = new Guid?(creditCardTransaction.Id); SubmitTransactionResult submitTransactionResult = this.GetPaymentGateway().SubmitTransaction(transactionParameter); if (!submitTransactionResult.Success) { this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult); if (submitTransactionResult.IsConnectionError) { return(this.ResendTransaction(transactionParameter)); } return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages))); } return(new AddPaymentTransactionResult() { CreditCardTransaction = this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult) }); }
private string GetAvsAddr(SubmitTransactionParameter submitTransactionParameter) { if (submitTransactionParameter.BillToAddress == null) { return(string.Empty); } return(string.Format("{0} | {1} | {2} | {3} | {4}", (object)submitTransactionParameter.BillToAddress.Address1, (object)submitTransactionParameter.BillToAddress.Address2, (object)submitTransactionParameter.BillToAddress.City, (object)submitTransactionParameter.BillToAddress.State, (object)submitTransactionParameter.BillToAddress.Country)); }
//BUSA-450 Cenpos - address for New Web Customer is not being populated correctly end //protected virtual ProcessCardRequest GetCardRequestForToken(SubmitTransactionParameter parameter) //{ // customSettings.OverrideCurrentWebsite(SiteContext.Current.WebsiteDto.Id); // ProcessCardRequest processCardRequest1 = null; // if (parameter.PaymentProfileId != null) // { // ProcessCardRecurringSaleRequest recurringSaleRequest = new ProcessCardRecurringSaleRequest(); // string userId = customSettings.PaymentGateway_Cenpos_UserId; // recurringSaleRequest.UserId = userId; // string password = customSettings.PaymentGateway_Cenpos_Password; // recurringSaleRequest.Password = password; // int merchantId = customSettings.PaymentGateway_Cenpos_MerchantId; // recurringSaleRequest.MerchantId = merchantId; // Decimal amount = parameter.Amount; // recurringSaleRequest.Amount = amount; // string str1 = parameter.CreditCard.ExpirationMonth.ToString("00") + parameter.CreditCard.ExpirationYear.ToString().Substring(2); // recurringSaleRequest.CardExpirationDate = str1; // string customerNumber = parameter.CustomerNumber; // recurringSaleRequest.CustomerCode = customerNumber; // string address1 = parameter.BillToAddress.Address1; // recurringSaleRequest.CustomerBillingAddress = address1; // string email = parameter.BillToAddress.Email; // recurringSaleRequest.CustomerEmailAddress = email; // string postalCode = parameter.BillToAddress.PostalCode; // recurringSaleRequest.CustomerZipCode = postalCode; // string referenceNumber = parameter.ReferenceNumber; // recurringSaleRequest.InvoiceNumber = referenceNumber; // the invoicenumber in SpForce will be same as original transaction reference number? // string currencyCode = parameter.CurrencyCode; // recurringSaleRequest.CurrencyCode = currencyCode; // // setting SpecialForce for sale transaction type for invoice amount // //recurringSaleRequest.TransactionType = parameter.TransactionType == TransactionType.Sale ? "RecurringSale2" : "RecurringAuth"; // switch (parameter.TransactionType) // { // case TransactionType.Authorization: // recurringSaleRequest.TransactionType = "RecurringAuth"; // break; // case TransactionType.Capture: // recurringSaleRequest.TransactionType = "RecurringSale2"; //saving card through invoice // break; // case TransactionType.Sale: // recurringSaleRequest.TransactionType = "Sale"; //only payment through invoicing // break; // case TransactionType.Void: // recurringSaleRequest.TransactionType = "Void"; // break; // case TransactionType.Credit: // recurringSaleRequest.TransactionType = "Refund"; // break; // default : recurringSaleRequest.TransactionType = "RecurringAuth"; // break; // } // string str3 = parameter.PaymentProfileId + "|" + (object)merchantId; // recurringSaleRequest.RecurringSaleTokenId = str3; // processCardRequest1 = (ProcessCardRequest)recurringSaleRequest; // } // return processCardRequest1; //} protected virtual UseTokenRequest GetCardRequestForToken(SubmitTransactionParameter parameter) { customSettings.OverrideCurrentWebsite(SiteContext.Current.WebsiteDto.Id); UseTokenRequest processCardRequest1 = new UseTokenRequest(); if (parameter.PaymentProfileId != null) { string userId = customSettings.PaymentGateway_Cenpos_UserId; processCardRequest1.UserId = userId; string password = customSettings.PaymentGateway_Cenpos_Password; processCardRequest1.Password = password; int merchantId = customSettings.PaymentGateway_Cenpos_MerchantId; processCardRequest1.MerchantId = merchantId; Decimal amount = parameter.Amount; processCardRequest1.Amount = amount; string referenceNumber = parameter.ReferenceNumber; processCardRequest1.InvoiceNumber = referenceNumber; // the invoicenumber in SpForce will be same as original transaction reference number? string currencyCode = parameter.CurrencyCode; processCardRequest1.CurrencyCode = currencyCode; // setting SpecialForce for sale transaction type for invoice amount //recurringSaleRequest.TransactionType = parameter.TransactionType == TransactionType.Sale ? "RecurringSale2" : "RecurringAuth"; switch (parameter.TransactionType) { case TransactionType.Authorization: processCardRequest1.TransactionType = "Auth"; break; case TransactionType.Capture: processCardRequest1.TransactionType = "RecurringSale2"; //saving card through invoice break; case TransactionType.Sale: processCardRequest1.TransactionType = "Sale"; //only payment through invoicing break; case TransactionType.Void: processCardRequest1.TransactionType = "Void"; break; case TransactionType.Credit: processCardRequest1.TransactionType = "Refund"; break; default: processCardRequest1.TransactionType = "Auth"; break; } string str3 = parameter.PaymentProfileId + "|" + (object)merchantId; processCardRequest1.TokenId = str3; } return(processCardRequest1); }
private void SubmitReversalTransaction(SubmitTransactionParameter submitTransactionParameter, SubmitTransactionResult submitTransactionResult) { SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = TransactionType.Reversal, CustomerNumber = submitTransactionParameter.CustomerNumber, ReferenceNumber = submitTransactionParameter.ReferenceNumber, CurrencyCode = submitTransactionParameter.CurrencyCode, BillToAddress = submitTransactionParameter.BillToAddress, ShipToAddress = submitTransactionParameter.ShipToAddress, PaymentProfileId = submitTransactionParameter.PaymentProfileId, CreditCard = submitTransactionParameter.CreditCard, Amount = submitTransactionParameter.Amount, WebsiteId = submitTransactionParameter.WebsiteId, OriginalRequestToken = submitTransactionResult.ResponseToken }; CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); submitTransactionParameter.OriginalRequestToken = submitTransactionResult.ResponseToken; SubmitTransactionResult submitTransactionResult1 = this.GetPaymentGateway().SubmitTransaction(transactionParameter); this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult1); }
private AddPaymentTransactionResult SubmitNewTransaction(AddPaymentTransactionParameter parameter) { Customer billTo1; Customer shipTo1; if (parameter.IsAdmin) { ICustomerRepository typedRepository = this.UnitOfWork.GetTypedRepository <ICustomerRepository>(); if (!parameter.BillToId.HasValue) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.NotFound, "BillToId is empty")); } Guid?nullable = parameter.ShipToId; if (!nullable.HasValue) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.NotFound, "ShipToId is empty")); } ICustomerRepository customerRepository1 = typedRepository; nullable = parameter.BillToId; Guid id1 = nullable.Value; billTo1 = customerRepository1.Get(id1); ICustomerRepository customerRepository2 = typedRepository; nullable = parameter.ShipToId; Guid id2 = nullable.Value; shipTo1 = customerRepository2.Get(id2); } else { GetBillToResult billTo2 = this.GetBillTo(parameter.BillToId); if (billTo2.ResultCode != ResultCode.Success) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(billTo2.SubCode, billTo2.Message)); } billTo1 = billTo2.BillTo; GetShipToResult shipTo2 = this.GetShipTo(parameter.BillToId, parameter.ShipToId); if (shipTo2.ResultCode != ResultCode.Success) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(shipTo2.SubCode, shipTo2.Message)); } shipTo1 = shipTo2.ShipTo; } SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = parameter.TransactionType, CustomerNumber = billTo1.CustomerNumber, ReferenceNumber = parameter.ReferenceNumber, CurrencyCode = parameter.CurrencyCode, BillToAddress = CreateCreditCardAddress(billTo1, parameter.CreditCard), ShipToAddress = CreateCreditCardAddress(shipTo1, (CreditCardDto)null), PaymentProfileId = parameter.PaymentProfileId, CreditCard = parameter.CreditCard, Amount = parameter.Amount, WebsiteId = parameter.WebsiteId }; if (!parameter.PaymentProfileId.IsBlank()) { UserProfile userProfile = this.UnitOfWork.GetRepository <UserProfile>().Get(SiteContext.Current.UserProfileDto.Id); transactionParameter.CustomerProfileId = userProfile.GetProperty("StoredCustomerProfileId", string.Empty); } CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); transactionParameter.CreditCardTransactionId = new Guid?(creditCardTransaction.Id); SubmitTransactionResult submitTransactionResult = (parameter.CreditCard.CardType == "PayPal" ? this.paymentGatewayFactory.GetPaymentGateway("PaypalExpress") : this.GetPaymentGateway()).SubmitTransaction(transactionParameter); if (submitTransactionResult.ResponseMessages.Count > 0) { LogHelper.For(this).Error(transactionParameter.CustomerNumber + submitTransactionResult.ResponseMessages.FirstOrDefault() + submitTransactionResult.Success, "CenposResponse"); } if (!submitTransactionResult.Success) { this.UnitOfWork.RollbackTransaction(); this.UnitOfWork.Clear(true); this.UnitOfWork.BeginTransaction(); this.ResetContext(); this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult); if (submitTransactionResult.IsConnectionError) { this.SubmitReversalTransaction(transactionParameter, submitTransactionResult); } return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages))); } return(new AddPaymentTransactionResult() { CreditCardTransaction = this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult) }); }
private CreditCardTransaction UpdateCreditCardTransaction(CreditCardTransaction creditCardTransaction, SubmitTransactionParameter submitTransactionParameter, SubmitTransactionResult submitTransactionResult) { creditCardTransaction.Result = submitTransactionResult.Success ? "0" : "1"; creditCardTransaction.AuthCode = submitTransactionResult.ResponseNumber; creditCardTransaction.RequestId = submitTransactionResult.ResponseNumber; creditCardTransaction.PNRef = submitTransactionResult.ResponseToken ?? string.Empty; creditCardTransaction.Status = !submitTransactionResult.Success ? "Error" : (submitTransactionParameter.TransactionType == TransactionType.Authorization ? "Open" : "Submitted"); //Save CC last 4 digit and CardType string ccNumber = (submitTransactionParameter.CreditCard.CardNumber.Length > 3) ? submitTransactionParameter.CreditCard.CardNumber.Substring(submitTransactionParameter.CreditCard.CardNumber.Length - 4, 4) : submitTransactionParameter.CreditCard.CardNumber; creditCardTransaction.CreditCardNumber = ccNumber; creditCardTransaction.CardType = this.GetCardType(submitTransactionParameter.CreditCard.CardType); //End this.UnitOfWork.GetRepository <CreditCardTransaction>().Insert(creditCardTransaction); if (!submitTransactionResult.Success) { creditCardTransaction.RespText = string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages); return(creditCardTransaction); } if (submitTransactionParameter.TransactionType == TransactionType.Capture || submitTransactionParameter.TransactionType == TransactionType.Void) { CreditCardTransaction creditCardTransaction1 = this.UnitOfWork.GetRepository <CreditCardTransaction>().GetTable().FirstOrDefault <CreditCardTransaction>((Expression <Func <CreditCardTransaction, bool> >)(c => c.RequestId.Equals(submitTransactionParameter.OriginalRequestNumber))); if (creditCardTransaction1 != null) { creditCardTransaction1.Status = submitTransactionParameter.TransactionType == TransactionType.Capture ? "Captured" : "Voided"; } } return(creditCardTransaction); }
private CreditCardTransaction CreateCreditCardTransaction(SubmitTransactionParameter submitTransactionParameter) { CreditCardTransaction creditCardTransaction = this.UnitOfWork.GetRepository <CreditCardTransaction>().Create(); creditCardTransaction.TransactionType = submitTransactionParameter.TransactionType == TransactionType.Authorization ? "A" : (submitTransactionParameter.TransactionType == TransactionType.Sale ? "S" : (submitTransactionParameter.TransactionType == TransactionType.Capture ? "D" : (submitTransactionParameter.TransactionType == TransactionType.Void ? "V" : (submitTransactionParameter.TransactionType == TransactionType.Reversal ? "R" : "C")))); creditCardTransaction.TransactionDate = DateTimeProvider.Current.Now; creditCardTransaction.Amount = submitTransactionParameter.Amount; creditCardTransaction.CustomerNumber = submitTransactionParameter.CustomerNumber; creditCardTransaction.OrderNumber = submitTransactionParameter.ReferenceNumber; CreditCardDto creditCard1 = submitTransactionParameter.CreditCard; creditCardTransaction.Name = (creditCard1 != null ? creditCard1.CardHolderName : (string)null) ?? string.Empty; creditCardTransaction.AvsAddr = this.GetAvsAddr(submitTransactionParameter); CreditCardAddressDto billToAddress = submitTransactionParameter.BillToAddress; creditCardTransaction.AvsZip = (billToAddress != null ? billToAddress.PostalCode : (string)null) ?? string.Empty; CreditCardDto creditCard2 = submitTransactionParameter.CreditCard; string str1 = (creditCard2 != null ? creditCard2.CardNumber : (string)null) ?? string.Empty; CreditCardDto creditCard3 = submitTransactionParameter.CreditCard; int num; string str2; if (creditCard3 == null) { str2 = (string)null; } else { num = creditCard3.ExpirationMonth; str2 = num.ToString("00"); } if (str2 == null) { str2 = string.Empty; } string str3 = "/"; CreditCardDto creditCard4 = submitTransactionParameter.CreditCard; string str4; if (creditCard4 == null) { str4 = (string)null; } else { num = creditCard4.ExpirationYear; str4 = num.ToString(); } if (str4 == null) { str4 = string.Empty; } creditCardTransaction.ExpirationDate = str2 + str3 + str4; string str5; if (str1.Length <= 4) { str5 = str1; } else { string str6 = str1; str5 = str6.Substring(str6.Length - 4); } creditCardTransaction.CreditCardNumber = str5; creditCardTransaction.OrigId = submitTransactionParameter.OriginalRequestNumber; creditCardTransaction.Site = SiteContext.Current.WebsiteDto.Name; return(creditCardTransaction); }
protected virtual ProcessCreditCardRequest GetCardRequest(SubmitTransactionParameter parameter) { ProcessCreditCardRequest processCardRequest;//BUSA-462 : Ability to save Credit Cards (in CenPos) and offer it to users ProcessCreditCardRequest request; int expirationMonth; if (parameter.PaymentProfileId != null) { ProcessCreditCardRequest processCardRecurringSaleRequest = new ProcessCreditCardRequest() { UserId = this.UserId, Password = this.Password, MerchantId = this.MerchantId, Amount = parameter.Amount }; expirationMonth = parameter.CreditCard.ExpirationMonth; string str = expirationMonth.ToString("00"); expirationMonth = parameter.CreditCard.ExpirationYear; processCardRecurringSaleRequest.CardExpirationDate = string.Concat(str, expirationMonth.ToString().Substring(2)); processCardRecurringSaleRequest.CustomerCode = parameter.CustomerNumber; processCardRecurringSaleRequest.CustomerBillingAddress = parameter.BillToAddress.Address1; //BUSA-296 Changes Start if (string.IsNullOrEmpty(parameter.BillToAddress.Email)) { var userInfo = SiteContext.Current.UserProfileDto; if (userInfo != null) { processCardRecurringSaleRequest.CustomerEmailAddress = userInfo.UserName; } } else { processCardRecurringSaleRequest.CustomerEmailAddress = parameter.BillToAddress.Email; } //BUSA-296 Changes end processCardRecurringSaleRequest.CustomerZipCode = parameter.BillToAddress.PostalCode; processCardRecurringSaleRequest.InvoiceNumber = parameter.ReferenceNumber; processCardRecurringSaleRequest.CurrencyCode = parameter.CurrencyCode; processCardRecurringSaleRequest.TransactionType = "RecurringAuth"; // processCardRecurringSaleRequest.RecurringSaleTokenId = string.Concat(parameter.PaymentProfileId, "|", this.MerchantId); //BUSA-450 Cenpos - address for New Web Customer is not being populated correctly start var companyNameIdentifier = customSettings.CompanyNameIdentifier; bool isNewUser = (SiteContext.Current.UserProfileDto != null && !SiteContext.Current.UserProfileDto.IsGuest && processCardRecurringSaleRequest.CustomerCode == companyNameIdentifier + "1055357"); if (isNewUser) { UserProfile userProfile = this.UnitOfWork.GetRepository <UserProfile>().Get(SiteContext.Current.UserProfileDto.Id); processCardRecurringSaleRequest.CustomerBillingAddress = string.IsNullOrEmpty(parameter.CreditCard.PostalCode) ? GetCurrentUserPropertyValue(userProfile.CustomProperties, "NewUsrBTAddress1") : parameter.CreditCard.Address1; processCardRecurringSaleRequest.CustomerZipCode = string.IsNullOrEmpty(parameter.CreditCard.PostalCode) ?GetCurrentUserPropertyValue(userProfile.CustomProperties, "NewUsrBTPostalCode") : parameter.CreditCard.PostalCode; } //BUSA-450 Cenpos - address for New Web Customer is not being populated correctly end request = processCardRecurringSaleRequest; } else if (parameter.TransactionType != TransactionType.Void) { //BUSA-462 : Ability to save Credit Cards (in CenPos) and offer it to users Starts processCardRequest = new ProcessCreditCardRequest() { UserId = this.UserId, Password = this.Password, MerchantId = this.MerchantId, //// setting SpecialForce for sale transaction type for invoice amount //TransactionType = parameter.TransactionType == TransactionType.Sale ? "RecurringSale" : "RecurringAuth", TerminalCapabilities = "Manual", NameOnCard = parameter.CreditCard.CardHolderName, Amount = parameter.Amount }; switch (parameter.TransactionType) { case TransactionType.Authorization: processCardRequest.TransactionType = "RecurringAuth"; break; case TransactionType.Capture: processCardRequest.TransactionType = "RecurringSale2"; //saving card through invoice break; case TransactionType.Sale: processCardRequest.TransactionType = "Sale"; // payment through invoicing without saving card break; case TransactionType.Void: processCardRequest.TransactionType = "Void"; break; case TransactionType.Credit: processCardRequest.TransactionType = "Refund"; break; default: processCardRequest.TransactionType = "RecurringAuth"; break; } //BUSA-462 : Ability to save Credit Cards (in CenPos) and offer it to users Ends expirationMonth = parameter.CreditCard.ExpirationMonth; string str1 = expirationMonth.ToString("00"); expirationMonth = parameter.CreditCard.ExpirationYear; processCardRequest.CardExpirationDate = string.Concat(str1, expirationMonth.ToString().Substring(2)); processCardRequest.CardNumber = parameter.CreditCard.CardNumber; string lastfourdigit = parameter.CreditCard.CardNumber.Substring(parameter.CreditCard.CardNumber.Length - 4); processCardRequest.CardLastFourDigits = lastfourdigit; processCardRequest.InvoiceNumber = parameter.ReferenceNumber; processCardRequest.CurrencyCode = parameter.CurrencyCode; processCardRequest.CustomerBillingAddress = parameter.BillToAddress.Address1; processCardRequest.CustomerCity = parameter.BillToAddress.City; processCardRequest.CustomerCode = parameter.CustomerNumber; //BUSA-296 Changes Start if (string.IsNullOrEmpty(parameter.BillToAddress.Email)) { var userInfo = SiteContext.Current.UserProfileDto; if (userInfo != null) { processCardRequest.CustomerEmailAddress = userInfo.UserName; } } else { processCardRequest.CustomerEmailAddress = parameter.BillToAddress.Email; } //BUSA-296 Changes end processCardRequest.CustomerPhone = parameter.BillToAddress.Phone; processCardRequest.CustomerState = parameter.BillToAddress.State; processCardRequest.CustomerZipCode = parameter.BillToAddress.PostalCode; //BUSA-450 Cenpos - address for New Web Customer is not being populated correctly start var companyNameIdentifier = customSettings.CompanyNameIdentifier; bool isNewUser = (SiteContext.Current.UserProfileDto != null && !SiteContext.Current.UserProfileDto.IsGuest && processCardRequest.CustomerCode == companyNameIdentifier + "1055357"); if (isNewUser) { var userProfile = SiteContext.Current.UserProfileDto; var userProperties = UnitOfWork.GetRepository <CustomProperty>().GetTable().Where(x => x.ParentId == userProfile.Id).ToList(); //processCardRequest.CustomerBillingAddress = GetCurrentUserPropertyValue(userProperties, "NewUsrBTAddress1"); //processCardRequest.CustomerZipCode = GetCurrentUserPropertyValue(userProperties, "NewUsrBTPostalCode"); processCardRequest.CustomerBillingAddress = string.IsNullOrEmpty(parameter.CreditCard.Address1) ? GetCurrentUserPropertyValue(userProperties, "NewUsrBTAddress1") : parameter.CreditCard.Address1; processCardRequest.CustomerZipCode = string.IsNullOrEmpty(parameter.CreditCard.PostalCode) ? GetCurrentUserPropertyValue(userProperties, "NewUsrBTPostalCode") : parameter.CreditCard.PostalCode; } //BUSA-450 Cenpos - address for New Web Customer is not being populated correctly end request = processCardRequest; } else { request = new ProcessCreditCardRequest() { TransactionType = this.GetTransactionType(parameter.TransactionType), ReferenceNumber = parameter.OriginalRequestToken }; } return(request); }