/// <summary>
 /// Initializes a new instance of the <see cref="CreatePaymentRequest"/> class.
 /// </summary>
 /// <param name="sourceId">source_id.</param>
 /// <param name="idempotencyKey">idempotency_key.</param>
 /// <param name="amountMoney">amount_money.</param>
 /// <param name="tipMoney">tip_money.</param>
 /// <param name="appFeeMoney">app_fee_money.</param>
 /// <param name="delayDuration">delay_duration.</param>
 /// <param name="autocomplete">autocomplete.</param>
 /// <param name="orderId">order_id.</param>
 /// <param name="customerId">customer_id.</param>
 /// <param name="locationId">location_id.</param>
 /// <param name="referenceId">reference_id.</param>
 /// <param name="verificationToken">verification_token.</param>
 /// <param name="acceptPartialAuthorization">accept_partial_authorization.</param>
 /// <param name="buyerEmailAddress">buyer_email_address.</param>
 /// <param name="billingAddress">billing_address.</param>
 /// <param name="shippingAddress">shipping_address.</param>
 /// <param name="note">note.</param>
 /// <param name="statementDescriptionIdentifier">statement_description_identifier.</param>
 /// <param name="cashDetails">cash_details.</param>
 /// <param name="externalDetails">external_details.</param>
 public CreatePaymentRequest(
     string sourceId,
     string idempotencyKey,
     Models.Money amountMoney,
     Models.Money tipMoney           = null,
     Models.Money appFeeMoney        = null,
     string delayDuration            = null,
     bool?autocomplete               = null,
     string orderId                  = null,
     string customerId               = null,
     string locationId               = null,
     string referenceId              = null,
     string verificationToken        = null,
     bool?acceptPartialAuthorization = null,
     string buyerEmailAddress        = null,
     Models.Address billingAddress   = null,
     Models.Address shippingAddress  = null,
     string note = null,
     string statementDescriptionIdentifier         = null,
     Models.CashPaymentDetails cashDetails         = null,
     Models.ExternalPaymentDetails externalDetails = null)
 {
     this.SourceId                   = sourceId;
     this.IdempotencyKey             = idempotencyKey;
     this.AmountMoney                = amountMoney;
     this.TipMoney                   = tipMoney;
     this.AppFeeMoney                = appFeeMoney;
     this.DelayDuration              = delayDuration;
     this.Autocomplete               = autocomplete;
     this.OrderId                    = orderId;
     this.CustomerId                 = customerId;
     this.LocationId                 = locationId;
     this.ReferenceId                = referenceId;
     this.VerificationToken          = verificationToken;
     this.AcceptPartialAuthorization = acceptPartialAuthorization;
     this.BuyerEmailAddress          = buyerEmailAddress;
     this.BillingAddress             = billingAddress;
     this.ShippingAddress            = shippingAddress;
     this.Note = note;
     this.StatementDescriptionIdentifier = statementDescriptionIdentifier;
     this.CashDetails     = cashDetails;
     this.ExternalDetails = externalDetails;
 }
 /// <summary>
 /// CashDetails.
 /// </summary>
 /// <param name="cashDetails"> cashDetails. </param>
 /// <returns> Builder. </returns>
 public Builder CashDetails(Models.CashPaymentDetails cashDetails)
 {
     this.cashDetails = cashDetails;
     return(this);
 }