public ManagerResponse <AddPaymentInfoResult, Cart> AddPaymentInfo(string shopName, Cart cart, PartyEntity billingPartyEntity, FederatedPaymentArgs federatedPaymentArgs) { List <PaymentInfo> payments = new List <PaymentInfo>(); cart = this.RemoveAllPaymentMethods(cart).Result; if (federatedPaymentArgs != null && !string.IsNullOrEmpty(federatedPaymentArgs.CardToken) && billingPartyEntity != null) { CommerceParty commerceParty = this.connectEntityMapper.MapToCommerceParty(billingPartyEntity); commerceParty.PartyId = Guid.NewGuid().ToString().Replace("-", string.Empty); commerceParty.ExternalId = commerceParty.PartyId; if (string.IsNullOrWhiteSpace(commerceParty.Name)) { commerceParty.Name = $"billing{commerceParty.PartyId}"; } cart.Parties.Add(commerceParty); FederatedPaymentInfo federatedPaymentInfo = this.connectEntityMapper.MapToFederatedPaymentInfo(federatedPaymentArgs); federatedPaymentInfo.PartyID = commerceParty.PartyId; federatedPaymentInfo.Amount = cart.Total.Amount; payments.Add(federatedPaymentInfo); } var request = new AddPaymentInfoRequest(cart, payments); AddPaymentInfoResult paymentInfoResult = this.cartServiceProvider.AddPaymentInfo(request); if (!paymentInfoResult.Success) { paymentInfoResult.SystemMessages.LogSystemMessages(paymentInfoResult); } return(new ManagerResponse <AddPaymentInfoResult, Cart>(paymentInfoResult, paymentInfoResult.Cart)); }
public void SetPaymentInfo_IfAddPaymentInfoFailed_ShouldReturnsError( CartResult loadCartResult, CartResult updateCartResult, CartResult removeCartResult, AddPaymentInfoResult addCartResult, Address address, Party party, Models.Entities.Payment.FederatedPaymentInfo federatedPaymentInfo, SystemMessage systemMessage) { //arrange loadCartResult.Success = true; this.cartManager.LoadCart(Arg.Any <string>(), Arg.Any <string>()).Returns(loadCartResult); updateCartResult.Success = true; this.cartManager.UpdateCart(Arg.Any <Cart>(), Arg.Any <CartBase>()).Returns(updateCartResult); removeCartResult.Success = true; this.cartManager.RemovePaymentInfo(Arg.Any <Cart>()).Returns(removeCartResult); addCartResult.Success = false; addCartResult.SystemMessages.Add(systemMessage); this.cartManager.AddPaymentInfo(Arg.Any <Cart>(), Arg.Any <Party>(), Arg.Any <FederatedPaymentInfo>()).Returns(addCartResult); this.paymentMapper.Map <Address, Party>(address).Returns(party); //act var result = this.billingService.SetPaymentInfo(address, federatedPaymentInfo); //assert Assert.False(result.Success); Assert.Equal(systemMessage.Message, result.Errors[0]); }
public ManagerResponse <CartResult, CommerceCart> SetPaymentMethods(string userId, PaymentInputModel inputModel) { Assert.ArgumentNotNull(inputModel, nameof(inputModel)); var result = new AddPaymentInfoResult { Success = false }; var response = GetCart(userId, true); if (!response.ServiceProviderResult.Success || response.Result == null) { return(new ManagerResponse <CartResult, CommerceCart>(result, response.Result)); } var payments = new List <PaymentInfo>(); var cart = (CommerceCart)response.ServiceProviderResult.Cart; if (!string.IsNullOrEmpty(inputModel.CreditCardPayment?.PaymentMethodID) && inputModel.BillingAddress != null) { var billingParty = inputModel.BillingAddress.ToParty(); var parties = cart.Parties.ToList(); parties.Add(billingParty); cart.Parties = parties.AsSafeReadOnly(); payments.Add(inputModel.CreditCardPayment.ToCreditCardPaymentInfo()); } if (!string.IsNullOrEmpty(inputModel.FederatedPayment?.CardToken) && inputModel.BillingAddress != null) { var billingParty = inputModel.BillingAddress.ToParty(); var parties = cart.Parties.ToList(); parties.Add(billingParty); cart.Parties = parties.AsSafeReadOnly(); var federatedPayment = inputModel.FederatedPayment.ToFederatedPaymentInfo(); federatedPayment.PartyID = billingParty.PartyId; payments.Add(federatedPayment); } if (!string.IsNullOrEmpty(inputModel.GiftCardPayment?.PaymentMethodID)) { payments.Add(inputModel.GiftCardPayment.ToGiftCardPaymentInfo()); } var request = new AddPaymentInfoRequest(cart, payments); result = CartServiceProvider.AddPaymentInfo(request); result.WriteToSitecoreLog(); return(new ManagerResponse <CartResult, CommerceCart>(result, result.Cart as CommerceCart)); }
public void ShouldAddPaymentInfoToCart() { var guid = Guid.NewGuid(); var request = new AddPaymentInfoRequest( new Cart() { ExternalId = guid.ToString(), ShopName = "my store" }, new List <PaymentInfo>() { new PaymentInfo() { PaymentProviderID = "Payments.PurchaseOrder", PaymentMethodID = "Purchase Order" } }); var result = new AddPaymentInfoResult(); var args = new ServicePipelineArgs(request, result); _client.AddPaymentInfo(guid, Arg.Any <PaymentInfoModel>(), request.Cart.ShopName).Returns(new PaymentInfoModelResponse() { Success = true, Result = new PaymentInfoModel() { SystemName = "Payments.PurchaseOrder", MethodName = "Purchase Order" } }); _processor.Process(args); result.Success.Should().BeTrue(); result.Payments.Should().HaveCount(1); result.Cart.Payment.Should().HaveCount(1); result.Payments.ElementAt(0).PaymentProviderID.Should().Be("Payments.PurchaseOrder"); result.Payments.ElementAt(0).PaymentMethodID.Should().Be("Purchase Order"); }
/// <summary> /// Sets the payment methods. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="inputModel">The input model.</param> /// <returns>The manager response with a cart in the result.</returns> public virtual ManagerResponse<CartResult, CommerceCart> SetPaymentMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] PaymentInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(inputModel, "inputModel"); var addPaymentResponse = new ManagerResponse<CartResult, CommerceCart>(new AddPaymentInfoResult { Success = true }, null); var errorResponse = new AddPaymentInfoResult { Success = false }; var response = this.GetCurrentCart(storefront, visitorContext, true); if (!response.ServiceProviderResult.Success || response.Result == null) { return new ManagerResponse<CartResult, CommerceCart>(errorResponse, response.Result); } var cart = (CommerceCart)response.ServiceProviderResult.Cart; if (inputModel.CreditCardPayment != null && !string.IsNullOrEmpty(inputModel.CreditCardPayment.PaymentMethodID) && inputModel.BillingAddress != null) { var removeBillingResponse = this.RemoveAllBillingParties(storefront, visitorContext, cart); if (!removeBillingResponse.ServiceProviderResult.Success) { errorResponse.SystemMessages.Add(removeBillingResponse.ServiceProviderResult.SystemMessages[0]); return new ManagerResponse<CartResult, CommerceCart>(errorResponse, errorResponse.Cart as CommerceCart); } cart = removeBillingResponse.Result; CommerceParty billingParty = inputModel.BillingAddress.ToNewBillingParty(); var addPartyResponse = this.AddPartyToCart(storefront, visitorContext, cart, billingParty); if (!addPartyResponse.ServiceProviderResult.Success) { errorResponse.SystemMessages.Add(addPartyResponse.ServiceProviderResult.SystemMessages[0]); return new ManagerResponse<CartResult, CommerceCart>(errorResponse, errorResponse.Cart as CommerceCart); } cart = addPartyResponse.Result; var removePaymentResponse = this.RemoveAllPaymentMethods(storefront, visitorContext, cart); if (!removePaymentResponse.ServiceProviderResult.Success) { errorResponse.SystemMessages.Add(removePaymentResponse.ServiceProviderResult.SystemMessages[0]); return new ManagerResponse<CartResult, CommerceCart>(errorResponse, errorResponse.Cart as CommerceCart); } cart = removePaymentResponse.Result; CommerceCreditCardPaymentInfo creditCardPayment = inputModel.CreditCardPayment.ToCreditCardPaymentInfo(); addPaymentResponse = this.AddPaymentInfoToCart(storefront, visitorContext, cart, creditCardPayment, billingParty, true); if (!addPaymentResponse.ServiceProviderResult.Success) { errorResponse.SystemMessages.Add(addPaymentResponse.ServiceProviderResult.SystemMessages[0]); return new ManagerResponse<CartResult, CommerceCart>(errorResponse, errorResponse.Cart as CommerceCart); } cart = addPaymentResponse.Result; } return addPaymentResponse; }
/// <summary> /// Sets the payment methods. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="inputModel">The input model.</param> /// <returns>The manager response with a cart in the result.</returns> public virtual ManagerResponse <CartResult, CommerceCart> SetPaymentMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] PaymentInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(inputModel, "inputModel"); var result = new AddPaymentInfoResult { Success = false }; var response = this.GetCurrentCart(storefront, visitorContext, true); if (!response.ServiceProviderResult.Success || response.Result == null) { return(new ManagerResponse <CartResult, CommerceCart>(result, response.Result)); } var payments = new List <PaymentInfo>(); var cart = (CommerceCart)response.ServiceProviderResult.Cart; if (inputModel.CreditCardPayment != null && !string.IsNullOrEmpty(inputModel.CreditCardPayment.PaymentMethodID) && inputModel.BillingAddress != null) { CommerceParty billingParty = inputModel.BillingAddress.ToParty(); List <Party> parties = cart.Parties.ToList(); parties.Add(billingParty); cart.Parties = parties.AsSafeReadOnly(); payments.Add(inputModel.CreditCardPayment.ToCreditCardPaymentInfo()); } if (inputModel.FederatedPayment != null && !string.IsNullOrEmpty(inputModel.FederatedPayment.CardToken) && inputModel.BillingAddress != null) { CommerceParty billingParty = inputModel.BillingAddress.ToParty(); List <Party> parties = cart.Parties.ToList(); parties.Add(billingParty); cart.Parties = parties.AsSafeReadOnly(); var federatedPayment = inputModel.FederatedPayment.ToCreditCardPaymentInfo(); federatedPayment.PartyID = billingParty.PartyId; payments.Add(federatedPayment); } if (inputModel.GiftCardPayment != null && !string.IsNullOrEmpty(inputModel.GiftCardPayment.PaymentMethodID)) { payments.Add(inputModel.GiftCardPayment.ToGiftCardPaymentInfo()); } if (inputModel.LoyaltyCardPayment != null && !string.IsNullOrEmpty(inputModel.LoyaltyCardPayment.PaymentMethodID)) { payments.Add(inputModel.LoyaltyCardPayment.ToLoyaltyCardPaymentInfo()); } var request = new AddPaymentInfoRequest(cart, payments); result = this.CartServiceProvider.AddPaymentInfo(request); if (!result.Success) { Helpers.LogSystemMessages(result.SystemMessages, result); } return(new ManagerResponse <CartResult, CommerceCart>(result, result.Cart as CommerceCart)); }