/*
Adyen Payment API

API version: 68
*/

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

package payments

import (
	"encoding/json"

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

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

// ThreeDS2RequestData struct for ThreeDS2RequestData
type ThreeDS2RequestData struct {
	AcctInfo *AcctInfo `json:"acctInfo,omitempty"`
	// Indicates the type of account. For example, for a multi-account card product. Length: 2 characters. Allowed values: * **01** — Not applicable * **02** — Credit * **03** — Debit
	AcctType *string `json:"acctType,omitempty"`
	// Required for [authentication-only integration](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only). The acquiring BIN enrolled for 3D Secure 2. This string should match the value that you will use in the authorisation. Use 123456 on the Test platform.
	AcquirerBIN *string `json:"acquirerBIN,omitempty"`
	// Required for [authentication-only integration](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only). The merchantId that is enrolled for 3D Secure 2 by the merchant's acquirer. This string should match the value that you will use in the authorisation. Use 123456 on the Test platform.
	AcquirerMerchantID *string `json:"acquirerMerchantID,omitempty"`
	// Indicates whether the Cardholder Shipping Address and Cardholder Billing Address are the same. Allowed values: * **Y** — Shipping Address matches Billing Address. * **N** — Shipping Address does not match Billing Address.
	AddrMatch *string `json:"addrMatch,omitempty"`
	// If set to true, you will only perform the [3D Secure 2 authentication](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only), and not the payment authorisation.
	// Deprecated since Adyen Payment API v50
	// Use `threeDSAuthenticationOnly` instead.
	AuthenticationOnly *bool `json:"authenticationOnly,omitempty"`
	// Possibility to specify a preference for receiving a challenge from the issuer. Allowed values: * `noPreference` * `requestNoChallenge` * `requestChallenge` * `requestChallengeAsMandate`
	// Deprecated since Adyen Payment API v68
	// Use `threeDSRequestorChallengeInd` instead.
	ChallengeIndicator *string `json:"challengeIndicator,omitempty"`
	// The environment of the shopper. Allowed values: * `app` * `browser`
	DeviceChannel       string               `json:"deviceChannel"`
	DeviceRenderOptions *DeviceRenderOptions `json:"deviceRenderOptions,omitempty"`
	HomePhone           *Phone               `json:"homePhone,omitempty"`
	// Required for merchants that have been enrolled for 3D Secure 2 by another party than Adyen, mostly [authentication-only integrations](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only). The `mcc` is a four-digit code with which the previously given `acquirerMerchantID` is registered at the scheme.
	Mcc *string `json:"mcc,omitempty"`
	// Required for [authentication-only integration](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only). The merchant name that the issuer presents to the shopper if they get a challenge. We recommend to use the same value that you will use in the authorization. Maximum length is 40 characters. > Optional for a [full 3D Secure 2 integration](https://docs.adyen.com/online-payments/3d-secure/native-3ds2/api-integration). Use this field if you are enrolled for 3D Secure 2 with us and want to override the merchant name already configured on your account.
	MerchantName *string `json:"merchantName,omitempty"`
	// The `messageVersion` value indicating the 3D Secure 2 protocol version.
	MessageVersion *string `json:"messageVersion,omitempty"`
	MobilePhone    *Phone  `json:"mobilePhone,omitempty"`
	// URL to where the issuer should send the `CRes`. Required if you are not using components for `channel` **Web** or if you are using classic integration `deviceChannel` **browser**.
	NotificationURL *string `json:"notificationURL,omitempty"`
	// Value **true** indicates that the transaction was de-tokenised prior to being received by the ACS.
	PayTokenInd *bool `json:"payTokenInd,omitempty"`
	// Indicates the type of payment for which an authentication is requested (message extension)
	PaymentAuthenticationUseCase *string `json:"paymentAuthenticationUseCase,omitempty"`
	// Indicates the maximum number of authorisations permitted for instalment payments. Length: 1–3 characters.
	PurchaseInstalData *string `json:"purchaseInstalData,omitempty"`
	// Date after which no further authorisations shall be performed. Format: YYYYMMDD
	RecurringExpiry *string `json:"recurringExpiry,omitempty"`
	// Indicates the minimum number of days between authorisations. Maximum length: 4 characters.
	RecurringFrequency *string `json:"recurringFrequency,omitempty"`
	// The `sdkAppID` value as received from the 3D Secure 2 SDK. Required for `deviceChannel` set to **app**.
	SdkAppID *string `json:"sdkAppID,omitempty"`
	// The `sdkEncData` value as received from the 3D Secure 2 SDK. Required for `deviceChannel` set to **app**.
	SdkEncData     *string         `json:"sdkEncData,omitempty"`
	SdkEphemPubKey *SDKEphemPubKey `json:"sdkEphemPubKey,omitempty"`
	// The maximum amount of time in minutes for the 3D Secure 2 authentication process. Optional and only for `deviceChannel` set to **app**. Defaults to **60** minutes.
	SdkMaxTimeout *int32 `json:"sdkMaxTimeout,omitempty"`
	// The `sdkReferenceNumber` value as received from the 3D Secure 2 SDK. Only for `deviceChannel` set to **app**.
	SdkReferenceNumber *string `json:"sdkReferenceNumber,omitempty"`
	// The `sdkTransID` value as received from the 3D Secure 2 SDK. Only for `deviceChannel` set to **app**.
	SdkTransID *string `json:"sdkTransID,omitempty"`
	// Version of the 3D Secure 2 mobile SDK.  Only for `deviceChannel` set to **app**.
	SdkVersion *string `json:"sdkVersion,omitempty"`
	// Completion indicator for the device fingerprinting.
	ThreeDSCompInd *string `json:"threeDSCompInd,omitempty"`
	// Indicates the type of Authentication request.
	ThreeDSRequestorAuthenticationInd  *string                             `json:"threeDSRequestorAuthenticationInd,omitempty"`
	ThreeDSRequestorAuthenticationInfo *ThreeDSRequestorAuthenticationInfo `json:"threeDSRequestorAuthenticationInfo,omitempty"`
	// Indicates whether a challenge is requested for this transaction. Possible values: * **01** — No preference * **02** — No challenge requested * **03** — Challenge requested (3DS Requestor preference) * **04** — Challenge requested (Mandate) * **05** — No challenge (transactional risk analysis is already performed) * **06** — Data Only
	ThreeDSRequestorChallengeInd *string `json:"threeDSRequestorChallengeInd,omitempty"`
	// Required for [authentication-only integration](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only) for Visa. Unique 3D Secure requestor identifier assigned by the Directory Server when you enrol for 3D Secure 2.
	ThreeDSRequestorID *string `json:"threeDSRequestorID,omitempty"`
	// Required for [authentication-only integration](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only) for Visa. Unique 3D Secure requestor name assigned by the Directory Server when you enrol for 3D Secure 2.
	ThreeDSRequestorName                    *string                                  `json:"threeDSRequestorName,omitempty"`
	ThreeDSRequestorPriorAuthenticationInfo *ThreeDSRequestorPriorAuthenticationInfo `json:"threeDSRequestorPriorAuthenticationInfo,omitempty"`
	// URL of the (customer service) website that will be shown to the shopper in case of technical errors during the 3D Secure 2 process.
	ThreeDSRequestorURL *string `json:"threeDSRequestorURL,omitempty"`
	// Identifies the type of transaction being authenticated. Length: 2 characters. Allowed values: * **01** — Goods/Service Purchase * **03** — Check Acceptance * **10** — Account Funding * **11** — Quasi-Cash Transaction * **28** — Prepaid Activation and Load
	TransType *string `json:"transType,omitempty"`
	// Identify the type of the transaction being authenticated.
	TransactionType *string `json:"transactionType,omitempty"`
	// The `whiteListStatus` value returned from a previous 3D Secure 2 transaction, only applicable for 3D Secure 2 protocol version 2.2.0.
	WhiteListStatus *string `json:"whiteListStatus,omitempty"`
	WorkPhone       *Phone  `json:"workPhone,omitempty"`
}

// NewThreeDS2RequestData instantiates a new ThreeDS2RequestData 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 NewThreeDS2RequestData(deviceChannel string) *ThreeDS2RequestData {
	this := ThreeDS2RequestData{}
	var authenticationOnly bool = false
	this.AuthenticationOnly = &authenticationOnly
	this.DeviceChannel = deviceChannel
	var sdkMaxTimeout int32 = 60
	this.SdkMaxTimeout = &sdkMaxTimeout
	return &this
}

// NewThreeDS2RequestDataWithDefaults instantiates a new ThreeDS2RequestData 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 NewThreeDS2RequestDataWithDefaults() *ThreeDS2RequestData {
	this := ThreeDS2RequestData{}
	var authenticationOnly bool = false
	this.AuthenticationOnly = &authenticationOnly
	var sdkMaxTimeout int32 = 60
	this.SdkMaxTimeout = &sdkMaxTimeout
	return &this
}

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetAcctType gets a reference to the given string and assigns it to the AcctType field.
func (o *ThreeDS2RequestData) SetAcctType(v string) {
	o.AcctType = &v
}

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

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

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

	return false
}

// SetAcquirerBIN gets a reference to the given string and assigns it to the AcquirerBIN field.
func (o *ThreeDS2RequestData) SetAcquirerBIN(v string) {
	o.AcquirerBIN = &v
}

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

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

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

	return false
}

// SetAcquirerMerchantID gets a reference to the given string and assigns it to the AcquirerMerchantID field.
func (o *ThreeDS2RequestData) SetAcquirerMerchantID(v string) {
	o.AcquirerMerchantID = &v
}

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

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

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

	return false
}

// SetAddrMatch gets a reference to the given string and assigns it to the AddrMatch field.
func (o *ThreeDS2RequestData) SetAddrMatch(v string) {
	o.AddrMatch = &v
}

// GetAuthenticationOnly returns the AuthenticationOnly field value if set, zero value otherwise.
// Deprecated since Adyen Payment API v50
// Use `threeDSAuthenticationOnly` instead.
func (o *ThreeDS2RequestData) GetAuthenticationOnly() bool {
	if o == nil || common.IsNil(o.AuthenticationOnly) {
		var ret bool
		return ret
	}
	return *o.AuthenticationOnly
}

// GetAuthenticationOnlyOk returns a tuple with the AuthenticationOnly field value if set, nil otherwise
// and a boolean to check if the value has been set.
// Deprecated since Adyen Payment API v50
// Use `threeDSAuthenticationOnly` instead.
func (o *ThreeDS2RequestData) GetAuthenticationOnlyOk() (*bool, bool) {
	if o == nil || common.IsNil(o.AuthenticationOnly) {
		return nil, false
	}
	return o.AuthenticationOnly, true
}

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

	return false
}

// SetAuthenticationOnly gets a reference to the given bool and assigns it to the AuthenticationOnly field.
// Deprecated since Adyen Payment API v50
// Use `threeDSAuthenticationOnly` instead.
func (o *ThreeDS2RequestData) SetAuthenticationOnly(v bool) {
	o.AuthenticationOnly = &v
}

// GetChallengeIndicator returns the ChallengeIndicator field value if set, zero value otherwise.
// Deprecated since Adyen Payment API v68
// Use `threeDSRequestorChallengeInd` instead.
func (o *ThreeDS2RequestData) GetChallengeIndicator() string {
	if o == nil || common.IsNil(o.ChallengeIndicator) {
		var ret string
		return ret
	}
	return *o.ChallengeIndicator
}

// GetChallengeIndicatorOk returns a tuple with the ChallengeIndicator field value if set, nil otherwise
// and a boolean to check if the value has been set.
// Deprecated since Adyen Payment API v68
// Use `threeDSRequestorChallengeInd` instead.
func (o *ThreeDS2RequestData) GetChallengeIndicatorOk() (*string, bool) {
	if o == nil || common.IsNil(o.ChallengeIndicator) {
		return nil, false
	}
	return o.ChallengeIndicator, true
}

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

	return false
}

// SetChallengeIndicator gets a reference to the given string and assigns it to the ChallengeIndicator field.
// Deprecated since Adyen Payment API v68
// Use `threeDSRequestorChallengeInd` instead.
func (o *ThreeDS2RequestData) SetChallengeIndicator(v string) {
	o.ChallengeIndicator = &v
}

// GetDeviceChannel returns the DeviceChannel field value
func (o *ThreeDS2RequestData) GetDeviceChannel() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.DeviceChannel
}

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

// SetDeviceChannel sets field value
func (o *ThreeDS2RequestData) SetDeviceChannel(v string) {
	o.DeviceChannel = v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetHomePhone gets a reference to the given Phone and assigns it to the HomePhone field.
func (o *ThreeDS2RequestData) SetHomePhone(v Phone) {
	o.HomePhone = &v
}

// GetMcc returns the Mcc field value if set, zero value otherwise.
func (o *ThreeDS2RequestData) 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 *ThreeDS2RequestData) 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 *ThreeDS2RequestData) 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 *ThreeDS2RequestData) SetMcc(v string) {
	o.Mcc = &v
}

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

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

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

	return false
}

// SetMerchantName gets a reference to the given string and assigns it to the MerchantName field.
func (o *ThreeDS2RequestData) SetMerchantName(v string) {
	o.MerchantName = &v
}

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

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

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

	return false
}

// SetMessageVersion gets a reference to the given string and assigns it to the MessageVersion field.
func (o *ThreeDS2RequestData) SetMessageVersion(v string) {
	o.MessageVersion = &v
}

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

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

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

	return false
}

// SetMobilePhone gets a reference to the given Phone and assigns it to the MobilePhone field.
func (o *ThreeDS2RequestData) SetMobilePhone(v Phone) {
	o.MobilePhone = &v
}

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

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

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

	return false
}

// SetNotificationURL gets a reference to the given string and assigns it to the NotificationURL field.
func (o *ThreeDS2RequestData) SetNotificationURL(v string) {
	o.NotificationURL = &v
}

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

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

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

	return false
}

// SetPayTokenInd gets a reference to the given bool and assigns it to the PayTokenInd field.
func (o *ThreeDS2RequestData) SetPayTokenInd(v bool) {
	o.PayTokenInd = &v
}

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

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

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

	return false
}

// SetPaymentAuthenticationUseCase gets a reference to the given string and assigns it to the PaymentAuthenticationUseCase field.
func (o *ThreeDS2RequestData) SetPaymentAuthenticationUseCase(v string) {
	o.PaymentAuthenticationUseCase = &v
}

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

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

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

	return false
}

// SetPurchaseInstalData gets a reference to the given string and assigns it to the PurchaseInstalData field.
func (o *ThreeDS2RequestData) SetPurchaseInstalData(v string) {
	o.PurchaseInstalData = &v
}

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

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

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

	return false
}

// SetRecurringExpiry gets a reference to the given string and assigns it to the RecurringExpiry field.
func (o *ThreeDS2RequestData) SetRecurringExpiry(v string) {
	o.RecurringExpiry = &v
}

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

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

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

	return false
}

// SetRecurringFrequency gets a reference to the given string and assigns it to the RecurringFrequency field.
func (o *ThreeDS2RequestData) SetRecurringFrequency(v string) {
	o.RecurringFrequency = &v
}

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

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

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

	return false
}

// SetSdkAppID gets a reference to the given string and assigns it to the SdkAppID field.
func (o *ThreeDS2RequestData) SetSdkAppID(v string) {
	o.SdkAppID = &v
}

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

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

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

	return false
}

// SetSdkEncData gets a reference to the given string and assigns it to the SdkEncData field.
func (o *ThreeDS2RequestData) SetSdkEncData(v string) {
	o.SdkEncData = &v
}

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

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

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

	return false
}

// SetSdkEphemPubKey gets a reference to the given SDKEphemPubKey and assigns it to the SdkEphemPubKey field.
func (o *ThreeDS2RequestData) SetSdkEphemPubKey(v SDKEphemPubKey) {
	o.SdkEphemPubKey = &v
}

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

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

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

	return false
}

// SetSdkMaxTimeout gets a reference to the given int32 and assigns it to the SdkMaxTimeout field.
func (o *ThreeDS2RequestData) SetSdkMaxTimeout(v int32) {
	o.SdkMaxTimeout = &v
}

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

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

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

	return false
}

// SetSdkReferenceNumber gets a reference to the given string and assigns it to the SdkReferenceNumber field.
func (o *ThreeDS2RequestData) SetSdkReferenceNumber(v string) {
	o.SdkReferenceNumber = &v
}

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

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

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

	return false
}

// SetSdkTransID gets a reference to the given string and assigns it to the SdkTransID field.
func (o *ThreeDS2RequestData) SetSdkTransID(v string) {
	o.SdkTransID = &v
}

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

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

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

	return false
}

// SetSdkVersion gets a reference to the given string and assigns it to the SdkVersion field.
func (o *ThreeDS2RequestData) SetSdkVersion(v string) {
	o.SdkVersion = &v
}

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

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

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

	return false
}

// SetThreeDSCompInd gets a reference to the given string and assigns it to the ThreeDSCompInd field.
func (o *ThreeDS2RequestData) SetThreeDSCompInd(v string) {
	o.ThreeDSCompInd = &v
}

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

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

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

	return false
}

// SetThreeDSRequestorAuthenticationInd gets a reference to the given string and assigns it to the ThreeDSRequestorAuthenticationInd field.
func (o *ThreeDS2RequestData) SetThreeDSRequestorAuthenticationInd(v string) {
	o.ThreeDSRequestorAuthenticationInd = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetThreeDSRequestorChallengeInd gets a reference to the given string and assigns it to the ThreeDSRequestorChallengeInd field.
func (o *ThreeDS2RequestData) SetThreeDSRequestorChallengeInd(v string) {
	o.ThreeDSRequestorChallengeInd = &v
}

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

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

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

	return false
}

// SetThreeDSRequestorID gets a reference to the given string and assigns it to the ThreeDSRequestorID field.
func (o *ThreeDS2RequestData) SetThreeDSRequestorID(v string) {
	o.ThreeDSRequestorID = &v
}

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

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

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

	return false
}

// SetThreeDSRequestorName gets a reference to the given string and assigns it to the ThreeDSRequestorName field.
func (o *ThreeDS2RequestData) SetThreeDSRequestorName(v string) {
	o.ThreeDSRequestorName = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetThreeDSRequestorURL gets a reference to the given string and assigns it to the ThreeDSRequestorURL field.
func (o *ThreeDS2RequestData) SetThreeDSRequestorURL(v string) {
	o.ThreeDSRequestorURL = &v
}

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

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

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

	return false
}

// SetTransType gets a reference to the given string and assigns it to the TransType field.
func (o *ThreeDS2RequestData) SetTransType(v string) {
	o.TransType = &v
}

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

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

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

	return false
}

// SetTransactionType gets a reference to the given string and assigns it to the TransactionType field.
func (o *ThreeDS2RequestData) SetTransactionType(v string) {
	o.TransactionType = &v
}

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

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

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

	return false
}

// SetWhiteListStatus gets a reference to the given string and assigns it to the WhiteListStatus field.
func (o *ThreeDS2RequestData) SetWhiteListStatus(v string) {
	o.WhiteListStatus = &v
}

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

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

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

	return false
}

// SetWorkPhone gets a reference to the given Phone and assigns it to the WorkPhone field.
func (o *ThreeDS2RequestData) SetWorkPhone(v Phone) {
	o.WorkPhone = &v
}

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

func (o ThreeDS2RequestData) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !common.IsNil(o.AcctInfo) {
		toSerialize["acctInfo"] = o.AcctInfo
	}
	if !common.IsNil(o.AcctType) {
		toSerialize["acctType"] = o.AcctType
	}
	if !common.IsNil(o.AcquirerBIN) {
		toSerialize["acquirerBIN"] = o.AcquirerBIN
	}
	if !common.IsNil(o.AcquirerMerchantID) {
		toSerialize["acquirerMerchantID"] = o.AcquirerMerchantID
	}
	if !common.IsNil(o.AddrMatch) {
		toSerialize["addrMatch"] = o.AddrMatch
	}
	if !common.IsNil(o.AuthenticationOnly) {
		toSerialize["authenticationOnly"] = o.AuthenticationOnly
	}
	if !common.IsNil(o.ChallengeIndicator) {
		toSerialize["challengeIndicator"] = o.ChallengeIndicator
	}
	toSerialize["deviceChannel"] = o.DeviceChannel
	if !common.IsNil(o.DeviceRenderOptions) {
		toSerialize["deviceRenderOptions"] = o.DeviceRenderOptions
	}
	if !common.IsNil(o.HomePhone) {
		toSerialize["homePhone"] = o.HomePhone
	}
	if !common.IsNil(o.Mcc) {
		toSerialize["mcc"] = o.Mcc
	}
	if !common.IsNil(o.MerchantName) {
		toSerialize["merchantName"] = o.MerchantName
	}
	if !common.IsNil(o.MessageVersion) {
		toSerialize["messageVersion"] = o.MessageVersion
	}
	if !common.IsNil(o.MobilePhone) {
		toSerialize["mobilePhone"] = o.MobilePhone
	}
	if !common.IsNil(o.NotificationURL) {
		toSerialize["notificationURL"] = o.NotificationURL
	}
	if !common.IsNil(o.PayTokenInd) {
		toSerialize["payTokenInd"] = o.PayTokenInd
	}
	if !common.IsNil(o.PaymentAuthenticationUseCase) {
		toSerialize["paymentAuthenticationUseCase"] = o.PaymentAuthenticationUseCase
	}
	if !common.IsNil(o.PurchaseInstalData) {
		toSerialize["purchaseInstalData"] = o.PurchaseInstalData
	}
	if !common.IsNil(o.RecurringExpiry) {
		toSerialize["recurringExpiry"] = o.RecurringExpiry
	}
	if !common.IsNil(o.RecurringFrequency) {
		toSerialize["recurringFrequency"] = o.RecurringFrequency
	}
	if !common.IsNil(o.SdkAppID) {
		toSerialize["sdkAppID"] = o.SdkAppID
	}
	if !common.IsNil(o.SdkEncData) {
		toSerialize["sdkEncData"] = o.SdkEncData
	}
	if !common.IsNil(o.SdkEphemPubKey) {
		toSerialize["sdkEphemPubKey"] = o.SdkEphemPubKey
	}
	if !common.IsNil(o.SdkMaxTimeout) {
		toSerialize["sdkMaxTimeout"] = o.SdkMaxTimeout
	}
	if !common.IsNil(o.SdkReferenceNumber) {
		toSerialize["sdkReferenceNumber"] = o.SdkReferenceNumber
	}
	if !common.IsNil(o.SdkTransID) {
		toSerialize["sdkTransID"] = o.SdkTransID
	}
	if !common.IsNil(o.SdkVersion) {
		toSerialize["sdkVersion"] = o.SdkVersion
	}
	if !common.IsNil(o.ThreeDSCompInd) {
		toSerialize["threeDSCompInd"] = o.ThreeDSCompInd
	}
	if !common.IsNil(o.ThreeDSRequestorAuthenticationInd) {
		toSerialize["threeDSRequestorAuthenticationInd"] = o.ThreeDSRequestorAuthenticationInd
	}
	if !common.IsNil(o.ThreeDSRequestorAuthenticationInfo) {
		toSerialize["threeDSRequestorAuthenticationInfo"] = o.ThreeDSRequestorAuthenticationInfo
	}
	if !common.IsNil(o.ThreeDSRequestorChallengeInd) {
		toSerialize["threeDSRequestorChallengeInd"] = o.ThreeDSRequestorChallengeInd
	}
	if !common.IsNil(o.ThreeDSRequestorID) {
		toSerialize["threeDSRequestorID"] = o.ThreeDSRequestorID
	}
	if !common.IsNil(o.ThreeDSRequestorName) {
		toSerialize["threeDSRequestorName"] = o.ThreeDSRequestorName
	}
	if !common.IsNil(o.ThreeDSRequestorPriorAuthenticationInfo) {
		toSerialize["threeDSRequestorPriorAuthenticationInfo"] = o.ThreeDSRequestorPriorAuthenticationInfo
	}
	if !common.IsNil(o.ThreeDSRequestorURL) {
		toSerialize["threeDSRequestorURL"] = o.ThreeDSRequestorURL
	}
	if !common.IsNil(o.TransType) {
		toSerialize["transType"] = o.TransType
	}
	if !common.IsNil(o.TransactionType) {
		toSerialize["transactionType"] = o.TransactionType
	}
	if !common.IsNil(o.WhiteListStatus) {
		toSerialize["whiteListStatus"] = o.WhiteListStatus
	}
	if !common.IsNil(o.WorkPhone) {
		toSerialize["workPhone"] = o.WorkPhone
	}
	return toSerialize, nil
}

type NullableThreeDS2RequestData struct {
	value *ThreeDS2RequestData
	isSet bool
}

func (v NullableThreeDS2RequestData) Get() *ThreeDS2RequestData {
	return v.value
}

func (v *NullableThreeDS2RequestData) Set(val *ThreeDS2RequestData) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableThreeDS2RequestData(val *ThreeDS2RequestData) *NullableThreeDS2RequestData {
	return &NullableThreeDS2RequestData{value: val, isSet: true}
}

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

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

func (o *ThreeDS2RequestData) isValidAcctType() bool {
	var allowedEnumValues = []string{"01", "02", "03"}
	for _, allowed := range allowedEnumValues {
		if o.GetAcctType() == allowed {
			return true
		}
	}
	return false
}
func (o *ThreeDS2RequestData) isValidAddrMatch() bool {
	var allowedEnumValues = []string{"Y", "N"}
	for _, allowed := range allowedEnumValues {
		if o.GetAddrMatch() == allowed {
			return true
		}
	}
	return false
}
func (o *ThreeDS2RequestData) isValidChallengeIndicator() bool {
	var allowedEnumValues = []string{"noPreference", "requestNoChallenge", "requestChallenge", "requestChallengeAsMandate"}
	for _, allowed := range allowedEnumValues {
		if o.GetChallengeIndicator() == allowed {
			return true
		}
	}
	return false
}
func (o *ThreeDS2RequestData) isValidThreeDSRequestorChallengeInd() bool {
	var allowedEnumValues = []string{"01", "02", "03", "04", "05", "06"}
	for _, allowed := range allowedEnumValues {
		if o.GetThreeDSRequestorChallengeInd() == allowed {
			return true
		}
	}
	return false
}
func (o *ThreeDS2RequestData) isValidTransType() bool {
	var allowedEnumValues = []string{"01", "03", "10", "11", "28"}
	for _, allowed := range allowedEnumValues {
		if o.GetTransType() == allowed {
			return true
		}
	}
	return false
}
func (o *ThreeDS2RequestData) isValidTransactionType() bool {
	var allowedEnumValues = []string{"goodsOrServicePurchase", "checkAcceptance", "accountFunding", "quasiCashTransaction", "prepaidActivationAndLoad"}
	for _, allowed := range allowedEnumValues {
		if o.GetTransactionType() == allowed {
			return true
		}
	}
	return false
}
