public RemovePaymentProfileResult RemovePaymentProfile(RemovePaymentProfileParameter parameter) { UserProfileDto userProfileDto = SiteContext.Current.UserProfileDto; UserProfile userProfile = this.UnitOfWork.GetRepository <UserProfile>().Get(SiteContext.Current.UserProfileDto.Id); if (userProfile == null) { return(this.CreateErrorServiceResult <RemovePaymentProfileResult>(SubCode.Forbidden, MessageProvider.Current.Forbidden)); } GetBillToResult billToResult = this.GetBillTo(parameter.BillToId); if (billToResult.ResultCode != ResultCode.Success) { return(this.CreateErrorServiceResult <RemovePaymentProfileResult>(billToResult.SubCode, billToResult.Message)); } Customer billTo = billToResult.BillTo; RemoveStoredPaymentProfileResult removeStoredPaymentProfileResult = this.GetPaymentGateway().RemoveStoredPaymentProfile(new RemoveStoredPaymentProfileParameter() { CustomerProfileId = userProfile.GetProperty("StoredCustomerProfileId", string.Empty), PaymentProfileId = parameter.PaymentProfileId, CustomerNumber = billTo.CustomerNumber }); if (!removeStoredPaymentProfileResult.Success) { return(this.CreateErrorServiceResult <RemovePaymentProfileResult>(SubCode.StorePaymentProfileFailed, string.Join(Environment.NewLine, removeStoredPaymentProfileResult.ResponseMessages))); } UserPaymentProfile userPaymentProfile = userProfile.UserPaymentProfiles.FirstOrDefault <UserPaymentProfile>((UserPaymentProfile u) => u.CardIdentifier.Equals(parameter.PaymentProfileId)); if (userPaymentProfile != null) { this.RemoveUserPaymentProfile(userProfile, userPaymentProfile); } return(new RemovePaymentProfileResult()); }
public AddPaymentProfileResult AddPaymentProfile(AddPaymentProfileParameter parameter) { UserProfileDto userProfileDto = SiteContext.Current.UserProfileDto; if (userProfileDto == null) { return(this.CreateErrorServiceResult <AddPaymentProfileResult>(SubCode.Forbidden, MessageProvider.Current.Forbidden)); } UserProfile userProfile = this.UnitOfWork.GetRepository <UserProfile>().Get(userProfileDto.Id); IPaymentGateway paymentGateway = this.GetPaymentGateway(); if (!paymentGateway.SupportsStoredPaymentProfiles) { return(this.CreateErrorServiceResult <AddPaymentProfileResult>(SubCode.NotSupported, string.Format(MessageProvider.Current.Not_Supported, "Stored Payment Profiles"))); } GetBillToResult billToResult = this.GetBillTo(parameter.BillToId); if (billToResult.ResultCode != ResultCode.Success) { return(this.CreateErrorServiceResult <AddPaymentProfileResult>(billToResult.SubCode, billToResult.Message)); } Customer billTo = billToResult.BillTo; StorePaymentProfileResult storePaymentProfileResult = paymentGateway.StorePaymentProfile(new StorePaymentProfileParameter() { CustomerProfileId = userProfile.GetProperty("StoredCustomerProfileId", string.Empty), CustomerNumber = billTo.CustomerNumber, CurrencyCode = parameter.CurrencyCode, BillToAddress = CreateCreditCardAddress(billTo), CreditCard = parameter.CreditCard }); if (!storePaymentProfileResult.Success) { return(this.CreateErrorServiceResult <AddPaymentProfileResult>(SubCode.StorePaymentProfileFailed, string.Join(Environment.NewLine, storePaymentProfileResult.ResponseMessages))); } userProfile.SetProperty("StoredCustomerProfileId", storePaymentProfileResult.CustomerProfileId); GetStoredPaymentProfileResult getStoredPaymentProfileResult = paymentGateway.GetStoredPaymentProfile(new GetStoredPaymentProfileParameter() { CustomerNumber = billTo.CustomerNumber, CustomerProfileId = storePaymentProfileResult.CustomerProfileId, PaymentProfileId = storePaymentProfileResult.PaymentProfileId }); if (getStoredPaymentProfileResult.Success) { this.AddUserPaymentProfile(userProfile, new UserPaymentProfile() { CardIdentifier = getStoredPaymentProfileResult.PaymentProfile.PaymentProfileId, Description = parameter.CreditCard.CardHolderName,//BUSA-462 : Ability to save Credit Cards (in CenPos) and offer it to users. CardType = parameter.CreditCard.CardType, MaskedCardNumber = getStoredPaymentProfileResult.PaymentProfile.MaskedCardNumber, ExpirationDate = getStoredPaymentProfileResult.PaymentProfile.Expiration }); } return(new AddPaymentProfileResult()); }
public override GetCartCollectionResult Execute(IUnitOfWork unitOfWork, GetCartCollectionParameter parameter, GetCartCollectionResult result) { //BUSA-730: For BillTo having multiple Ship to show all orders waiting for approval if (parameter.Status.EqualsIgnoreCase("AwaitingApproval")) { result.CartsQuery = unitOfWork.GetRepository <CustomerOrder>().GetTable().Where(o => o.ApproverUserProfileId == SiteContext.Current.UserProfileDto.Id); return(NextHandler.Execute(unitOfWork, parameter, result)); } else { GetBillToResult getBillToResult = customerService.GetBillTo(new GetBillToParameter() { BillToId = parameter.BillToId }); if (getBillToResult.ResultCode != ResultCode.Success) { return(CreateErrorServiceResult(result, getBillToResult.SubCode, getBillToResult.Message)); } result.CartsQuery = unitOfWork.GetRepository <CustomerOrder>().GetTable().Where(o => o.CustomerId == getBillToResult.BillTo.Id); return(NextHandler.Execute(unitOfWork, parameter, result)); } }
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) }); }