/// <summary>
 /// Initializes a new instance of the <see cref="PaymentMethodsRequest" /> class.
 /// </summary>
 /// <param name="additionalData">This field contains additional data, which may be required for a particular payment request.  The &#x60;additionalData&#x60; object consists of entries, each of which includes the key and value..</param>
 /// <param name="allowedPaymentMethods">List of payments methods to be presented to the shopper. To refer to payment methods, use their &#x60;paymentMethod.type&#x60; from [Payment methods overview](https://docs.adyen.com/payment-methods).  Example: &#x60;\&quot;allowedPaymentMethods\&quot;:[\&quot;ideal\&quot;,\&quot;giropay\&quot;]&#x60;.</param>
 /// <param name="amount">amount.</param>
 /// <param name="blockedPaymentMethods">List of payments methods to be hidden from the shopper. To refer to payment methods, use their &#x60;paymentMethod.type&#x60; from [Payment methods overview](https://docs.adyen.com/payment-methods).  Example: &#x60;\&quot;blockedPaymentMethods\&quot;:[\&quot;ideal\&quot;,\&quot;giropay\&quot;]&#x60;.</param>
 /// <param name="channel">The platform where a payment transaction takes place. This field can be used for filtering out payment methods that are only available on specific platforms. Possible values: * iOS * Android * Web.</param>
 /// <param name="countryCode">The shopper&#x27;s country code..</param>
 /// <param name="merchantAccount">The merchant account identifier, with which you want to process the transaction. (required).</param>
 /// <param name="order">order.</param>
 /// <param name="shopperLocale">The combination of a language code and a country code to specify the language to be used in the payment..</param>
 /// <param name="shopperReference">Your reference to uniquely identify this shopper (for example, user ID or account ID). Minimum length: 3 characters. &gt; This field is required for recurring payments..</param>
 /// <param name="splitCardFundingSources">Boolean value indicating whether the card payment method should be split into separate debit and credit options. (default to false).</param>
 /// <param name="store">The physical store, for which this payment is processed..</param>
 public PaymentMethodsRequest(
     Dictionary <string, string> additionalData = default(Dictionary <string, string>),
     List <string> allowedPaymentMethods        = default(List <string>), Amount amount       = default(Amount),
     List <string> blockedPaymentMethods        = default(List <string>), ChannelEnum?channel = default(ChannelEnum?),
     string countryCode      = default(string), string merchantAccount       = default(string),
     CheckoutOrder order     = default(CheckoutOrder), string shopperLocale  = default(string),
     string shopperReference = default(string), bool?splitCardFundingSources = false,
     string store            = default(string))
 {
     // to ensure "merchantAccount" is required (not null)
     if (merchantAccount == null)
     {
         throw new InvalidDataException(
                   "merchantAccount is a required property for PaymentMethodsRequest and cannot be null");
     }
     else
     {
         this.MerchantAccount = merchantAccount;
     }
     this.AdditionalData        = additionalData;
     this.AllowedPaymentMethods = allowedPaymentMethods;
     this.Amount = amount;
     this.BlockedPaymentMethods = blockedPaymentMethods;
     this.Channel          = channel;
     this.CountryCode      = countryCode;
     this.Order            = order;
     this.ShopperLocale    = shopperLocale;
     this.ShopperReference = shopperReference;
     // use default value if no "splitCardFundingSources" provided
     if (splitCardFundingSources == null)
     {
         this.SplitCardFundingSources = false;
     }
     else
     {
         this.SplitCardFundingSources = splitCardFundingSources;
     }
     this.Store = store;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CheckoutCancelOrderRequest" /> class.
 /// </summary>
 /// <param name="merchantAccount">The merchant account identifier that orderData belongs to. (required).</param>
 /// <param name="order">order (required).</param>
 public CheckoutCancelOrderRequest(string merchantAccount = default(string),
                                   CheckoutOrder order    = default(CheckoutOrder))
 {
     // to ensure "merchantAccount" is required (not null)
     if (merchantAccount == null)
     {
         throw new InvalidDataException(
                   "merchantAccount is a required property for CheckoutCancelOrderRequest and cannot be null");
     }
     else
     {
         this.MerchantAccount = merchantAccount;
     }
     // to ensure "order" is required (not null)
     if (order == null)
     {
         throw new InvalidDataException(
                   "order is a required property for CheckoutCancelOrderRequest and cannot be null");
     }
     else
     {
         this.Order = order;
     }
 }