public ManagerResponse <AddPaymentInfoResult, Cart> AddPaymentInfo(
            string shopName,
            Cart cart,
            PartyEntity billingPartyEntity,
            FederatedPaymentArgs federatedPaymentArgs)
        {
            var payments = new List <PaymentInfo>();

            cart = this.RemoveAllPaymentMethods(cart).Result;

            if ((federatedPaymentArgs != null) &&
                !string.IsNullOrEmpty(federatedPaymentArgs.CardToken) &&
                (billingPartyEntity != null))
            {
                var 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);
                var federatedPaymentInfo = this.connectEntityMapper.MapToFederatedPaymentInfo(federatedPaymentArgs);
                federatedPaymentInfo.PartyID = commerceParty.PartyId;
                federatedPaymentInfo.Amount  = cart.Total.Amount;
                payments.Add(federatedPaymentInfo);
            }

            var request           = new AddPaymentInfoRequest(cart, payments);
            var paymentInfoResult = this.cartServiceProvider.AddPaymentInfo(request);

            if (!paymentInfoResult.Success)
            {
                paymentInfoResult.SystemMessages.LogSystemMessages(paymentInfoResult);
            }

            return(new ManagerResponse <AddPaymentInfoResult, Cart>(paymentInfoResult, paymentInfoResult.Cart));
        }
 public FederatedPaymentInfo MapToFederatedPaymentInfo(FederatedPaymentArgs item)
 {
     return(this.innerMapper.Map <FederatedPaymentInfo>(item));
 }