/*
Adyen Payment API

API version: 68
*/

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

package payments

import (
	"encoding/json"
	"time"

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

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

// PaymentRequest3d struct for PaymentRequest3d
type PaymentRequest3d struct {
	AccountInfo      *AccountInfo `json:"accountInfo,omitempty"`
	AdditionalAmount *Amount      `json:"additionalAmount,omitempty"`
	// This field contains additional data, which may be required for a particular payment request.  The `additionalData` object consists of entries, each of which includes the key and value.
	AdditionalData  *map[string]string `json:"additionalData,omitempty"`
	Amount          *Amount            `json:"amount,omitempty"`
	ApplicationInfo *ApplicationInfo   `json:"applicationInfo,omitempty"`
	BillingAddress  *Address           `json:"billingAddress,omitempty"`
	BrowserInfo     *BrowserInfo       `json:"browserInfo,omitempty"`
	// The delay between the authorisation and scheduled auto-capture, specified in hours.
	CaptureDelayHours *int32 `json:"captureDelayHours,omitempty"`
	// The shopper's date of birth.  Format [ISO-8601](https://www.w3.org/TR/NOTE-datetime): YYYY-MM-DD
	DateOfBirth     *string     `json:"dateOfBirth,omitempty"`
	DccQuote        *ForexQuote `json:"dccQuote,omitempty"`
	DeliveryAddress *Address    `json:"deliveryAddress,omitempty"`
	// The date and time the purchased goods should be delivered.  Format [ISO 8601](https://www.w3.org/TR/NOTE-datetime): YYYY-MM-DDThh:mm:ss.sssTZD  Example: 2017-07-17T13:42:40.428+01:00
	DeliveryDate *time.Time `json:"deliveryDate,omitempty"`
	// A string containing the shopper's device fingerprint. For more information, refer to [Device fingerprinting](https://docs.adyen.com/risk-management/device-fingerprinting).
	DeviceFingerprint *string `json:"deviceFingerprint,omitempty"`
	// An integer value that is added to the normal fraud score. The value can be either positive or negative.
	FraudOffset  *int32        `json:"fraudOffset,omitempty"`
	Installments *Installments `json:"installments,omitempty"`
	// The `localizedShopperStatement` field lets you use dynamic values for your shopper statement in a local character set. If not supplied, left empty, or for cross-border transactions, **shopperStatement** is used.  Adyen currently supports the ja-Kana and ja-Hani character set for Visa, Mastercard and JCB payments in Japan using Japanese cards. This character set supports:  * UTF-8 based Katakana, Kanji, capital letters, numbers and special characters.  * Half-width or full-width characters.
	LocalizedShopperStatement *map[string]string `json:"localizedShopperStatement,omitempty"`
	// The [merchant category code](https://en.wikipedia.org/wiki/Merchant_category_code) (MCC) is a four-digit number, which relates to a particular market segment. This code reflects the predominant activity that is conducted by the merchant.
	Mcc *string `json:"mcc,omitempty"`
	// The payment session identifier returned by the card issuer.
	Md string `json:"md"`
	// The merchant account identifier, with which you want to process the transaction.
	MerchantAccount string `json:"merchantAccount"`
	// This reference allows linking multiple transactions to each other for reporting purposes (i.e. order auth-rate). The reference should be unique per billing cycle. The same merchant order reference should never be reused after the first authorised attempt. If used, this field should be supplied for all incoming authorisations. > We strongly recommend you send the `merchantOrderReference` value to benefit from linking payment requests when authorisation retries take place. In addition, we recommend you provide `retry.orderAttemptNumber`, `retry.chainAttemptNumber`, and `retry.skipRetry` values in `PaymentRequest.additionalData`.
	MerchantOrderReference *string                `json:"merchantOrderReference,omitempty"`
	MerchantRiskIndicator  *MerchantRiskIndicator `json:"merchantRiskIndicator,omitempty"`
	// Metadata consists of entries, each of which includes a key and a value. Limits: * Maximum 20 key-value pairs per request. When exceeding, the \"177\" error occurs: \"Metadata size exceeds limit\". * Maximum 20 characters per key. * Maximum 80 characters per value.
	Metadata *map[string]string `json:"metadata,omitempty"`
	// When you are doing multiple partial (gift card) payments, this is the `pspReference` of the first payment. We use this to link the multiple payments to each other. As your own reference for linking multiple payments, use the `merchantOrderReference`instead.
	OrderReference *string `json:"orderReference,omitempty"`
	// Payment authorisation response returned by the card issuer. The `paResponse` field holds the PaRes value received from the card issuer.
	PaResponse string     `json:"paResponse"`
	Recurring  *Recurring `json:"recurring,omitempty"`
	// Defines a recurring payment type. Required when creating a token to store payment details or using stored payment details. Allowed values: * `Subscription` – A transaction for a fixed or variable amount, which follows a fixed schedule. * `CardOnFile` – With a card-on-file (CoF) transaction, card details are stored to enable one-click or omnichannel journeys, or simply to streamline the checkout process. Any subscription not following a fixed schedule is also considered a card-on-file transaction. * `UnscheduledCardOnFile` – An unscheduled card-on-file (UCoF) transaction is a transaction that occurs on a non-fixed schedule and/or have variable amounts. For example, automatic top-ups when a cardholder's balance drops below a certain amount.
	RecurringProcessingModel *string `json:"recurringProcessingModel,omitempty"`
	// The reference to uniquely identify a payment. This reference is used in all communication with you about the payment status. We recommend using a unique value per payment; however, it is not a requirement. If you need to provide multiple references for a transaction, separate them with hyphens (\"-\"). Maximum length: 80 characters.
	Reference *string `json:"reference,omitempty"`
	// Some payment methods require defining a value for this field to specify how to process the transaction.  For the Bancontact payment method, it can be set to: * `maestro` (default), to be processed like a Maestro card, or * `bcmc`, to be processed like a Bancontact card.
	SelectedBrand *string `json:"selectedBrand,omitempty"`
	// The `recurringDetailReference` you want to use for this payment. The value `LATEST` can be used to select the most recently stored recurring detail.
	SelectedRecurringDetailReference *string `json:"selectedRecurringDetailReference,omitempty"`
	// A session ID used to identify a payment session.
	SessionId *string `json:"sessionId,omitempty"`
	// The shopper's email address. We recommend that you provide this data, as it is used in velocity fraud checks. > For 3D Secure 2 transactions, schemes require `shopperEmail` for all browser-based and mobile implementations.
	ShopperEmail *string `json:"shopperEmail,omitempty"`
	// The shopper's IP address. In general, we recommend that you provide this data, as it is used in a number of risk checks (for instance, number of payment attempts or location-based checks). > For 3D Secure 2 transactions, schemes require `shopperIP` for all browser-based implementations. This field is also mandatory for some merchants depending on your business model. For more information, [contact Support](https://www.adyen.help/hc/en-us/requests/new).
	ShopperIP *string `json:"shopperIP,omitempty"`
	// Specifies the sales channel, through which the shopper gives their card details, and whether the shopper is a returning customer. For the web service API, Adyen assumes Ecommerce shopper interaction by default.  This field has the following possible values: * `Ecommerce` - Online transactions where the cardholder is present (online). For better authorisation rates, we recommend sending the card security code (CSC) along with the request. * `ContAuth` - Card on file and/or subscription transactions, where the cardholder is known to the merchant (returning customer). If the shopper is present (online), you can supply also the CSC to improve authorisation (one-click payment). * `Moto` - Mail-order and telephone-order transactions where the shopper is in contact with the merchant via email or telephone. * `POS` - Point-of-sale transactions where the shopper is physically present to make a payment using a secure payment terminal.
	ShopperInteraction *string `json:"shopperInteraction,omitempty"`
	// The combination of a language code and a country code to specify the language to be used in the payment.
	ShopperLocale *string `json:"shopperLocale,omitempty"`
	ShopperName   *Name   `json:"shopperName,omitempty"`
	// Required for recurring payments.  Your reference to uniquely identify this shopper, for example user ID or account ID. The value is case-sensitive and must be at least three characters. > Your reference must not include personally identifiable information (PII) such as name or email address.
	ShopperReference *string `json:"shopperReference,omitempty"`
	// The text to be shown on the shopper's bank statement.  We recommend sending a maximum of 22 characters, otherwise banks might truncate the string.  Allowed characters: **a-z**, **A-Z**, **0-9**, spaces, and special characters **. , ' _ - ? + * /_**.
	ShopperStatement *string `json:"shopperStatement,omitempty"`
	// The shopper's social security number.
	SocialSecurityNumber *string `json:"socialSecurityNumber,omitempty"`
	// An array of objects specifying how the payment should be split when using either Adyen for Platforms for [marketplaces](https://docs.adyen.com/marketplaces/split-payments) or [platforms](https://docs.adyen.com/platforms/split-payments), or standalone [Issuing](https://docs.adyen.com/issuing/add-manage-funds#split).
	Splits []Split `json:"splits,omitempty"`
	// Required for Adyen for Platforms integrations if you are a platform model. This is your [reference](https://docs.adyen.com/api-explorer/Management/3/post/merchants/(merchantId)/stores#request-reference) (on [balance platform](https://docs.adyen.com/platforms)) or the [storeReference](https://docs.adyen.com/api-explorer/Account/latest/post/updateAccountHolder#request-accountHolderDetails-storeDetails-storeReference) (in the [classic integration](https://docs.adyen.com/classic-platforms/processing-payments/route-payment-to-store/#route-a-payment-to-a-store)) for the ecommerce or point-of-sale store that is processing the payment.
	Store *string `json:"store,omitempty"`
	// The shopper's telephone number.
	TelephoneNumber     *string              `json:"telephoneNumber,omitempty"`
	ThreeDS2RequestData *ThreeDS2RequestData `json:"threeDS2RequestData,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.
	ThreeDSAuthenticationOnly *bool `json:"threeDSAuthenticationOnly,omitempty"`
	// The reference value to aggregate sales totals in reporting. When not specified, the store field is used (if available).
	TotalsGroup *string `json:"totalsGroup,omitempty"`
	// Set to true if the payment should be routed to a trusted MID.
	TrustedShopper *bool `json:"trustedShopper,omitempty"`
}

// NewPaymentRequest3d instantiates a new PaymentRequest3d 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 NewPaymentRequest3d(md string, merchantAccount string, paResponse string) *PaymentRequest3d {
	this := PaymentRequest3d{}
	this.Md = md
	this.MerchantAccount = merchantAccount
	this.PaResponse = paResponse
	var threeDSAuthenticationOnly bool = false
	this.ThreeDSAuthenticationOnly = &threeDSAuthenticationOnly
	return &this
}

// NewPaymentRequest3dWithDefaults instantiates a new PaymentRequest3d 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 NewPaymentRequest3dWithDefaults() *PaymentRequest3d {
	this := PaymentRequest3d{}
	var threeDSAuthenticationOnly bool = false
	this.ThreeDSAuthenticationOnly = &threeDSAuthenticationOnly
	return &this
}

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

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

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

	return false
}

// SetAccountInfo gets a reference to the given AccountInfo and assigns it to the AccountInfo field.
func (o *PaymentRequest3d) SetAccountInfo(v AccountInfo) {
	o.AccountInfo = &v
}

// GetAdditionalAmount returns the AdditionalAmount field value if set, zero value otherwise.
func (o *PaymentRequest3d) GetAdditionalAmount() Amount {
	if o == nil || common.IsNil(o.AdditionalAmount) {
		var ret Amount
		return ret
	}
	return *o.AdditionalAmount
}

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

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

	return false
}

// SetAdditionalAmount gets a reference to the given Amount and assigns it to the AdditionalAmount field.
func (o *PaymentRequest3d) SetAdditionalAmount(v Amount) {
	o.AdditionalAmount = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetAmount gets a reference to the given Amount and assigns it to the Amount field.
func (o *PaymentRequest3d) SetAmount(v Amount) {
	o.Amount = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetBrowserInfo gets a reference to the given BrowserInfo and assigns it to the BrowserInfo field.
func (o *PaymentRequest3d) SetBrowserInfo(v BrowserInfo) {
	o.BrowserInfo = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

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

// GetDccQuote returns the DccQuote field value if set, zero value otherwise.
func (o *PaymentRequest3d) GetDccQuote() ForexQuote {
	if o == nil || common.IsNil(o.DccQuote) {
		var ret ForexQuote
		return ret
	}
	return *o.DccQuote
}

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

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

	return false
}

// SetDccQuote gets a reference to the given ForexQuote and assigns it to the DccQuote field.
func (o *PaymentRequest3d) SetDccQuote(v ForexQuote) {
	o.DccQuote = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetDeviceFingerprint gets a reference to the given string and assigns it to the DeviceFingerprint field.
func (o *PaymentRequest3d) SetDeviceFingerprint(v string) {
	o.DeviceFingerprint = &v
}

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

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

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

	return false
}

// SetFraudOffset gets a reference to the given int32 and assigns it to the FraudOffset field.
func (o *PaymentRequest3d) SetFraudOffset(v int32) {
	o.FraudOffset = &v
}

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

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

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

	return false
}

// SetInstallments gets a reference to the given Installments and assigns it to the Installments field.
func (o *PaymentRequest3d) SetInstallments(v Installments) {
	o.Installments = &v
}

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

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

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

	return false
}

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

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

// GetMd returns the Md field value
func (o *PaymentRequest3d) GetMd() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Md
}

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

// SetMd sets field value
func (o *PaymentRequest3d) SetMd(v string) {
	o.Md = v
}

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

	return o.MerchantAccount
}

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

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

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetMerchantRiskIndicator gets a reference to the given MerchantRiskIndicator and assigns it to the MerchantRiskIndicator field.
func (o *PaymentRequest3d) SetMerchantRiskIndicator(v MerchantRiskIndicator) {
	o.MerchantRiskIndicator = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetOrderReference gets a reference to the given string and assigns it to the OrderReference field.
func (o *PaymentRequest3d) SetOrderReference(v string) {
	o.OrderReference = &v
}

// GetPaResponse returns the PaResponse field value
func (o *PaymentRequest3d) GetPaResponse() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.PaResponse
}

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

// SetPaResponse sets field value
func (o *PaymentRequest3d) SetPaResponse(v string) {
	o.PaResponse = v
}

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

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

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

	return false
}

// SetRecurring gets a reference to the given Recurring and assigns it to the Recurring field.
func (o *PaymentRequest3d) SetRecurring(v Recurring) {
	o.Recurring = &v
}

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

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

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

	return false
}

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

// GetReference returns the Reference field value if set, zero value otherwise.
func (o *PaymentRequest3d) 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 *PaymentRequest3d) 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 *PaymentRequest3d) 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 *PaymentRequest3d) SetReference(v string) {
	o.Reference = &v
}

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

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

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

	return false
}

// SetSelectedBrand gets a reference to the given string and assigns it to the SelectedBrand field.
func (o *PaymentRequest3d) SetSelectedBrand(v string) {
	o.SelectedBrand = &v
}

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

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

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

	return false
}

// SetSelectedRecurringDetailReference gets a reference to the given string and assigns it to the SelectedRecurringDetailReference field.
func (o *PaymentRequest3d) SetSelectedRecurringDetailReference(v string) {
	o.SelectedRecurringDetailReference = &v
}

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

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

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

	return false
}

// SetSessionId gets a reference to the given string and assigns it to the SessionId field.
func (o *PaymentRequest3d) SetSessionId(v string) {
	o.SessionId = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetShopperIP gets a reference to the given string and assigns it to the ShopperIP field.
func (o *PaymentRequest3d) SetShopperIP(v string) {
	o.ShopperIP = &v
}

// GetShopperInteraction returns the ShopperInteraction field value if set, zero value otherwise.
func (o *PaymentRequest3d) 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 *PaymentRequest3d) 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 *PaymentRequest3d) 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 *PaymentRequest3d) SetShopperInteraction(v string) {
	o.ShopperInteraction = &v
}

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

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

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

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

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

	return false
}

// SetThreeDSAuthenticationOnly gets a reference to the given bool and assigns it to the ThreeDSAuthenticationOnly field.
func (o *PaymentRequest3d) SetThreeDSAuthenticationOnly(v bool) {
	o.ThreeDSAuthenticationOnly = &v
}

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

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

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

	return false
}

// SetTotalsGroup gets a reference to the given string and assigns it to the TotalsGroup field.
func (o *PaymentRequest3d) SetTotalsGroup(v string) {
	o.TotalsGroup = &v
}

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

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

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

	return false
}

// SetTrustedShopper gets a reference to the given bool and assigns it to the TrustedShopper field.
func (o *PaymentRequest3d) SetTrustedShopper(v bool) {
	o.TrustedShopper = &v
}

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

func (o PaymentRequest3d) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !common.IsNil(o.AccountInfo) {
		toSerialize["accountInfo"] = o.AccountInfo
	}
	if !common.IsNil(o.AdditionalAmount) {
		toSerialize["additionalAmount"] = o.AdditionalAmount
	}
	if !common.IsNil(o.AdditionalData) {
		toSerialize["additionalData"] = o.AdditionalData
	}
	if !common.IsNil(o.Amount) {
		toSerialize["amount"] = o.Amount
	}
	if !common.IsNil(o.ApplicationInfo) {
		toSerialize["applicationInfo"] = o.ApplicationInfo
	}
	if !common.IsNil(o.BillingAddress) {
		toSerialize["billingAddress"] = o.BillingAddress
	}
	if !common.IsNil(o.BrowserInfo) {
		toSerialize["browserInfo"] = o.BrowserInfo
	}
	if !common.IsNil(o.CaptureDelayHours) {
		toSerialize["captureDelayHours"] = o.CaptureDelayHours
	}
	if !common.IsNil(o.DateOfBirth) {
		toSerialize["dateOfBirth"] = o.DateOfBirth
	}
	if !common.IsNil(o.DccQuote) {
		toSerialize["dccQuote"] = o.DccQuote
	}
	if !common.IsNil(o.DeliveryAddress) {
		toSerialize["deliveryAddress"] = o.DeliveryAddress
	}
	if !common.IsNil(o.DeliveryDate) {
		toSerialize["deliveryDate"] = o.DeliveryDate
	}
	if !common.IsNil(o.DeviceFingerprint) {
		toSerialize["deviceFingerprint"] = o.DeviceFingerprint
	}
	if !common.IsNil(o.FraudOffset) {
		toSerialize["fraudOffset"] = o.FraudOffset
	}
	if !common.IsNil(o.Installments) {
		toSerialize["installments"] = o.Installments
	}
	if !common.IsNil(o.LocalizedShopperStatement) {
		toSerialize["localizedShopperStatement"] = o.LocalizedShopperStatement
	}
	if !common.IsNil(o.Mcc) {
		toSerialize["mcc"] = o.Mcc
	}
	toSerialize["md"] = o.Md
	toSerialize["merchantAccount"] = o.MerchantAccount
	if !common.IsNil(o.MerchantOrderReference) {
		toSerialize["merchantOrderReference"] = o.MerchantOrderReference
	}
	if !common.IsNil(o.MerchantRiskIndicator) {
		toSerialize["merchantRiskIndicator"] = o.MerchantRiskIndicator
	}
	if !common.IsNil(o.Metadata) {
		toSerialize["metadata"] = o.Metadata
	}
	if !common.IsNil(o.OrderReference) {
		toSerialize["orderReference"] = o.OrderReference
	}
	toSerialize["paResponse"] = o.PaResponse
	if !common.IsNil(o.Recurring) {
		toSerialize["recurring"] = o.Recurring
	}
	if !common.IsNil(o.RecurringProcessingModel) {
		toSerialize["recurringProcessingModel"] = o.RecurringProcessingModel
	}
	if !common.IsNil(o.Reference) {
		toSerialize["reference"] = o.Reference
	}
	if !common.IsNil(o.SelectedBrand) {
		toSerialize["selectedBrand"] = o.SelectedBrand
	}
	if !common.IsNil(o.SelectedRecurringDetailReference) {
		toSerialize["selectedRecurringDetailReference"] = o.SelectedRecurringDetailReference
	}
	if !common.IsNil(o.SessionId) {
		toSerialize["sessionId"] = o.SessionId
	}
	if !common.IsNil(o.ShopperEmail) {
		toSerialize["shopperEmail"] = o.ShopperEmail
	}
	if !common.IsNil(o.ShopperIP) {
		toSerialize["shopperIP"] = o.ShopperIP
	}
	if !common.IsNil(o.ShopperInteraction) {
		toSerialize["shopperInteraction"] = o.ShopperInteraction
	}
	if !common.IsNil(o.ShopperLocale) {
		toSerialize["shopperLocale"] = o.ShopperLocale
	}
	if !common.IsNil(o.ShopperName) {
		toSerialize["shopperName"] = o.ShopperName
	}
	if !common.IsNil(o.ShopperReference) {
		toSerialize["shopperReference"] = o.ShopperReference
	}
	if !common.IsNil(o.ShopperStatement) {
		toSerialize["shopperStatement"] = o.ShopperStatement
	}
	if !common.IsNil(o.SocialSecurityNumber) {
		toSerialize["socialSecurityNumber"] = o.SocialSecurityNumber
	}
	if !common.IsNil(o.Splits) {
		toSerialize["splits"] = o.Splits
	}
	if !common.IsNil(o.Store) {
		toSerialize["store"] = o.Store
	}
	if !common.IsNil(o.TelephoneNumber) {
		toSerialize["telephoneNumber"] = o.TelephoneNumber
	}
	if !common.IsNil(o.ThreeDS2RequestData) {
		toSerialize["threeDS2RequestData"] = o.ThreeDS2RequestData
	}
	if !common.IsNil(o.ThreeDSAuthenticationOnly) {
		toSerialize["threeDSAuthenticationOnly"] = o.ThreeDSAuthenticationOnly
	}
	if !common.IsNil(o.TotalsGroup) {
		toSerialize["totalsGroup"] = o.TotalsGroup
	}
	if !common.IsNil(o.TrustedShopper) {
		toSerialize["trustedShopper"] = o.TrustedShopper
	}
	return toSerialize, nil
}

type NullablePaymentRequest3d struct {
	value *PaymentRequest3d
	isSet bool
}

func (v NullablePaymentRequest3d) Get() *PaymentRequest3d {
	return v.value
}

func (v *NullablePaymentRequest3d) Set(val *PaymentRequest3d) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullablePaymentRequest3d(val *PaymentRequest3d) *NullablePaymentRequest3d {
	return &NullablePaymentRequest3d{value: val, isSet: true}
}

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

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

func (o *PaymentRequest3d) isValidRecurringProcessingModel() bool {
	var allowedEnumValues = []string{"CardOnFile", "Subscription", "UnscheduledCardOnFile"}
	for _, allowed := range allowedEnumValues {
		if o.GetRecurringProcessingModel() == allowed {
			return true
		}
	}
	return false
}
func (o *PaymentRequest3d) isValidShopperInteraction() bool {
	var allowedEnumValues = []string{"Ecommerce", "ContAuth", "Moto", "POS"}
	for _, allowed := range allowedEnumValues {
		if o.GetShopperInteraction() == allowed {
			return true
		}
	}
	return false
}
