/*
Adyen Checkout API

API version: 71
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package checkout

import (
	"encoding/json"
	"time"

	"github.com/adyen/adyen-go-api-library/v21/src/common"
)

// checks if the PaymentLinkResponse type satisfies the MappedNullable interface at compile time
var _ common.MappedNullable = &PaymentLinkResponse{}

// PaymentLinkResponse struct for PaymentLinkResponse
type PaymentLinkResponse struct {
	// List of payment methods to be presented to the shopper. To refer to payment methods, use their [payment method type](https://docs.adyen.com/payment-methods/payment-method-types).  Example: `\"allowedPaymentMethods\":[\"ideal\",\"applepay\"]`
	AllowedPaymentMethods []string         `json:"allowedPaymentMethods,omitempty"`
	Amount                Amount           `json:"amount"`
	ApplicationInfo       *ApplicationInfo `json:"applicationInfo,omitempty"`
	BillingAddress        *Address         `json:"billingAddress,omitempty"`
	// List of payment methods to be hidden from the shopper. To refer to payment methods, use their [payment method type](https://docs.adyen.com/payment-methods/payment-method-types).  Example: `\"blockedPaymentMethods\":[\"ideal\",\"applepay\"]`
	BlockedPaymentMethods []string `json:"blockedPaymentMethods,omitempty"`
	// The delay between the authorisation and scheduled auto-capture, specified in hours.
	CaptureDelayHours *int32 `json:"captureDelayHours,omitempty"`
	// The shopper's two-letter country code.
	CountryCode *string `json:"countryCode,omitempty"`
	// The shopper's date of birth.  Format [ISO-8601](https://www.w3.org/TR/NOTE-datetime): YYYY-MM-DD
	DateOfBirth *string `json:"dateOfBirth,omitempty"`
	// The date and time when the purchased goods should be delivered.  [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format: YYYY-MM-DDThh:mm:ss+TZD, for example, **2020-12-18T10:15:30+01:00**.
	DeliverAt       *time.Time `json:"deliverAt,omitempty"`
	DeliveryAddress *Address   `json:"deliveryAddress,omitempty"`
	// A short description visible on the payment page. Maximum length: 280 characters.
	Description *string `json:"description,omitempty"`
	// The date when the payment link expires.  [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with time zone offset: YYYY-MM-DDThh:mm:ss+TZD, for example, **2020-12-18T10:15:30+01:00**.  The maximum expiry date is 70 days after the payment link is created.  If not provided, the payment link expires 24 hours after it was created.
	ExpiresAt     *time.Time     `json:"expiresAt,omitempty"`
	FundOrigin    *FundOrigin    `json:"fundOrigin,omitempty"`
	FundRecipient *FundRecipient `json:"fundRecipient,omitempty"`
	// A unique identifier of the payment link.
	Id string `json:"id"`
	// A set of key-value pairs that specifies the installment options available per payment method. The key must be a payment method name in lowercase. For example, **card** to specify installment options for all cards, or **visa** or **mc**. The value must be an object containing the installment options.
	InstallmentOptions *map[string]InstallmentOption `json:"installmentOptions,omitempty"`
	// Price and product information about the purchased items, to be included on the invoice sent to the shopper. This parameter is required for open invoice (_buy now, pay later_) payment methods such Afterpay, Clearpay, Klarna, RatePay, Riverty, and Zip.
	LineItems []LineItem `json:"lineItems,omitempty"`
	// Indicates if the payment must be [captured manually](https://docs.adyen.com/online-payments/capture).
	ManualCapture *bool `json:"manualCapture,omitempty"`
	// The [merchant category code](https://en.wikipedia.org/wiki/Merchant_category_code) (MCC) is a four-digit number, which relates to a particular market segment. This code reflects the predominant activity that is conducted by the merchant.
	Mcc *string `json:"mcc,omitempty"`
	// The merchant account identifier for which the payment link is created.
	MerchantAccount string `json:"merchantAccount"`
	// This reference allows linking multiple transactions to each other for reporting purposes (for example, order auth-rate). The reference should be unique per billing cycle.
	MerchantOrderReference *string `json:"merchantOrderReference,omitempty"`
	// Metadata consists of entries, each of which includes a key and a value. Limitations: * Maximum 20 key-value pairs per request. Otherwise, error \"177\" occurs: \"Metadata size exceeds limit\" * Maximum 20 characters per key. Otherwise, error \"178\" occurs: \"Metadata key size exceeds limit\" * A key cannot have the name `checkout.linkId`. Any value that you provide with this key is going to be replaced by the real payment link ID.
	Metadata                *map[string]string       `json:"metadata,omitempty"`
	PlatformChargebackLogic *PlatformChargebackLogic `json:"platformChargebackLogic,omitempty"`
	// Defines a recurring payment type. Required when `storePaymentMethodMode` is set to **askForConsent** or **enabled**. Possible values: * **Subscription** – A transaction for a fixed or variable amount, which follows a fixed schedule. * **CardOnFile** – With a card-on-file (CoF) transaction, card details are stored to enable one-click or omnichannel journeys, or simply to streamline the checkout process. Any subscription not following a fixed schedule is also considered a card-on-file transaction. * **UnscheduledCardOnFile** – An unscheduled card-on-file (UCoF) transaction is a transaction that occurs on a non-fixed schedule and/or has variable amounts. For example, automatic top-ups when a cardholder's balance drops below a certain amount.
	RecurringProcessingModel *string `json:"recurringProcessingModel,omitempty"`
	// A reference that is used to uniquely identify the payment in future communications about the payment status.
	Reference string `json:"reference"`
	// List of fields that the shopper has to provide on the payment page before completing the payment. For more information, refer to [Provide shopper information](https://docs.adyen.com/unified-commerce/pay-by-link/payment-links/api#shopper-information).  Possible values: * **billingAddress** – The address where to send the invoice. * **deliveryAddress** – The address where the purchased goods should be delivered. * **shopperEmail** – The shopper's email address. * **shopperName** – The shopper's full name. * **telephoneNumber** – The shopper's phone number.
	RequiredShopperFields []string `json:"requiredShopperFields,omitempty"`
	// Website URL used for redirection after payment is completed. If provided, a **Continue** button will be shown on the payment page. If shoppers select the button, they are redirected to the specified URL.
	ReturnUrl *string `json:"returnUrl,omitempty"`
	// Indicates whether the payment link can be reused for multiple payments. If not provided, this defaults to **false** which means the link can be used for one successful payment only.
	Reusable *bool     `json:"reusable,omitempty"`
	RiskData *RiskData `json:"riskData,omitempty"`
	// The shopper's email address.
	ShopperEmail *string `json:"shopperEmail,omitempty"`
	// The language to be used in the payment page, specified by a combination of a language and country code. For example, `en-US`.  For a list of shopper locales that Pay by Link supports, refer to [Language and localization](https://docs.adyen.com/unified-commerce/pay-by-link/payment-links/api#language).
	ShopperLocale *string `json:"shopperLocale,omitempty"`
	ShopperName   *Name   `json:"shopperName,omitempty"`
	// Your reference to uniquely identify this shopper, for example user ID or account ID. The value is case-sensitive and must be at least three characters. > Your reference must not include personally identifiable information (PII) such as name or email address.
	ShopperReference *string `json:"shopperReference,omitempty"`
	// The text to be shown on the shopper's bank statement.  We recommend sending a maximum of 22 characters, otherwise banks might truncate the string.  Allowed characters: **a-z**, **A-Z**, **0-9**, spaces, and special characters **. , ' _ - ? + * /_**.
	ShopperStatement *string `json:"shopperStatement,omitempty"`
	// Set to **false** to hide the button that lets the shopper remove a stored payment method.
	ShowRemovePaymentMethodButton *bool `json:"showRemovePaymentMethodButton,omitempty"`
	// The shopper's social security number.
	SocialSecurityNumber *string `json:"socialSecurityNumber,omitempty"`
	// Boolean value indicating whether the card payment method should be split into separate debit and credit options.
	SplitCardFundingSources *bool `json:"splitCardFundingSources,omitempty"`
	// An array of objects specifying how to split a payment when using [Adyen for Platforms](https://docs.adyen.com/platforms/process-payments#providing-split-information), [Classic Platforms integration](https://docs.adyen.com/classic-platforms/processing-payments#providing-split-information), or [Issuing](https://docs.adyen.com/issuing/manage-funds#split).
	Splits []Split `json:"splits,omitempty"`
	// Status of the payment link. Possible values: * **active**: The link can be used to make payments. * **expired**: The expiry date for the payment link has passed. Shoppers can no longer use the link to make payments. * **completed**: The shopper completed the payment. * **paymentPending**: The shopper is in the process of making the payment. Applies to payment methods with an asynchronous flow.
	Status string `json:"status"`
	// The physical store, for which this payment is processed.
	Store *string `json:"store,omitempty"`
	// Indicates if the details of the payment method will be stored for the shopper. Possible values: * **disabled** – No details will be stored (default). * **askForConsent** – If the `shopperReference` is provided, the UI lets the shopper choose if they want their payment details to be stored. * **enabled** – If the `shopperReference` is provided, the details will be stored without asking the shopper for consent.   When set to **askForConsent** or **enabled**, you must also include the `recurringProcessingModel` parameter.
	StorePaymentMethodMode *string `json:"storePaymentMethodMode,omitempty"`
	// The shopper's telephone number.
	TelephoneNumber *string `json:"telephoneNumber,omitempty"`
	// A [theme](https://docs.adyen.com/unified-commerce/pay-by-link/payment-links/api#themes) to customize the appearance of the payment page. If not specified, the payment page is rendered according to the theme set as default in your Customer Area.
	ThemeId             *string                             `json:"themeId,omitempty"`
	ThreeDS2RequestData *CheckoutSessionThreeDS2RequestData `json:"threeDS2RequestData,omitempty"`
	// The date when the payment link status was updated.  [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format: YYYY-MM-DDThh:mm:ss+TZD, for example, **2020-12-18T10:15:30+01:00**.
	UpdatedAt *time.Time `json:"updatedAt,omitempty"`
	// The URL at which the shopper can complete the payment.
	Url string `json:"url"`
}

// NewPaymentLinkResponse instantiates a new PaymentLinkResponse object
// This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed
func NewPaymentLinkResponse(amount Amount, id string, merchantAccount string, reference string, status string, url string) *PaymentLinkResponse {
	this := PaymentLinkResponse{}
	this.Amount = amount
	this.Id = id
	this.MerchantAccount = merchantAccount
	this.Reference = reference
	var showRemovePaymentMethodButton bool = true
	this.ShowRemovePaymentMethodButton = &showRemovePaymentMethodButton
	var splitCardFundingSources bool = false
	this.SplitCardFundingSources = &splitCardFundingSources
	this.Status = status
	this.Url = url
	return &this
}

// NewPaymentLinkResponseWithDefaults instantiates a new PaymentLinkResponse object
// This constructor will only assign default values to properties that have it defined,
// but it doesn't guarantee that properties required by API are set
func NewPaymentLinkResponseWithDefaults() *PaymentLinkResponse {
	this := PaymentLinkResponse{}
	var showRemovePaymentMethodButton bool = true
	this.ShowRemovePaymentMethodButton = &showRemovePaymentMethodButton
	var splitCardFundingSources bool = false
	this.SplitCardFundingSources = &splitCardFundingSources
	return &this
}

// GetAllowedPaymentMethods returns the AllowedPaymentMethods field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetAllowedPaymentMethods() []string {
	if o == nil || common.IsNil(o.AllowedPaymentMethods) {
		var ret []string
		return ret
	}
	return o.AllowedPaymentMethods
}

// GetAllowedPaymentMethodsOk returns a tuple with the AllowedPaymentMethods field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetAllowedPaymentMethodsOk() ([]string, bool) {
	if o == nil || common.IsNil(o.AllowedPaymentMethods) {
		return nil, false
	}
	return o.AllowedPaymentMethods, true
}

// HasAllowedPaymentMethods returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasAllowedPaymentMethods() bool {
	if o != nil && !common.IsNil(o.AllowedPaymentMethods) {
		return true
	}

	return false
}

// SetAllowedPaymentMethods gets a reference to the given []string and assigns it to the AllowedPaymentMethods field.
func (o *PaymentLinkResponse) SetAllowedPaymentMethods(v []string) {
	o.AllowedPaymentMethods = v
}

// GetAmount returns the Amount field value
func (o *PaymentLinkResponse) GetAmount() Amount {
	if o == nil {
		var ret Amount
		return ret
	}

	return o.Amount
}

// GetAmountOk returns a tuple with the Amount field value
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetAmountOk() (*Amount, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Amount, true
}

// SetAmount sets field value
func (o *PaymentLinkResponse) SetAmount(v Amount) {
	o.Amount = v
}

// GetApplicationInfo returns the ApplicationInfo field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetApplicationInfo() ApplicationInfo {
	if o == nil || common.IsNil(o.ApplicationInfo) {
		var ret ApplicationInfo
		return ret
	}
	return *o.ApplicationInfo
}

// GetApplicationInfoOk returns a tuple with the ApplicationInfo field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetApplicationInfoOk() (*ApplicationInfo, bool) {
	if o == nil || common.IsNil(o.ApplicationInfo) {
		return nil, false
	}
	return o.ApplicationInfo, true
}

// HasApplicationInfo returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasApplicationInfo() bool {
	if o != nil && !common.IsNil(o.ApplicationInfo) {
		return true
	}

	return false
}

// SetApplicationInfo gets a reference to the given ApplicationInfo and assigns it to the ApplicationInfo field.
func (o *PaymentLinkResponse) SetApplicationInfo(v ApplicationInfo) {
	o.ApplicationInfo = &v
}

// GetBillingAddress returns the BillingAddress field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetBillingAddress() Address {
	if o == nil || common.IsNil(o.BillingAddress) {
		var ret Address
		return ret
	}
	return *o.BillingAddress
}

// GetBillingAddressOk returns a tuple with the BillingAddress field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetBillingAddressOk() (*Address, bool) {
	if o == nil || common.IsNil(o.BillingAddress) {
		return nil, false
	}
	return o.BillingAddress, true
}

// HasBillingAddress returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasBillingAddress() bool {
	if o != nil && !common.IsNil(o.BillingAddress) {
		return true
	}

	return false
}

// SetBillingAddress gets a reference to the given Address and assigns it to the BillingAddress field.
func (o *PaymentLinkResponse) SetBillingAddress(v Address) {
	o.BillingAddress = &v
}

// GetBlockedPaymentMethods returns the BlockedPaymentMethods field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetBlockedPaymentMethods() []string {
	if o == nil || common.IsNil(o.BlockedPaymentMethods) {
		var ret []string
		return ret
	}
	return o.BlockedPaymentMethods
}

// GetBlockedPaymentMethodsOk returns a tuple with the BlockedPaymentMethods field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetBlockedPaymentMethodsOk() ([]string, bool) {
	if o == nil || common.IsNil(o.BlockedPaymentMethods) {
		return nil, false
	}
	return o.BlockedPaymentMethods, true
}

// HasBlockedPaymentMethods returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasBlockedPaymentMethods() bool {
	if o != nil && !common.IsNil(o.BlockedPaymentMethods) {
		return true
	}

	return false
}

// SetBlockedPaymentMethods gets a reference to the given []string and assigns it to the BlockedPaymentMethods field.
func (o *PaymentLinkResponse) SetBlockedPaymentMethods(v []string) {
	o.BlockedPaymentMethods = v
}

// GetCaptureDelayHours returns the CaptureDelayHours field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetCaptureDelayHours() int32 {
	if o == nil || common.IsNil(o.CaptureDelayHours) {
		var ret int32
		return ret
	}
	return *o.CaptureDelayHours
}

// GetCaptureDelayHoursOk returns a tuple with the CaptureDelayHours field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetCaptureDelayHoursOk() (*int32, bool) {
	if o == nil || common.IsNil(o.CaptureDelayHours) {
		return nil, false
	}
	return o.CaptureDelayHours, true
}

// HasCaptureDelayHours returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasCaptureDelayHours() bool {
	if o != nil && !common.IsNil(o.CaptureDelayHours) {
		return true
	}

	return false
}

// SetCaptureDelayHours gets a reference to the given int32 and assigns it to the CaptureDelayHours field.
func (o *PaymentLinkResponse) SetCaptureDelayHours(v int32) {
	o.CaptureDelayHours = &v
}

// GetCountryCode returns the CountryCode field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetCountryCode() string {
	if o == nil || common.IsNil(o.CountryCode) {
		var ret string
		return ret
	}
	return *o.CountryCode
}

// GetCountryCodeOk returns a tuple with the CountryCode field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetCountryCodeOk() (*string, bool) {
	if o == nil || common.IsNil(o.CountryCode) {
		return nil, false
	}
	return o.CountryCode, true
}

// HasCountryCode returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasCountryCode() bool {
	if o != nil && !common.IsNil(o.CountryCode) {
		return true
	}

	return false
}

// SetCountryCode gets a reference to the given string and assigns it to the CountryCode field.
func (o *PaymentLinkResponse) SetCountryCode(v string) {
	o.CountryCode = &v
}

// GetDateOfBirth returns the DateOfBirth field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetDateOfBirth() string {
	if o == nil || common.IsNil(o.DateOfBirth) {
		var ret string
		return ret
	}
	return *o.DateOfBirth
}

// GetDateOfBirthOk returns a tuple with the DateOfBirth field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetDateOfBirthOk() (*string, bool) {
	if o == nil || common.IsNil(o.DateOfBirth) {
		return nil, false
	}
	return o.DateOfBirth, true
}

// HasDateOfBirth returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasDateOfBirth() bool {
	if o != nil && !common.IsNil(o.DateOfBirth) {
		return true
	}

	return false
}

// SetDateOfBirth gets a reference to the given string and assigns it to the DateOfBirth field.
func (o *PaymentLinkResponse) SetDateOfBirth(v string) {
	o.DateOfBirth = &v
}

// GetDeliverAt returns the DeliverAt field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetDeliverAt() time.Time {
	if o == nil || common.IsNil(o.DeliverAt) {
		var ret time.Time
		return ret
	}
	return *o.DeliverAt
}

// GetDeliverAtOk returns a tuple with the DeliverAt field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetDeliverAtOk() (*time.Time, bool) {
	if o == nil || common.IsNil(o.DeliverAt) {
		return nil, false
	}
	return o.DeliverAt, true
}

// HasDeliverAt returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasDeliverAt() bool {
	if o != nil && !common.IsNil(o.DeliverAt) {
		return true
	}

	return false
}

// SetDeliverAt gets a reference to the given time.Time and assigns it to the DeliverAt field.
func (o *PaymentLinkResponse) SetDeliverAt(v time.Time) {
	o.DeliverAt = &v
}

// GetDeliveryAddress returns the DeliveryAddress field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetDeliveryAddress() Address {
	if o == nil || common.IsNil(o.DeliveryAddress) {
		var ret Address
		return ret
	}
	return *o.DeliveryAddress
}

// GetDeliveryAddressOk returns a tuple with the DeliveryAddress field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetDeliveryAddressOk() (*Address, bool) {
	if o == nil || common.IsNil(o.DeliveryAddress) {
		return nil, false
	}
	return o.DeliveryAddress, true
}

// HasDeliveryAddress returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasDeliveryAddress() bool {
	if o != nil && !common.IsNil(o.DeliveryAddress) {
		return true
	}

	return false
}

// SetDeliveryAddress gets a reference to the given Address and assigns it to the DeliveryAddress field.
func (o *PaymentLinkResponse) SetDeliveryAddress(v Address) {
	o.DeliveryAddress = &v
}

// GetDescription returns the Description field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetDescription() string {
	if o == nil || common.IsNil(o.Description) {
		var ret string
		return ret
	}
	return *o.Description
}

// GetDescriptionOk returns a tuple with the Description field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetDescriptionOk() (*string, bool) {
	if o == nil || common.IsNil(o.Description) {
		return nil, false
	}
	return o.Description, true
}

// HasDescription returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasDescription() bool {
	if o != nil && !common.IsNil(o.Description) {
		return true
	}

	return false
}

// SetDescription gets a reference to the given string and assigns it to the Description field.
func (o *PaymentLinkResponse) SetDescription(v string) {
	o.Description = &v
}

// GetExpiresAt returns the ExpiresAt field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetExpiresAt() time.Time {
	if o == nil || common.IsNil(o.ExpiresAt) {
		var ret time.Time
		return ret
	}
	return *o.ExpiresAt
}

// GetExpiresAtOk returns a tuple with the ExpiresAt field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetExpiresAtOk() (*time.Time, bool) {
	if o == nil || common.IsNil(o.ExpiresAt) {
		return nil, false
	}
	return o.ExpiresAt, true
}

// HasExpiresAt returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasExpiresAt() bool {
	if o != nil && !common.IsNil(o.ExpiresAt) {
		return true
	}

	return false
}

// SetExpiresAt gets a reference to the given time.Time and assigns it to the ExpiresAt field.
func (o *PaymentLinkResponse) SetExpiresAt(v time.Time) {
	o.ExpiresAt = &v
}

// GetFundOrigin returns the FundOrigin field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetFundOrigin() FundOrigin {
	if o == nil || common.IsNil(o.FundOrigin) {
		var ret FundOrigin
		return ret
	}
	return *o.FundOrigin
}

// GetFundOriginOk returns a tuple with the FundOrigin field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetFundOriginOk() (*FundOrigin, bool) {
	if o == nil || common.IsNil(o.FundOrigin) {
		return nil, false
	}
	return o.FundOrigin, true
}

// HasFundOrigin returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasFundOrigin() bool {
	if o != nil && !common.IsNil(o.FundOrigin) {
		return true
	}

	return false
}

// SetFundOrigin gets a reference to the given FundOrigin and assigns it to the FundOrigin field.
func (o *PaymentLinkResponse) SetFundOrigin(v FundOrigin) {
	o.FundOrigin = &v
}

// GetFundRecipient returns the FundRecipient field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetFundRecipient() FundRecipient {
	if o == nil || common.IsNil(o.FundRecipient) {
		var ret FundRecipient
		return ret
	}
	return *o.FundRecipient
}

// GetFundRecipientOk returns a tuple with the FundRecipient field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetFundRecipientOk() (*FundRecipient, bool) {
	if o == nil || common.IsNil(o.FundRecipient) {
		return nil, false
	}
	return o.FundRecipient, true
}

// HasFundRecipient returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasFundRecipient() bool {
	if o != nil && !common.IsNil(o.FundRecipient) {
		return true
	}

	return false
}

// SetFundRecipient gets a reference to the given FundRecipient and assigns it to the FundRecipient field.
func (o *PaymentLinkResponse) SetFundRecipient(v FundRecipient) {
	o.FundRecipient = &v
}

// GetId returns the Id field value
func (o *PaymentLinkResponse) GetId() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Id
}

// GetIdOk returns a tuple with the Id field value
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Id, true
}

// SetId sets field value
func (o *PaymentLinkResponse) SetId(v string) {
	o.Id = v
}

// GetInstallmentOptions returns the InstallmentOptions field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetInstallmentOptions() map[string]InstallmentOption {
	if o == nil || common.IsNil(o.InstallmentOptions) {
		var ret map[string]InstallmentOption
		return ret
	}
	return *o.InstallmentOptions
}

// GetInstallmentOptionsOk returns a tuple with the InstallmentOptions field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetInstallmentOptionsOk() (*map[string]InstallmentOption, bool) {
	if o == nil || common.IsNil(o.InstallmentOptions) {
		return nil, false
	}
	return o.InstallmentOptions, true
}

// HasInstallmentOptions returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasInstallmentOptions() bool {
	if o != nil && !common.IsNil(o.InstallmentOptions) {
		return true
	}

	return false
}

// SetInstallmentOptions gets a reference to the given map[string]InstallmentOption and assigns it to the InstallmentOptions field.
func (o *PaymentLinkResponse) SetInstallmentOptions(v map[string]InstallmentOption) {
	o.InstallmentOptions = &v
}

// GetLineItems returns the LineItems field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetLineItems() []LineItem {
	if o == nil || common.IsNil(o.LineItems) {
		var ret []LineItem
		return ret
	}
	return o.LineItems
}

// GetLineItemsOk returns a tuple with the LineItems field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetLineItemsOk() ([]LineItem, bool) {
	if o == nil || common.IsNil(o.LineItems) {
		return nil, false
	}
	return o.LineItems, true
}

// HasLineItems returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasLineItems() bool {
	if o != nil && !common.IsNil(o.LineItems) {
		return true
	}

	return false
}

// SetLineItems gets a reference to the given []LineItem and assigns it to the LineItems field.
func (o *PaymentLinkResponse) SetLineItems(v []LineItem) {
	o.LineItems = v
}

// GetManualCapture returns the ManualCapture field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetManualCapture() bool {
	if o == nil || common.IsNil(o.ManualCapture) {
		var ret bool
		return ret
	}
	return *o.ManualCapture
}

// GetManualCaptureOk returns a tuple with the ManualCapture field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetManualCaptureOk() (*bool, bool) {
	if o == nil || common.IsNil(o.ManualCapture) {
		return nil, false
	}
	return o.ManualCapture, true
}

// HasManualCapture returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasManualCapture() bool {
	if o != nil && !common.IsNil(o.ManualCapture) {
		return true
	}

	return false
}

// SetManualCapture gets a reference to the given bool and assigns it to the ManualCapture field.
func (o *PaymentLinkResponse) SetManualCapture(v bool) {
	o.ManualCapture = &v
}

// GetMcc returns the Mcc field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetMcc() string {
	if o == nil || common.IsNil(o.Mcc) {
		var ret string
		return ret
	}
	return *o.Mcc
}

// GetMccOk returns a tuple with the Mcc field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetMccOk() (*string, bool) {
	if o == nil || common.IsNil(o.Mcc) {
		return nil, false
	}
	return o.Mcc, true
}

// HasMcc returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasMcc() bool {
	if o != nil && !common.IsNil(o.Mcc) {
		return true
	}

	return false
}

// SetMcc gets a reference to the given string and assigns it to the Mcc field.
func (o *PaymentLinkResponse) SetMcc(v string) {
	o.Mcc = &v
}

// GetMerchantAccount returns the MerchantAccount field value
func (o *PaymentLinkResponse) GetMerchantAccount() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.MerchantAccount
}

// GetMerchantAccountOk returns a tuple with the MerchantAccount field value
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetMerchantAccountOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.MerchantAccount, true
}

// SetMerchantAccount sets field value
func (o *PaymentLinkResponse) SetMerchantAccount(v string) {
	o.MerchantAccount = v
}

// GetMerchantOrderReference returns the MerchantOrderReference field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetMerchantOrderReference() string {
	if o == nil || common.IsNil(o.MerchantOrderReference) {
		var ret string
		return ret
	}
	return *o.MerchantOrderReference
}

// GetMerchantOrderReferenceOk returns a tuple with the MerchantOrderReference field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetMerchantOrderReferenceOk() (*string, bool) {
	if o == nil || common.IsNil(o.MerchantOrderReference) {
		return nil, false
	}
	return o.MerchantOrderReference, true
}

// HasMerchantOrderReference returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasMerchantOrderReference() bool {
	if o != nil && !common.IsNil(o.MerchantOrderReference) {
		return true
	}

	return false
}

// SetMerchantOrderReference gets a reference to the given string and assigns it to the MerchantOrderReference field.
func (o *PaymentLinkResponse) SetMerchantOrderReference(v string) {
	o.MerchantOrderReference = &v
}

// GetMetadata returns the Metadata field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetMetadata() map[string]string {
	if o == nil || common.IsNil(o.Metadata) {
		var ret map[string]string
		return ret
	}
	return *o.Metadata
}

// GetMetadataOk returns a tuple with the Metadata field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetMetadataOk() (*map[string]string, bool) {
	if o == nil || common.IsNil(o.Metadata) {
		return nil, false
	}
	return o.Metadata, true
}

// HasMetadata returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasMetadata() bool {
	if o != nil && !common.IsNil(o.Metadata) {
		return true
	}

	return false
}

// SetMetadata gets a reference to the given map[string]string and assigns it to the Metadata field.
func (o *PaymentLinkResponse) SetMetadata(v map[string]string) {
	o.Metadata = &v
}

// GetPlatformChargebackLogic returns the PlatformChargebackLogic field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetPlatformChargebackLogic() PlatformChargebackLogic {
	if o == nil || common.IsNil(o.PlatformChargebackLogic) {
		var ret PlatformChargebackLogic
		return ret
	}
	return *o.PlatformChargebackLogic
}

// GetPlatformChargebackLogicOk returns a tuple with the PlatformChargebackLogic field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetPlatformChargebackLogicOk() (*PlatformChargebackLogic, bool) {
	if o == nil || common.IsNil(o.PlatformChargebackLogic) {
		return nil, false
	}
	return o.PlatformChargebackLogic, true
}

// HasPlatformChargebackLogic returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasPlatformChargebackLogic() bool {
	if o != nil && !common.IsNil(o.PlatformChargebackLogic) {
		return true
	}

	return false
}

// SetPlatformChargebackLogic gets a reference to the given PlatformChargebackLogic and assigns it to the PlatformChargebackLogic field.
func (o *PaymentLinkResponse) SetPlatformChargebackLogic(v PlatformChargebackLogic) {
	o.PlatformChargebackLogic = &v
}

// GetRecurringProcessingModel returns the RecurringProcessingModel field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetRecurringProcessingModel() string {
	if o == nil || common.IsNil(o.RecurringProcessingModel) {
		var ret string
		return ret
	}
	return *o.RecurringProcessingModel
}

// GetRecurringProcessingModelOk returns a tuple with the RecurringProcessingModel field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetRecurringProcessingModelOk() (*string, bool) {
	if o == nil || common.IsNil(o.RecurringProcessingModel) {
		return nil, false
	}
	return o.RecurringProcessingModel, true
}

// HasRecurringProcessingModel returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasRecurringProcessingModel() bool {
	if o != nil && !common.IsNil(o.RecurringProcessingModel) {
		return true
	}

	return false
}

// SetRecurringProcessingModel gets a reference to the given string and assigns it to the RecurringProcessingModel field.
func (o *PaymentLinkResponse) SetRecurringProcessingModel(v string) {
	o.RecurringProcessingModel = &v
}

// GetReference returns the Reference field value
func (o *PaymentLinkResponse) GetReference() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Reference
}

// GetReferenceOk returns a tuple with the Reference field value
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetReferenceOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Reference, true
}

// SetReference sets field value
func (o *PaymentLinkResponse) SetReference(v string) {
	o.Reference = v
}

// GetRequiredShopperFields returns the RequiredShopperFields field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetRequiredShopperFields() []string {
	if o == nil || common.IsNil(o.RequiredShopperFields) {
		var ret []string
		return ret
	}
	return o.RequiredShopperFields
}

// GetRequiredShopperFieldsOk returns a tuple with the RequiredShopperFields field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetRequiredShopperFieldsOk() ([]string, bool) {
	if o == nil || common.IsNil(o.RequiredShopperFields) {
		return nil, false
	}
	return o.RequiredShopperFields, true
}

// HasRequiredShopperFields returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasRequiredShopperFields() bool {
	if o != nil && !common.IsNil(o.RequiredShopperFields) {
		return true
	}

	return false
}

// SetRequiredShopperFields gets a reference to the given []string and assigns it to the RequiredShopperFields field.
func (o *PaymentLinkResponse) SetRequiredShopperFields(v []string) {
	o.RequiredShopperFields = v
}

// GetReturnUrl returns the ReturnUrl field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetReturnUrl() string {
	if o == nil || common.IsNil(o.ReturnUrl) {
		var ret string
		return ret
	}
	return *o.ReturnUrl
}

// GetReturnUrlOk returns a tuple with the ReturnUrl field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetReturnUrlOk() (*string, bool) {
	if o == nil || common.IsNil(o.ReturnUrl) {
		return nil, false
	}
	return o.ReturnUrl, true
}

// HasReturnUrl returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasReturnUrl() bool {
	if o != nil && !common.IsNil(o.ReturnUrl) {
		return true
	}

	return false
}

// SetReturnUrl gets a reference to the given string and assigns it to the ReturnUrl field.
func (o *PaymentLinkResponse) SetReturnUrl(v string) {
	o.ReturnUrl = &v
}

// GetReusable returns the Reusable field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetReusable() bool {
	if o == nil || common.IsNil(o.Reusable) {
		var ret bool
		return ret
	}
	return *o.Reusable
}

// GetReusableOk returns a tuple with the Reusable field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetReusableOk() (*bool, bool) {
	if o == nil || common.IsNil(o.Reusable) {
		return nil, false
	}
	return o.Reusable, true
}

// HasReusable returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasReusable() bool {
	if o != nil && !common.IsNil(o.Reusable) {
		return true
	}

	return false
}

// SetReusable gets a reference to the given bool and assigns it to the Reusable field.
func (o *PaymentLinkResponse) SetReusable(v bool) {
	o.Reusable = &v
}

// GetRiskData returns the RiskData field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetRiskData() RiskData {
	if o == nil || common.IsNil(o.RiskData) {
		var ret RiskData
		return ret
	}
	return *o.RiskData
}

// GetRiskDataOk returns a tuple with the RiskData field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetRiskDataOk() (*RiskData, bool) {
	if o == nil || common.IsNil(o.RiskData) {
		return nil, false
	}
	return o.RiskData, true
}

// HasRiskData returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasRiskData() bool {
	if o != nil && !common.IsNil(o.RiskData) {
		return true
	}

	return false
}

// SetRiskData gets a reference to the given RiskData and assigns it to the RiskData field.
func (o *PaymentLinkResponse) SetRiskData(v RiskData) {
	o.RiskData = &v
}

// GetShopperEmail returns the ShopperEmail field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetShopperEmail() string {
	if o == nil || common.IsNil(o.ShopperEmail) {
		var ret string
		return ret
	}
	return *o.ShopperEmail
}

// GetShopperEmailOk returns a tuple with the ShopperEmail field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetShopperEmailOk() (*string, bool) {
	if o == nil || common.IsNil(o.ShopperEmail) {
		return nil, false
	}
	return o.ShopperEmail, true
}

// HasShopperEmail returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasShopperEmail() bool {
	if o != nil && !common.IsNil(o.ShopperEmail) {
		return true
	}

	return false
}

// SetShopperEmail gets a reference to the given string and assigns it to the ShopperEmail field.
func (o *PaymentLinkResponse) SetShopperEmail(v string) {
	o.ShopperEmail = &v
}

// GetShopperLocale returns the ShopperLocale field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetShopperLocale() string {
	if o == nil || common.IsNil(o.ShopperLocale) {
		var ret string
		return ret
	}
	return *o.ShopperLocale
}

// GetShopperLocaleOk returns a tuple with the ShopperLocale field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetShopperLocaleOk() (*string, bool) {
	if o == nil || common.IsNil(o.ShopperLocale) {
		return nil, false
	}
	return o.ShopperLocale, true
}

// HasShopperLocale returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasShopperLocale() bool {
	if o != nil && !common.IsNil(o.ShopperLocale) {
		return true
	}

	return false
}

// SetShopperLocale gets a reference to the given string and assigns it to the ShopperLocale field.
func (o *PaymentLinkResponse) SetShopperLocale(v string) {
	o.ShopperLocale = &v
}

// GetShopperName returns the ShopperName field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetShopperName() Name {
	if o == nil || common.IsNil(o.ShopperName) {
		var ret Name
		return ret
	}
	return *o.ShopperName
}

// GetShopperNameOk returns a tuple with the ShopperName field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetShopperNameOk() (*Name, bool) {
	if o == nil || common.IsNil(o.ShopperName) {
		return nil, false
	}
	return o.ShopperName, true
}

// HasShopperName returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasShopperName() bool {
	if o != nil && !common.IsNil(o.ShopperName) {
		return true
	}

	return false
}

// SetShopperName gets a reference to the given Name and assigns it to the ShopperName field.
func (o *PaymentLinkResponse) SetShopperName(v Name) {
	o.ShopperName = &v
}

// GetShopperReference returns the ShopperReference field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetShopperReference() string {
	if o == nil || common.IsNil(o.ShopperReference) {
		var ret string
		return ret
	}
	return *o.ShopperReference
}

// GetShopperReferenceOk returns a tuple with the ShopperReference field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetShopperReferenceOk() (*string, bool) {
	if o == nil || common.IsNil(o.ShopperReference) {
		return nil, false
	}
	return o.ShopperReference, true
}

// HasShopperReference returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasShopperReference() bool {
	if o != nil && !common.IsNil(o.ShopperReference) {
		return true
	}

	return false
}

// SetShopperReference gets a reference to the given string and assigns it to the ShopperReference field.
func (o *PaymentLinkResponse) SetShopperReference(v string) {
	o.ShopperReference = &v
}

// GetShopperStatement returns the ShopperStatement field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetShopperStatement() string {
	if o == nil || common.IsNil(o.ShopperStatement) {
		var ret string
		return ret
	}
	return *o.ShopperStatement
}

// GetShopperStatementOk returns a tuple with the ShopperStatement field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetShopperStatementOk() (*string, bool) {
	if o == nil || common.IsNil(o.ShopperStatement) {
		return nil, false
	}
	return o.ShopperStatement, true
}

// HasShopperStatement returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasShopperStatement() bool {
	if o != nil && !common.IsNil(o.ShopperStatement) {
		return true
	}

	return false
}

// SetShopperStatement gets a reference to the given string and assigns it to the ShopperStatement field.
func (o *PaymentLinkResponse) SetShopperStatement(v string) {
	o.ShopperStatement = &v
}

// GetShowRemovePaymentMethodButton returns the ShowRemovePaymentMethodButton field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetShowRemovePaymentMethodButton() bool {
	if o == nil || common.IsNil(o.ShowRemovePaymentMethodButton) {
		var ret bool
		return ret
	}
	return *o.ShowRemovePaymentMethodButton
}

// GetShowRemovePaymentMethodButtonOk returns a tuple with the ShowRemovePaymentMethodButton field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetShowRemovePaymentMethodButtonOk() (*bool, bool) {
	if o == nil || common.IsNil(o.ShowRemovePaymentMethodButton) {
		return nil, false
	}
	return o.ShowRemovePaymentMethodButton, true
}

// HasShowRemovePaymentMethodButton returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasShowRemovePaymentMethodButton() bool {
	if o != nil && !common.IsNil(o.ShowRemovePaymentMethodButton) {
		return true
	}

	return false
}

// SetShowRemovePaymentMethodButton gets a reference to the given bool and assigns it to the ShowRemovePaymentMethodButton field.
func (o *PaymentLinkResponse) SetShowRemovePaymentMethodButton(v bool) {
	o.ShowRemovePaymentMethodButton = &v
}

// GetSocialSecurityNumber returns the SocialSecurityNumber field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetSocialSecurityNumber() string {
	if o == nil || common.IsNil(o.SocialSecurityNumber) {
		var ret string
		return ret
	}
	return *o.SocialSecurityNumber
}

// GetSocialSecurityNumberOk returns a tuple with the SocialSecurityNumber field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetSocialSecurityNumberOk() (*string, bool) {
	if o == nil || common.IsNil(o.SocialSecurityNumber) {
		return nil, false
	}
	return o.SocialSecurityNumber, true
}

// HasSocialSecurityNumber returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasSocialSecurityNumber() bool {
	if o != nil && !common.IsNil(o.SocialSecurityNumber) {
		return true
	}

	return false
}

// SetSocialSecurityNumber gets a reference to the given string and assigns it to the SocialSecurityNumber field.
func (o *PaymentLinkResponse) SetSocialSecurityNumber(v string) {
	o.SocialSecurityNumber = &v
}

// GetSplitCardFundingSources returns the SplitCardFundingSources field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetSplitCardFundingSources() bool {
	if o == nil || common.IsNil(o.SplitCardFundingSources) {
		var ret bool
		return ret
	}
	return *o.SplitCardFundingSources
}

// GetSplitCardFundingSourcesOk returns a tuple with the SplitCardFundingSources field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetSplitCardFundingSourcesOk() (*bool, bool) {
	if o == nil || common.IsNil(o.SplitCardFundingSources) {
		return nil, false
	}
	return o.SplitCardFundingSources, true
}

// HasSplitCardFundingSources returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasSplitCardFundingSources() bool {
	if o != nil && !common.IsNil(o.SplitCardFundingSources) {
		return true
	}

	return false
}

// SetSplitCardFundingSources gets a reference to the given bool and assigns it to the SplitCardFundingSources field.
func (o *PaymentLinkResponse) SetSplitCardFundingSources(v bool) {
	o.SplitCardFundingSources = &v
}

// GetSplits returns the Splits field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetSplits() []Split {
	if o == nil || common.IsNil(o.Splits) {
		var ret []Split
		return ret
	}
	return o.Splits
}

// GetSplitsOk returns a tuple with the Splits field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetSplitsOk() ([]Split, bool) {
	if o == nil || common.IsNil(o.Splits) {
		return nil, false
	}
	return o.Splits, true
}

// HasSplits returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasSplits() bool {
	if o != nil && !common.IsNil(o.Splits) {
		return true
	}

	return false
}

// SetSplits gets a reference to the given []Split and assigns it to the Splits field.
func (o *PaymentLinkResponse) SetSplits(v []Split) {
	o.Splits = v
}

// GetStatus returns the Status field value
func (o *PaymentLinkResponse) GetStatus() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Status
}

// GetStatusOk returns a tuple with the Status field value
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetStatusOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Status, true
}

// SetStatus sets field value
func (o *PaymentLinkResponse) SetStatus(v string) {
	o.Status = v
}

// GetStore returns the Store field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetStore() string {
	if o == nil || common.IsNil(o.Store) {
		var ret string
		return ret
	}
	return *o.Store
}

// GetStoreOk returns a tuple with the Store field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetStoreOk() (*string, bool) {
	if o == nil || common.IsNil(o.Store) {
		return nil, false
	}
	return o.Store, true
}

// HasStore returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasStore() bool {
	if o != nil && !common.IsNil(o.Store) {
		return true
	}

	return false
}

// SetStore gets a reference to the given string and assigns it to the Store field.
func (o *PaymentLinkResponse) SetStore(v string) {
	o.Store = &v
}

// GetStorePaymentMethodMode returns the StorePaymentMethodMode field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetStorePaymentMethodMode() string {
	if o == nil || common.IsNil(o.StorePaymentMethodMode) {
		var ret string
		return ret
	}
	return *o.StorePaymentMethodMode
}

// GetStorePaymentMethodModeOk returns a tuple with the StorePaymentMethodMode field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetStorePaymentMethodModeOk() (*string, bool) {
	if o == nil || common.IsNil(o.StorePaymentMethodMode) {
		return nil, false
	}
	return o.StorePaymentMethodMode, true
}

// HasStorePaymentMethodMode returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasStorePaymentMethodMode() bool {
	if o != nil && !common.IsNil(o.StorePaymentMethodMode) {
		return true
	}

	return false
}

// SetStorePaymentMethodMode gets a reference to the given string and assigns it to the StorePaymentMethodMode field.
func (o *PaymentLinkResponse) SetStorePaymentMethodMode(v string) {
	o.StorePaymentMethodMode = &v
}

// GetTelephoneNumber returns the TelephoneNumber field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetTelephoneNumber() string {
	if o == nil || common.IsNil(o.TelephoneNumber) {
		var ret string
		return ret
	}
	return *o.TelephoneNumber
}

// GetTelephoneNumberOk returns a tuple with the TelephoneNumber field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetTelephoneNumberOk() (*string, bool) {
	if o == nil || common.IsNil(o.TelephoneNumber) {
		return nil, false
	}
	return o.TelephoneNumber, true
}

// HasTelephoneNumber returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasTelephoneNumber() bool {
	if o != nil && !common.IsNil(o.TelephoneNumber) {
		return true
	}

	return false
}

// SetTelephoneNumber gets a reference to the given string and assigns it to the TelephoneNumber field.
func (o *PaymentLinkResponse) SetTelephoneNumber(v string) {
	o.TelephoneNumber = &v
}

// GetThemeId returns the ThemeId field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetThemeId() string {
	if o == nil || common.IsNil(o.ThemeId) {
		var ret string
		return ret
	}
	return *o.ThemeId
}

// GetThemeIdOk returns a tuple with the ThemeId field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetThemeIdOk() (*string, bool) {
	if o == nil || common.IsNil(o.ThemeId) {
		return nil, false
	}
	return o.ThemeId, true
}

// HasThemeId returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasThemeId() bool {
	if o != nil && !common.IsNil(o.ThemeId) {
		return true
	}

	return false
}

// SetThemeId gets a reference to the given string and assigns it to the ThemeId field.
func (o *PaymentLinkResponse) SetThemeId(v string) {
	o.ThemeId = &v
}

// GetThreeDS2RequestData returns the ThreeDS2RequestData field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetThreeDS2RequestData() CheckoutSessionThreeDS2RequestData {
	if o == nil || common.IsNil(o.ThreeDS2RequestData) {
		var ret CheckoutSessionThreeDS2RequestData
		return ret
	}
	return *o.ThreeDS2RequestData
}

// GetThreeDS2RequestDataOk returns a tuple with the ThreeDS2RequestData field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetThreeDS2RequestDataOk() (*CheckoutSessionThreeDS2RequestData, bool) {
	if o == nil || common.IsNil(o.ThreeDS2RequestData) {
		return nil, false
	}
	return o.ThreeDS2RequestData, true
}

// HasThreeDS2RequestData returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasThreeDS2RequestData() bool {
	if o != nil && !common.IsNil(o.ThreeDS2RequestData) {
		return true
	}

	return false
}

// SetThreeDS2RequestData gets a reference to the given CheckoutSessionThreeDS2RequestData and assigns it to the ThreeDS2RequestData field.
func (o *PaymentLinkResponse) SetThreeDS2RequestData(v CheckoutSessionThreeDS2RequestData) {
	o.ThreeDS2RequestData = &v
}

// GetUpdatedAt returns the UpdatedAt field value if set, zero value otherwise.
func (o *PaymentLinkResponse) GetUpdatedAt() time.Time {
	if o == nil || common.IsNil(o.UpdatedAt) {
		var ret time.Time
		return ret
	}
	return *o.UpdatedAt
}

// GetUpdatedAtOk returns a tuple with the UpdatedAt field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetUpdatedAtOk() (*time.Time, bool) {
	if o == nil || common.IsNil(o.UpdatedAt) {
		return nil, false
	}
	return o.UpdatedAt, true
}

// HasUpdatedAt returns a boolean if a field has been set.
func (o *PaymentLinkResponse) HasUpdatedAt() bool {
	if o != nil && !common.IsNil(o.UpdatedAt) {
		return true
	}

	return false
}

// SetUpdatedAt gets a reference to the given time.Time and assigns it to the UpdatedAt field.
func (o *PaymentLinkResponse) SetUpdatedAt(v time.Time) {
	o.UpdatedAt = &v
}

// GetUrl returns the Url field value
func (o *PaymentLinkResponse) GetUrl() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Url
}

// GetUrlOk returns a tuple with the Url field value
// and a boolean to check if the value has been set.
func (o *PaymentLinkResponse) GetUrlOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Url, true
}

// SetUrl sets field value
func (o *PaymentLinkResponse) SetUrl(v string) {
	o.Url = v
}

func (o PaymentLinkResponse) MarshalJSON() ([]byte, error) {
	toSerialize, err := o.ToMap()
	if err != nil {
		return []byte{}, err
	}
	return json.Marshal(toSerialize)
}

func (o PaymentLinkResponse) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !common.IsNil(o.AllowedPaymentMethods) {
		toSerialize["allowedPaymentMethods"] = o.AllowedPaymentMethods
	}
	toSerialize["amount"] = o.Amount
	if !common.IsNil(o.ApplicationInfo) {
		toSerialize["applicationInfo"] = o.ApplicationInfo
	}
	if !common.IsNil(o.BillingAddress) {
		toSerialize["billingAddress"] = o.BillingAddress
	}
	if !common.IsNil(o.BlockedPaymentMethods) {
		toSerialize["blockedPaymentMethods"] = o.BlockedPaymentMethods
	}
	if !common.IsNil(o.CaptureDelayHours) {
		toSerialize["captureDelayHours"] = o.CaptureDelayHours
	}
	if !common.IsNil(o.CountryCode) {
		toSerialize["countryCode"] = o.CountryCode
	}
	if !common.IsNil(o.DateOfBirth) {
		toSerialize["dateOfBirth"] = o.DateOfBirth
	}
	if !common.IsNil(o.DeliverAt) {
		toSerialize["deliverAt"] = o.DeliverAt
	}
	if !common.IsNil(o.DeliveryAddress) {
		toSerialize["deliveryAddress"] = o.DeliveryAddress
	}
	if !common.IsNil(o.Description) {
		toSerialize["description"] = o.Description
	}
	if !common.IsNil(o.ExpiresAt) {
		toSerialize["expiresAt"] = o.ExpiresAt
	}
	if !common.IsNil(o.FundOrigin) {
		toSerialize["fundOrigin"] = o.FundOrigin
	}
	if !common.IsNil(o.FundRecipient) {
		toSerialize["fundRecipient"] = o.FundRecipient
	}
	toSerialize["id"] = o.Id
	if !common.IsNil(o.InstallmentOptions) {
		toSerialize["installmentOptions"] = o.InstallmentOptions
	}
	if !common.IsNil(o.LineItems) {
		toSerialize["lineItems"] = o.LineItems
	}
	if !common.IsNil(o.ManualCapture) {
		toSerialize["manualCapture"] = o.ManualCapture
	}
	if !common.IsNil(o.Mcc) {
		toSerialize["mcc"] = o.Mcc
	}
	toSerialize["merchantAccount"] = o.MerchantAccount
	if !common.IsNil(o.MerchantOrderReference) {
		toSerialize["merchantOrderReference"] = o.MerchantOrderReference
	}
	if !common.IsNil(o.Metadata) {
		toSerialize["metadata"] = o.Metadata
	}
	if !common.IsNil(o.PlatformChargebackLogic) {
		toSerialize["platformChargebackLogic"] = o.PlatformChargebackLogic
	}
	if !common.IsNil(o.RecurringProcessingModel) {
		toSerialize["recurringProcessingModel"] = o.RecurringProcessingModel
	}
	toSerialize["reference"] = o.Reference
	if !common.IsNil(o.RequiredShopperFields) {
		toSerialize["requiredShopperFields"] = o.RequiredShopperFields
	}
	if !common.IsNil(o.ReturnUrl) {
		toSerialize["returnUrl"] = o.ReturnUrl
	}
	if !common.IsNil(o.Reusable) {
		toSerialize["reusable"] = o.Reusable
	}
	if !common.IsNil(o.RiskData) {
		toSerialize["riskData"] = o.RiskData
	}
	if !common.IsNil(o.ShopperEmail) {
		toSerialize["shopperEmail"] = o.ShopperEmail
	}
	if !common.IsNil(o.ShopperLocale) {
		toSerialize["shopperLocale"] = o.ShopperLocale
	}
	if !common.IsNil(o.ShopperName) {
		toSerialize["shopperName"] = o.ShopperName
	}
	if !common.IsNil(o.ShopperReference) {
		toSerialize["shopperReference"] = o.ShopperReference
	}
	if !common.IsNil(o.ShopperStatement) {
		toSerialize["shopperStatement"] = o.ShopperStatement
	}
	if !common.IsNil(o.ShowRemovePaymentMethodButton) {
		toSerialize["showRemovePaymentMethodButton"] = o.ShowRemovePaymentMethodButton
	}
	if !common.IsNil(o.SocialSecurityNumber) {
		toSerialize["socialSecurityNumber"] = o.SocialSecurityNumber
	}
	if !common.IsNil(o.SplitCardFundingSources) {
		toSerialize["splitCardFundingSources"] = o.SplitCardFundingSources
	}
	if !common.IsNil(o.Splits) {
		toSerialize["splits"] = o.Splits
	}
	toSerialize["status"] = o.Status
	if !common.IsNil(o.Store) {
		toSerialize["store"] = o.Store
	}
	if !common.IsNil(o.StorePaymentMethodMode) {
		toSerialize["storePaymentMethodMode"] = o.StorePaymentMethodMode
	}
	if !common.IsNil(o.TelephoneNumber) {
		toSerialize["telephoneNumber"] = o.TelephoneNumber
	}
	if !common.IsNil(o.ThemeId) {
		toSerialize["themeId"] = o.ThemeId
	}
	if !common.IsNil(o.ThreeDS2RequestData) {
		toSerialize["threeDS2RequestData"] = o.ThreeDS2RequestData
	}
	if !common.IsNil(o.UpdatedAt) {
		toSerialize["updatedAt"] = o.UpdatedAt
	}
	toSerialize["url"] = o.Url
	return toSerialize, nil
}

type NullablePaymentLinkResponse struct {
	value *PaymentLinkResponse
	isSet bool
}

func (v NullablePaymentLinkResponse) Get() *PaymentLinkResponse {
	return v.value
}

func (v *NullablePaymentLinkResponse) Set(val *PaymentLinkResponse) {
	v.value = val
	v.isSet = true
}

func (v NullablePaymentLinkResponse) IsSet() bool {
	return v.isSet
}

func (v *NullablePaymentLinkResponse) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullablePaymentLinkResponse(val *PaymentLinkResponse) *NullablePaymentLinkResponse {
	return &NullablePaymentLinkResponse{value: val, isSet: true}
}

func (v NullablePaymentLinkResponse) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullablePaymentLinkResponse) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}

func (o *PaymentLinkResponse) isValidRecurringProcessingModel() bool {
	var allowedEnumValues = []string{"CardOnFile", "Subscription", "UnscheduledCardOnFile"}
	for _, allowed := range allowedEnumValues {
		if o.GetRecurringProcessingModel() == allowed {
			return true
		}
	}
	return false
}
func (o *PaymentLinkResponse) isValidStatus() bool {
	var allowedEnumValues = []string{"active", "completed", "expired", "paid", "paymentPending"}
	for _, allowed := range allowedEnumValues {
		if o.GetStatus() == allowed {
			return true
		}
	}
	return false
}
func (o *PaymentLinkResponse) isValidStorePaymentMethodMode() bool {
	var allowedEnumValues = []string{"askForConsent", "disabled", "enabled"}
	for _, allowed := range allowedEnumValues {
		if o.GetStorePaymentMethodMode() == allowed {
			return true
		}
	}
	return false
}
