/*
Management API

API version: 3
*/

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

package management

import (
	"encoding/json"

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

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

// PaymentMethod struct for PaymentMethod
type PaymentMethod struct {
	Accel         *AccelInfo         `json:"accel,omitempty"`
	Affirm        *AffirmInfo        `json:"affirm,omitempty"`
	AfterpayTouch *AfterpayTouchInfo `json:"afterpayTouch,omitempty"`
	// Indicates whether receiving payments is allowed. This value is set to **true** by Adyen after screening your merchant account.
	Allowed  *bool         `json:"allowed,omitempty"`
	Amex     *AmexInfo     `json:"amex,omitempty"`
	ApplePay *ApplePayInfo `json:"applePay,omitempty"`
	Bcmc     *BcmcInfo     `json:"bcmc,omitempty"`
	// The unique identifier of the business line. Required if you are a [platform model](https://docs.adyen.com/platforms).
	BusinessLineId  *string              `json:"businessLineId,omitempty"`
	CartesBancaires *CartesBancairesInfo `json:"cartesBancaires,omitempty"`
	Clearpay        *ClearpayInfo        `json:"clearpay,omitempty"`
	// The list of countries where a payment method is available. By default, all countries supported by the payment method.
	Countries []string              `json:"countries,omitempty"`
	Cup       *GenericPmWithTdiInfo `json:"cup,omitempty"`
	// The list of currencies that a payment method supports. By default, all currencies supported by the payment method.
	Currencies []string `json:"currencies,omitempty"`
	// The list of custom routing flags to route payment to the intended acquirer.
	CustomRoutingFlags []string              `json:"customRoutingFlags,omitempty"`
	Diners             *DinersInfo           `json:"diners,omitempty"`
	Discover           *GenericPmWithTdiInfo `json:"discover,omitempty"`
	EftDirectdebitCA   *GenericPmWithTdiInfo `json:"eft_directdebit_CA,omitempty"`
	EftposAustralia    *GenericPmWithTdiInfo `json:"eftpos_australia,omitempty"`
	// Indicates whether the payment method is enabled (**true**) or disabled (**false**).
	Enabled   *bool                 `json:"enabled,omitempty"`
	Girocard  *GenericPmWithTdiInfo `json:"girocard,omitempty"`
	GooglePay *GooglePayInfo        `json:"googlePay,omitempty"`
	// The identifier of the resource.
	Id             string                `json:"id"`
	Ideal          *GenericPmWithTdiInfo `json:"ideal,omitempty"`
	InteracCard    *GenericPmWithTdiInfo `json:"interac_card,omitempty"`
	Jcb            *JCBInfo              `json:"jcb,omitempty"`
	Klarna         *KlarnaInfo           `json:"klarna,omitempty"`
	Maestro        *GenericPmWithTdiInfo `json:"maestro,omitempty"`
	Mc             *GenericPmWithTdiInfo `json:"mc,omitempty"`
	MealVoucherFR  *MealVoucherFRInfo    `json:"mealVoucher_FR,omitempty"`
	Nyce           *NyceInfo             `json:"nyce,omitempty"`
	PaybybankPlaid *PayByBankPlaidInfo   `json:"paybybank_plaid,omitempty"`
	Payme          *PayMeInfo            `json:"payme,omitempty"`
	Paypal         *PayPalInfo           `json:"paypal,omitempty"`
	Payto          *PayToInfo            `json:"payto,omitempty"`
	Pulse          *PulseInfo            `json:"pulse,omitempty"`
	// Your reference for the payment method. Supported characters a-z, A-Z, 0-9.
	Reference *string `json:"reference,omitempty"`
	// The sales channel.
	ShopperInteraction *string     `json:"shopperInteraction,omitempty"`
	Sodexo             *SodexoInfo `json:"sodexo,omitempty"`
	Sofort             *SofortInfo `json:"sofort,omitempty"`
	Star               *StarInfo   `json:"star,omitempty"`
	// The unique identifier of the store for which to configure the payment method, if any.
	StoreIds []string    `json:"storeIds,omitempty"`
	Swish    *SwishInfo  `json:"swish,omitempty"`
	Ticket   *TicketInfo `json:"ticket,omitempty"`
	Twint    *TwintInfo  `json:"twint,omitempty"`
	// Payment method [variant](https://docs.adyen.com/development-resources/paymentmethodvariant#management-api).
	Type *string `json:"type,omitempty"`
	// Payment method status. Possible values: * **valid** * **pending** * **invalid** * **rejected**
	VerificationStatus *string               `json:"verificationStatus,omitempty"`
	Vipps              *VippsInfo            `json:"vipps,omitempty"`
	Visa               *GenericPmWithTdiInfo `json:"visa,omitempty"`
	Wechatpay          *WeChatPayInfo        `json:"wechatpay,omitempty"`
	WechatpayPos       *WeChatPayPosInfo     `json:"wechatpay_pos,omitempty"`
}

// NewPaymentMethod instantiates a new PaymentMethod 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 NewPaymentMethod(id string) *PaymentMethod {
	this := PaymentMethod{}
	this.Id = id
	return &this
}

// NewPaymentMethodWithDefaults instantiates a new PaymentMethod 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 NewPaymentMethodWithDefaults() *PaymentMethod {
	this := PaymentMethod{}
	return &this
}

// GetAccel returns the Accel field value if set, zero value otherwise.
func (o *PaymentMethod) GetAccel() AccelInfo {
	if o == nil || common.IsNil(o.Accel) {
		var ret AccelInfo
		return ret
	}
	return *o.Accel
}

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

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

	return false
}

// SetAccel gets a reference to the given AccelInfo and assigns it to the Accel field.
func (o *PaymentMethod) SetAccel(v AccelInfo) {
	o.Accel = &v
}

// GetAffirm returns the Affirm field value if set, zero value otherwise.
func (o *PaymentMethod) GetAffirm() AffirmInfo {
	if o == nil || common.IsNil(o.Affirm) {
		var ret AffirmInfo
		return ret
	}
	return *o.Affirm
}

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

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

	return false
}

// SetAffirm gets a reference to the given AffirmInfo and assigns it to the Affirm field.
func (o *PaymentMethod) SetAffirm(v AffirmInfo) {
	o.Affirm = &v
}

// GetAfterpayTouch returns the AfterpayTouch field value if set, zero value otherwise.
func (o *PaymentMethod) GetAfterpayTouch() AfterpayTouchInfo {
	if o == nil || common.IsNil(o.AfterpayTouch) {
		var ret AfterpayTouchInfo
		return ret
	}
	return *o.AfterpayTouch
}

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

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

	return false
}

// SetAfterpayTouch gets a reference to the given AfterpayTouchInfo and assigns it to the AfterpayTouch field.
func (o *PaymentMethod) SetAfterpayTouch(v AfterpayTouchInfo) {
	o.AfterpayTouch = &v
}

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

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

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

	return false
}

// SetAllowed gets a reference to the given bool and assigns it to the Allowed field.
func (o *PaymentMethod) SetAllowed(v bool) {
	o.Allowed = &v
}

// GetAmex returns the Amex field value if set, zero value otherwise.
func (o *PaymentMethod) GetAmex() AmexInfo {
	if o == nil || common.IsNil(o.Amex) {
		var ret AmexInfo
		return ret
	}
	return *o.Amex
}

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

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

	return false
}

// SetAmex gets a reference to the given AmexInfo and assigns it to the Amex field.
func (o *PaymentMethod) SetAmex(v AmexInfo) {
	o.Amex = &v
}

// GetApplePay returns the ApplePay field value if set, zero value otherwise.
func (o *PaymentMethod) GetApplePay() ApplePayInfo {
	if o == nil || common.IsNil(o.ApplePay) {
		var ret ApplePayInfo
		return ret
	}
	return *o.ApplePay
}

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

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

	return false
}

// SetApplePay gets a reference to the given ApplePayInfo and assigns it to the ApplePay field.
func (o *PaymentMethod) SetApplePay(v ApplePayInfo) {
	o.ApplePay = &v
}

// GetBcmc returns the Bcmc field value if set, zero value otherwise.
func (o *PaymentMethod) GetBcmc() BcmcInfo {
	if o == nil || common.IsNil(o.Bcmc) {
		var ret BcmcInfo
		return ret
	}
	return *o.Bcmc
}

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

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

	return false
}

// SetBcmc gets a reference to the given BcmcInfo and assigns it to the Bcmc field.
func (o *PaymentMethod) SetBcmc(v BcmcInfo) {
	o.Bcmc = &v
}

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

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

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

	return false
}

// SetBusinessLineId gets a reference to the given string and assigns it to the BusinessLineId field.
func (o *PaymentMethod) SetBusinessLineId(v string) {
	o.BusinessLineId = &v
}

// GetCartesBancaires returns the CartesBancaires field value if set, zero value otherwise.
func (o *PaymentMethod) GetCartesBancaires() CartesBancairesInfo {
	if o == nil || common.IsNil(o.CartesBancaires) {
		var ret CartesBancairesInfo
		return ret
	}
	return *o.CartesBancaires
}

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

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

	return false
}

// SetCartesBancaires gets a reference to the given CartesBancairesInfo and assigns it to the CartesBancaires field.
func (o *PaymentMethod) SetCartesBancaires(v CartesBancairesInfo) {
	o.CartesBancaires = &v
}

// GetClearpay returns the Clearpay field value if set, zero value otherwise.
func (o *PaymentMethod) GetClearpay() ClearpayInfo {
	if o == nil || common.IsNil(o.Clearpay) {
		var ret ClearpayInfo
		return ret
	}
	return *o.Clearpay
}

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

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

	return false
}

// SetClearpay gets a reference to the given ClearpayInfo and assigns it to the Clearpay field.
func (o *PaymentMethod) SetClearpay(v ClearpayInfo) {
	o.Clearpay = &v
}

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

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

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

	return false
}

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

// GetCup returns the Cup field value if set, zero value otherwise.
func (o *PaymentMethod) GetCup() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.Cup) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.Cup
}

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

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

	return false
}

// SetCup gets a reference to the given GenericPmWithTdiInfo and assigns it to the Cup field.
func (o *PaymentMethod) SetCup(v GenericPmWithTdiInfo) {
	o.Cup = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

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

// GetDiners returns the Diners field value if set, zero value otherwise.
func (o *PaymentMethod) GetDiners() DinersInfo {
	if o == nil || common.IsNil(o.Diners) {
		var ret DinersInfo
		return ret
	}
	return *o.Diners
}

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

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

	return false
}

// SetDiners gets a reference to the given DinersInfo and assigns it to the Diners field.
func (o *PaymentMethod) SetDiners(v DinersInfo) {
	o.Diners = &v
}

// GetDiscover returns the Discover field value if set, zero value otherwise.
func (o *PaymentMethod) GetDiscover() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.Discover) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.Discover
}

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

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

	return false
}

// SetDiscover gets a reference to the given GenericPmWithTdiInfo and assigns it to the Discover field.
func (o *PaymentMethod) SetDiscover(v GenericPmWithTdiInfo) {
	o.Discover = &v
}

// GetEftDirectdebitCA returns the EftDirectdebitCA field value if set, zero value otherwise.
func (o *PaymentMethod) GetEftDirectdebitCA() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.EftDirectdebitCA) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.EftDirectdebitCA
}

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

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

	return false
}

// SetEftDirectdebitCA gets a reference to the given GenericPmWithTdiInfo and assigns it to the EftDirectdebitCA field.
func (o *PaymentMethod) SetEftDirectdebitCA(v GenericPmWithTdiInfo) {
	o.EftDirectdebitCA = &v
}

// GetEftposAustralia returns the EftposAustralia field value if set, zero value otherwise.
func (o *PaymentMethod) GetEftposAustralia() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.EftposAustralia) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.EftposAustralia
}

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

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

	return false
}

// SetEftposAustralia gets a reference to the given GenericPmWithTdiInfo and assigns it to the EftposAustralia field.
func (o *PaymentMethod) SetEftposAustralia(v GenericPmWithTdiInfo) {
	o.EftposAustralia = &v
}

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

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

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

	return false
}

// SetEnabled gets a reference to the given bool and assigns it to the Enabled field.
func (o *PaymentMethod) SetEnabled(v bool) {
	o.Enabled = &v
}

// GetGirocard returns the Girocard field value if set, zero value otherwise.
func (o *PaymentMethod) GetGirocard() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.Girocard) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.Girocard
}

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

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

	return false
}

// SetGirocard gets a reference to the given GenericPmWithTdiInfo and assigns it to the Girocard field.
func (o *PaymentMethod) SetGirocard(v GenericPmWithTdiInfo) {
	o.Girocard = &v
}

// GetGooglePay returns the GooglePay field value if set, zero value otherwise.
func (o *PaymentMethod) GetGooglePay() GooglePayInfo {
	if o == nil || common.IsNil(o.GooglePay) {
		var ret GooglePayInfo
		return ret
	}
	return *o.GooglePay
}

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

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

	return false
}

// SetGooglePay gets a reference to the given GooglePayInfo and assigns it to the GooglePay field.
func (o *PaymentMethod) SetGooglePay(v GooglePayInfo) {
	o.GooglePay = &v
}

// GetId returns the Id field value
func (o *PaymentMethod) 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 *PaymentMethod) GetIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Id, true
}

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

// GetIdeal returns the Ideal field value if set, zero value otherwise.
func (o *PaymentMethod) GetIdeal() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.Ideal) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.Ideal
}

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

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

	return false
}

// SetIdeal gets a reference to the given GenericPmWithTdiInfo and assigns it to the Ideal field.
func (o *PaymentMethod) SetIdeal(v GenericPmWithTdiInfo) {
	o.Ideal = &v
}

// GetInteracCard returns the InteracCard field value if set, zero value otherwise.
func (o *PaymentMethod) GetInteracCard() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.InteracCard) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.InteracCard
}

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

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

	return false
}

// SetInteracCard gets a reference to the given GenericPmWithTdiInfo and assigns it to the InteracCard field.
func (o *PaymentMethod) SetInteracCard(v GenericPmWithTdiInfo) {
	o.InteracCard = &v
}

// GetJcb returns the Jcb field value if set, zero value otherwise.
func (o *PaymentMethod) GetJcb() JCBInfo {
	if o == nil || common.IsNil(o.Jcb) {
		var ret JCBInfo
		return ret
	}
	return *o.Jcb
}

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

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

	return false
}

// SetJcb gets a reference to the given JCBInfo and assigns it to the Jcb field.
func (o *PaymentMethod) SetJcb(v JCBInfo) {
	o.Jcb = &v
}

// GetKlarna returns the Klarna field value if set, zero value otherwise.
func (o *PaymentMethod) GetKlarna() KlarnaInfo {
	if o == nil || common.IsNil(o.Klarna) {
		var ret KlarnaInfo
		return ret
	}
	return *o.Klarna
}

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

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

	return false
}

// SetKlarna gets a reference to the given KlarnaInfo and assigns it to the Klarna field.
func (o *PaymentMethod) SetKlarna(v KlarnaInfo) {
	o.Klarna = &v
}

// GetMaestro returns the Maestro field value if set, zero value otherwise.
func (o *PaymentMethod) GetMaestro() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.Maestro) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.Maestro
}

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

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

	return false
}

// SetMaestro gets a reference to the given GenericPmWithTdiInfo and assigns it to the Maestro field.
func (o *PaymentMethod) SetMaestro(v GenericPmWithTdiInfo) {
	o.Maestro = &v
}

// GetMc returns the Mc field value if set, zero value otherwise.
func (o *PaymentMethod) GetMc() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.Mc) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.Mc
}

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

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

	return false
}

// SetMc gets a reference to the given GenericPmWithTdiInfo and assigns it to the Mc field.
func (o *PaymentMethod) SetMc(v GenericPmWithTdiInfo) {
	o.Mc = &v
}

// GetMealVoucherFR returns the MealVoucherFR field value if set, zero value otherwise.
func (o *PaymentMethod) GetMealVoucherFR() MealVoucherFRInfo {
	if o == nil || common.IsNil(o.MealVoucherFR) {
		var ret MealVoucherFRInfo
		return ret
	}
	return *o.MealVoucherFR
}

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

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

	return false
}

// SetMealVoucherFR gets a reference to the given MealVoucherFRInfo and assigns it to the MealVoucherFR field.
func (o *PaymentMethod) SetMealVoucherFR(v MealVoucherFRInfo) {
	o.MealVoucherFR = &v
}

// GetNyce returns the Nyce field value if set, zero value otherwise.
func (o *PaymentMethod) GetNyce() NyceInfo {
	if o == nil || common.IsNil(o.Nyce) {
		var ret NyceInfo
		return ret
	}
	return *o.Nyce
}

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

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

	return false
}

// SetNyce gets a reference to the given NyceInfo and assigns it to the Nyce field.
func (o *PaymentMethod) SetNyce(v NyceInfo) {
	o.Nyce = &v
}

// GetPaybybankPlaid returns the PaybybankPlaid field value if set, zero value otherwise.
func (o *PaymentMethod) GetPaybybankPlaid() PayByBankPlaidInfo {
	if o == nil || common.IsNil(o.PaybybankPlaid) {
		var ret PayByBankPlaidInfo
		return ret
	}
	return *o.PaybybankPlaid
}

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

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

	return false
}

// SetPaybybankPlaid gets a reference to the given PayByBankPlaidInfo and assigns it to the PaybybankPlaid field.
func (o *PaymentMethod) SetPaybybankPlaid(v PayByBankPlaidInfo) {
	o.PaybybankPlaid = &v
}

// GetPayme returns the Payme field value if set, zero value otherwise.
func (o *PaymentMethod) GetPayme() PayMeInfo {
	if o == nil || common.IsNil(o.Payme) {
		var ret PayMeInfo
		return ret
	}
	return *o.Payme
}

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

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

	return false
}

// SetPayme gets a reference to the given PayMeInfo and assigns it to the Payme field.
func (o *PaymentMethod) SetPayme(v PayMeInfo) {
	o.Payme = &v
}

// GetPaypal returns the Paypal field value if set, zero value otherwise.
func (o *PaymentMethod) GetPaypal() PayPalInfo {
	if o == nil || common.IsNil(o.Paypal) {
		var ret PayPalInfo
		return ret
	}
	return *o.Paypal
}

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

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

	return false
}

// SetPaypal gets a reference to the given PayPalInfo and assigns it to the Paypal field.
func (o *PaymentMethod) SetPaypal(v PayPalInfo) {
	o.Paypal = &v
}

// GetPayto returns the Payto field value if set, zero value otherwise.
func (o *PaymentMethod) GetPayto() PayToInfo {
	if o == nil || common.IsNil(o.Payto) {
		var ret PayToInfo
		return ret
	}
	return *o.Payto
}

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

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

	return false
}

// SetPayto gets a reference to the given PayToInfo and assigns it to the Payto field.
func (o *PaymentMethod) SetPayto(v PayToInfo) {
	o.Payto = &v
}

// GetPulse returns the Pulse field value if set, zero value otherwise.
func (o *PaymentMethod) GetPulse() PulseInfo {
	if o == nil || common.IsNil(o.Pulse) {
		var ret PulseInfo
		return ret
	}
	return *o.Pulse
}

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

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

	return false
}

// SetPulse gets a reference to the given PulseInfo and assigns it to the Pulse field.
func (o *PaymentMethod) SetPulse(v PulseInfo) {
	o.Pulse = &v
}

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

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

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

	return false
}

// SetReference gets a reference to the given string and assigns it to the Reference field.
func (o *PaymentMethod) SetReference(v string) {
	o.Reference = &v
}

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

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

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

	return false
}

// SetShopperInteraction gets a reference to the given string and assigns it to the ShopperInteraction field.
func (o *PaymentMethod) SetShopperInteraction(v string) {
	o.ShopperInteraction = &v
}

// GetSodexo returns the Sodexo field value if set, zero value otherwise.
func (o *PaymentMethod) GetSodexo() SodexoInfo {
	if o == nil || common.IsNil(o.Sodexo) {
		var ret SodexoInfo
		return ret
	}
	return *o.Sodexo
}

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

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

	return false
}

// SetSodexo gets a reference to the given SodexoInfo and assigns it to the Sodexo field.
func (o *PaymentMethod) SetSodexo(v SodexoInfo) {
	o.Sodexo = &v
}

// GetSofort returns the Sofort field value if set, zero value otherwise.
func (o *PaymentMethod) GetSofort() SofortInfo {
	if o == nil || common.IsNil(o.Sofort) {
		var ret SofortInfo
		return ret
	}
	return *o.Sofort
}

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

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

	return false
}

// SetSofort gets a reference to the given SofortInfo and assigns it to the Sofort field.
func (o *PaymentMethod) SetSofort(v SofortInfo) {
	o.Sofort = &v
}

// GetStar returns the Star field value if set, zero value otherwise.
func (o *PaymentMethod) GetStar() StarInfo {
	if o == nil || common.IsNil(o.Star) {
		var ret StarInfo
		return ret
	}
	return *o.Star
}

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

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

	return false
}

// SetStar gets a reference to the given StarInfo and assigns it to the Star field.
func (o *PaymentMethod) SetStar(v StarInfo) {
	o.Star = &v
}

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

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

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

	return false
}

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

// GetSwish returns the Swish field value if set, zero value otherwise.
func (o *PaymentMethod) GetSwish() SwishInfo {
	if o == nil || common.IsNil(o.Swish) {
		var ret SwishInfo
		return ret
	}
	return *o.Swish
}

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

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

	return false
}

// SetSwish gets a reference to the given SwishInfo and assigns it to the Swish field.
func (o *PaymentMethod) SetSwish(v SwishInfo) {
	o.Swish = &v
}

// GetTicket returns the Ticket field value if set, zero value otherwise.
func (o *PaymentMethod) GetTicket() TicketInfo {
	if o == nil || common.IsNil(o.Ticket) {
		var ret TicketInfo
		return ret
	}
	return *o.Ticket
}

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

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

	return false
}

// SetTicket gets a reference to the given TicketInfo and assigns it to the Ticket field.
func (o *PaymentMethod) SetTicket(v TicketInfo) {
	o.Ticket = &v
}

// GetTwint returns the Twint field value if set, zero value otherwise.
func (o *PaymentMethod) GetTwint() TwintInfo {
	if o == nil || common.IsNil(o.Twint) {
		var ret TwintInfo
		return ret
	}
	return *o.Twint
}

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

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

	return false
}

// SetTwint gets a reference to the given TwintInfo and assigns it to the Twint field.
func (o *PaymentMethod) SetTwint(v TwintInfo) {
	o.Twint = &v
}

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

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

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

	return false
}

// SetType gets a reference to the given string and assigns it to the Type field.
func (o *PaymentMethod) SetType(v string) {
	o.Type = &v
}

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

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

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

	return false
}

// SetVerificationStatus gets a reference to the given string and assigns it to the VerificationStatus field.
func (o *PaymentMethod) SetVerificationStatus(v string) {
	o.VerificationStatus = &v
}

// GetVipps returns the Vipps field value if set, zero value otherwise.
func (o *PaymentMethod) GetVipps() VippsInfo {
	if o == nil || common.IsNil(o.Vipps) {
		var ret VippsInfo
		return ret
	}
	return *o.Vipps
}

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

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

	return false
}

// SetVipps gets a reference to the given VippsInfo and assigns it to the Vipps field.
func (o *PaymentMethod) SetVipps(v VippsInfo) {
	o.Vipps = &v
}

// GetVisa returns the Visa field value if set, zero value otherwise.
func (o *PaymentMethod) GetVisa() GenericPmWithTdiInfo {
	if o == nil || common.IsNil(o.Visa) {
		var ret GenericPmWithTdiInfo
		return ret
	}
	return *o.Visa
}

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

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

	return false
}

// SetVisa gets a reference to the given GenericPmWithTdiInfo and assigns it to the Visa field.
func (o *PaymentMethod) SetVisa(v GenericPmWithTdiInfo) {
	o.Visa = &v
}

// GetWechatpay returns the Wechatpay field value if set, zero value otherwise.
func (o *PaymentMethod) GetWechatpay() WeChatPayInfo {
	if o == nil || common.IsNil(o.Wechatpay) {
		var ret WeChatPayInfo
		return ret
	}
	return *o.Wechatpay
}

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

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

	return false
}

// SetWechatpay gets a reference to the given WeChatPayInfo and assigns it to the Wechatpay field.
func (o *PaymentMethod) SetWechatpay(v WeChatPayInfo) {
	o.Wechatpay = &v
}

// GetWechatpayPos returns the WechatpayPos field value if set, zero value otherwise.
func (o *PaymentMethod) GetWechatpayPos() WeChatPayPosInfo {
	if o == nil || common.IsNil(o.WechatpayPos) {
		var ret WeChatPayPosInfo
		return ret
	}
	return *o.WechatpayPos
}

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

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

	return false
}

// SetWechatpayPos gets a reference to the given WeChatPayPosInfo and assigns it to the WechatpayPos field.
func (o *PaymentMethod) SetWechatpayPos(v WeChatPayPosInfo) {
	o.WechatpayPos = &v
}

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

func (o PaymentMethod) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !common.IsNil(o.Accel) {
		toSerialize["accel"] = o.Accel
	}
	if !common.IsNil(o.Affirm) {
		toSerialize["affirm"] = o.Affirm
	}
	if !common.IsNil(o.AfterpayTouch) {
		toSerialize["afterpayTouch"] = o.AfterpayTouch
	}
	if !common.IsNil(o.Allowed) {
		toSerialize["allowed"] = o.Allowed
	}
	if !common.IsNil(o.Amex) {
		toSerialize["amex"] = o.Amex
	}
	if !common.IsNil(o.ApplePay) {
		toSerialize["applePay"] = o.ApplePay
	}
	if !common.IsNil(o.Bcmc) {
		toSerialize["bcmc"] = o.Bcmc
	}
	if !common.IsNil(o.BusinessLineId) {
		toSerialize["businessLineId"] = o.BusinessLineId
	}
	if !common.IsNil(o.CartesBancaires) {
		toSerialize["cartesBancaires"] = o.CartesBancaires
	}
	if !common.IsNil(o.Clearpay) {
		toSerialize["clearpay"] = o.Clearpay
	}
	if !common.IsNil(o.Countries) {
		toSerialize["countries"] = o.Countries
	}
	if !common.IsNil(o.Cup) {
		toSerialize["cup"] = o.Cup
	}
	if !common.IsNil(o.Currencies) {
		toSerialize["currencies"] = o.Currencies
	}
	if !common.IsNil(o.CustomRoutingFlags) {
		toSerialize["customRoutingFlags"] = o.CustomRoutingFlags
	}
	if !common.IsNil(o.Diners) {
		toSerialize["diners"] = o.Diners
	}
	if !common.IsNil(o.Discover) {
		toSerialize["discover"] = o.Discover
	}
	if !common.IsNil(o.EftDirectdebitCA) {
		toSerialize["eft_directdebit_CA"] = o.EftDirectdebitCA
	}
	if !common.IsNil(o.EftposAustralia) {
		toSerialize["eftpos_australia"] = o.EftposAustralia
	}
	if !common.IsNil(o.Enabled) {
		toSerialize["enabled"] = o.Enabled
	}
	if !common.IsNil(o.Girocard) {
		toSerialize["girocard"] = o.Girocard
	}
	if !common.IsNil(o.GooglePay) {
		toSerialize["googlePay"] = o.GooglePay
	}
	toSerialize["id"] = o.Id
	if !common.IsNil(o.Ideal) {
		toSerialize["ideal"] = o.Ideal
	}
	if !common.IsNil(o.InteracCard) {
		toSerialize["interac_card"] = o.InteracCard
	}
	if !common.IsNil(o.Jcb) {
		toSerialize["jcb"] = o.Jcb
	}
	if !common.IsNil(o.Klarna) {
		toSerialize["klarna"] = o.Klarna
	}
	if !common.IsNil(o.Maestro) {
		toSerialize["maestro"] = o.Maestro
	}
	if !common.IsNil(o.Mc) {
		toSerialize["mc"] = o.Mc
	}
	if !common.IsNil(o.MealVoucherFR) {
		toSerialize["mealVoucher_FR"] = o.MealVoucherFR
	}
	if !common.IsNil(o.Nyce) {
		toSerialize["nyce"] = o.Nyce
	}
	if !common.IsNil(o.PaybybankPlaid) {
		toSerialize["paybybank_plaid"] = o.PaybybankPlaid
	}
	if !common.IsNil(o.Payme) {
		toSerialize["payme"] = o.Payme
	}
	if !common.IsNil(o.Paypal) {
		toSerialize["paypal"] = o.Paypal
	}
	if !common.IsNil(o.Payto) {
		toSerialize["payto"] = o.Payto
	}
	if !common.IsNil(o.Pulse) {
		toSerialize["pulse"] = o.Pulse
	}
	if !common.IsNil(o.Reference) {
		toSerialize["reference"] = o.Reference
	}
	if !common.IsNil(o.ShopperInteraction) {
		toSerialize["shopperInteraction"] = o.ShopperInteraction
	}
	if !common.IsNil(o.Sodexo) {
		toSerialize["sodexo"] = o.Sodexo
	}
	if !common.IsNil(o.Sofort) {
		toSerialize["sofort"] = o.Sofort
	}
	if !common.IsNil(o.Star) {
		toSerialize["star"] = o.Star
	}
	if !common.IsNil(o.StoreIds) {
		toSerialize["storeIds"] = o.StoreIds
	}
	if !common.IsNil(o.Swish) {
		toSerialize["swish"] = o.Swish
	}
	if !common.IsNil(o.Ticket) {
		toSerialize["ticket"] = o.Ticket
	}
	if !common.IsNil(o.Twint) {
		toSerialize["twint"] = o.Twint
	}
	if !common.IsNil(o.Type) {
		toSerialize["type"] = o.Type
	}
	if !common.IsNil(o.VerificationStatus) {
		toSerialize["verificationStatus"] = o.VerificationStatus
	}
	if !common.IsNil(o.Vipps) {
		toSerialize["vipps"] = o.Vipps
	}
	if !common.IsNil(o.Visa) {
		toSerialize["visa"] = o.Visa
	}
	if !common.IsNil(o.Wechatpay) {
		toSerialize["wechatpay"] = o.Wechatpay
	}
	if !common.IsNil(o.WechatpayPos) {
		toSerialize["wechatpay_pos"] = o.WechatpayPos
	}
	return toSerialize, nil
}

type NullablePaymentMethod struct {
	value *PaymentMethod
	isSet bool
}

func (v NullablePaymentMethod) Get() *PaymentMethod {
	return v.value
}

func (v *NullablePaymentMethod) Set(val *PaymentMethod) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullablePaymentMethod(val *PaymentMethod) *NullablePaymentMethod {
	return &NullablePaymentMethod{value: val, isSet: true}
}

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

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

func (o *PaymentMethod) isValidVerificationStatus() bool {
	var allowedEnumValues = []string{"valid", "pending", "invalid", "rejected"}
	for _, allowed := range allowedEnumValues {
		if o.GetVerificationStatus() == allowed {
			return true
		}
	}
	return false
}
