/*
Adyen Checkout API

API version: 71
*/

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

package checkout

import (
	"encoding/json"
	"time"

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

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

// DonationPaymentRequest struct for DonationPaymentRequest
type DonationPaymentRequest struct {
	AccountInfo *AccountInfo `json:"accountInfo,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"`
	ApplicationInfo    *ApplicationInfo    `json:"applicationInfo,omitempty"`
	AuthenticationData *AuthenticationData `json:"authenticationData,omitempty"`
	BillingAddress     *BillingAddress     `json:"billingAddress,omitempty"`
	BrowserInfo        *BrowserInfo        `json:"browserInfo,omitempty"`
	// The platform where a payment transaction takes place. This field is optional for filtering out payment methods that are only available on specific platforms. If this value is not set, then we will try to infer it from the `sdkVersion` or `token`.  Possible values: * iOS * Android * Web
	Channel *string `json:"channel,omitempty"`
	// Checkout attempt ID that corresponds to the Id generated by the client SDK for tracking user payment journey.
	CheckoutAttemptId *string `json:"checkoutAttemptId,omitempty"`
	// Conversion ID that corresponds to the Id generated by the client SDK for tracking user payment journey.
	// Deprecated since Adyen Checkout API v68
	// Use `checkoutAttemptId` instead
	ConversionId *string `json:"conversionId,omitempty"`
	// The shopper country.  Format: [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) Example: NL or DE
	CountryCode *string `json:"countryCode,omitempty"`
	// The shopper's date of birth.  Format [ISO-8601](https://www.w3.org/TR/NOTE-datetime): YYYY-MM-DD
	DateOfBirth *time.Time `json:"dateOfBirth,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
	DeliverAt       *time.Time       `json:"deliverAt,omitempty"`
	DeliveryAddress *DeliveryAddress `json:"deliveryAddress,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"`
	// Donation account to which the transaction is credited.
	DonationAccount *string `json:"donationAccount,omitempty"`
	// The donation campaign ID received in the `/donationCampaigns` call.
	DonationCampaignId *string `json:"donationCampaignId,omitempty"`
	// PSP reference of the transaction from which the donation token is generated. Required when `donationToken` is provided.
	DonationOriginalPspReference *string `json:"donationOriginalPspReference,omitempty"`
	// Donation token received in the `/payments` call.
	DonationToken *string `json:"donationToken,omitempty"`
	// Price and product information about the purchased items, to be included on the invoice sent to the shopper. > This field is required for 3x 4x Oney, Affirm, Afterpay, Clearpay, Klarna, Ratepay, Riverty, and Zip.
	LineItems []LineItem `json:"lineItems,omitempty"`
	// The merchant account identifier, with which you want to process the transaction.
	MerchantAccount       string                 `json:"merchantAccount"`
	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"`
	MpiData  *ThreeDSecureData  `json:"mpiData,omitempty"`
	// Required for the 3D Secure 2 `channel` **Web** integration.  Set this parameter to the origin URL of the page that you are loading the 3D Secure Component from.
	Origin        *string               `json:"origin,omitempty"`
	PaymentMethod DonationPaymentMethod `json:"paymentMethod"`
	// 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"`
	// Specifies the redirect method (GET or POST) when redirecting back from the issuer.
	RedirectFromIssuerMethod *string `json:"redirectFromIssuerMethod,omitempty"`
	// Specifies the redirect method (GET or POST) when redirecting to the issuer.
	RedirectToIssuerMethod *string `json:"redirectToIssuerMethod,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"`
	// The URL to return to in case of a redirection. The format depends on the channel. This URL can have a maximum of 1024 characters. * For web, include the protocol `http://` or `https://`. You can also include your own additional query parameters, for example, shopper ID or order reference number. Example: `https://your-company.com/checkout?shopperOrder=12xy` * For iOS, use the custom URL for your app. To know more about setting custom URL schemes, refer to the [Apple Developer documentation](https://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app). Example: `my-app://` * For Android, use a custom URL handled by an Activity on your app. You can configure it with an [intent filter](https://developer.android.com/guide/components/intents-filters). Example: `my-app://your.package.name`  If the URL to return to includes non-ASCII characters, like spaces or special letters, URL encode the value. > The URL must not include personally identifiable information (PII), for example name or email address.
	ReturnUrl string `json:"returnUrl"`
	// The date and time until when the session remains valid, in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format.  For example: 2020-07-18T15:42:40.428+01:00
	SessionValidity *string `json:"sessionValidity,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. Minimum length: 3 characters. > Your reference must not include personally identifiable information (PII), for example name or email address.
	ShopperReference *string `json:"shopperReference,omitempty"`
	// The shopper's social security number.
	SocialSecurityNumber *string `json:"socialSecurityNumber,omitempty"`
	// The shopper's telephone number.
	TelephoneNumber     *string                `json:"telephoneNumber,omitempty"`
	ThreeDS2RequestData *ThreeDS2RequestFields `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.
	// Deprecated since Adyen Checkout API v69
	// Use `authenticationData.authenticationOnly` instead.
	ThreeDSAuthenticationOnly *bool `json:"threeDSAuthenticationOnly,omitempty"`
}

// NewDonationPaymentRequest instantiates a new DonationPaymentRequest 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 NewDonationPaymentRequest(amount Amount, merchantAccount string, paymentMethod DonationPaymentMethod, reference string, returnUrl string) *DonationPaymentRequest {
	this := DonationPaymentRequest{}
	this.Amount = amount
	this.MerchantAccount = merchantAccount
	this.PaymentMethod = paymentMethod
	this.Reference = reference
	this.ReturnUrl = returnUrl
	var threeDSAuthenticationOnly bool = false
	this.ThreeDSAuthenticationOnly = &threeDSAuthenticationOnly
	return &this
}

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

// GetAccountInfo returns the AccountInfo field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetAccountInfo(v AccountInfo) {
	o.AccountInfo = &v
}

// GetAdditionalData returns the AdditionalData field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetAdditionalData(v map[string]string) {
	o.AdditionalData = &v
}

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

	return o.Amount
}

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

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

// GetApplicationInfo returns the ApplicationInfo field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetApplicationInfo(v ApplicationInfo) {
	o.ApplicationInfo = &v
}

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

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

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

	return false
}

// SetAuthenticationData gets a reference to the given AuthenticationData and assigns it to the AuthenticationData field.
func (o *DonationPaymentRequest) SetAuthenticationData(v AuthenticationData) {
	o.AuthenticationData = &v
}

// GetBillingAddress returns the BillingAddress field value if set, zero value otherwise.
func (o *DonationPaymentRequest) GetBillingAddress() BillingAddress {
	if o == nil || common.IsNil(o.BillingAddress) {
		var ret BillingAddress
		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 *DonationPaymentRequest) GetBillingAddressOk() (*BillingAddress, 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 *DonationPaymentRequest) HasBillingAddress() bool {
	if o != nil && !common.IsNil(o.BillingAddress) {
		return true
	}

	return false
}

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

// GetBrowserInfo returns the BrowserInfo field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetBrowserInfo(v BrowserInfo) {
	o.BrowserInfo = &v
}

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

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

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

	return false
}

// SetChannel gets a reference to the given string and assigns it to the Channel field.
func (o *DonationPaymentRequest) SetChannel(v string) {
	o.Channel = &v
}

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

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

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

	return false
}

// SetCheckoutAttemptId gets a reference to the given string and assigns it to the CheckoutAttemptId field.
func (o *DonationPaymentRequest) SetCheckoutAttemptId(v string) {
	o.CheckoutAttemptId = &v
}

// GetConversionId returns the ConversionId field value if set, zero value otherwise.
// Deprecated since Adyen Checkout API v68
// Use `checkoutAttemptId` instead
func (o *DonationPaymentRequest) GetConversionId() string {
	if o == nil || common.IsNil(o.ConversionId) {
		var ret string
		return ret
	}
	return *o.ConversionId
}

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

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

	return false
}

// SetConversionId gets a reference to the given string and assigns it to the ConversionId field.
// Deprecated since Adyen Checkout API v68
// Use `checkoutAttemptId` instead
func (o *DonationPaymentRequest) SetConversionId(v string) {
	o.ConversionId = &v
}

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

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

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

	return false
}

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

// GetDateOfBirth returns the DateOfBirth field value if set, zero value otherwise.
func (o *DonationPaymentRequest) GetDateOfBirth() time.Time {
	if o == nil || common.IsNil(o.DateOfBirth) {
		var ret time.Time
		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 *DonationPaymentRequest) GetDateOfBirthOk() (*time.Time, 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 *DonationPaymentRequest) HasDateOfBirth() bool {
	if o != nil && !common.IsNil(o.DateOfBirth) {
		return true
	}

	return false
}

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

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

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

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

	return false
}

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

// GetDeliveryAddress returns the DeliveryAddress field value if set, zero value otherwise.
func (o *DonationPaymentRequest) GetDeliveryAddress() DeliveryAddress {
	if o == nil || common.IsNil(o.DeliveryAddress) {
		var ret DeliveryAddress
		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 *DonationPaymentRequest) GetDeliveryAddressOk() (*DeliveryAddress, 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 *DonationPaymentRequest) HasDeliveryAddress() bool {
	if o != nil && !common.IsNil(o.DeliveryAddress) {
		return true
	}

	return false
}

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

// GetDeviceFingerprint returns the DeviceFingerprint field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetDeviceFingerprint(v string) {
	o.DeviceFingerprint = &v
}

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

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

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

	return false
}

// SetDonationAccount gets a reference to the given string and assigns it to the DonationAccount field.
func (o *DonationPaymentRequest) SetDonationAccount(v string) {
	o.DonationAccount = &v
}

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

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

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

	return false
}

// SetDonationCampaignId gets a reference to the given string and assigns it to the DonationCampaignId field.
func (o *DonationPaymentRequest) SetDonationCampaignId(v string) {
	o.DonationCampaignId = &v
}

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

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

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

	return false
}

// SetDonationOriginalPspReference gets a reference to the given string and assigns it to the DonationOriginalPspReference field.
func (o *DonationPaymentRequest) SetDonationOriginalPspReference(v string) {
	o.DonationOriginalPspReference = &v
}

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

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

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

	return false
}

// SetDonationToken gets a reference to the given string and assigns it to the DonationToken field.
func (o *DonationPaymentRequest) SetDonationToken(v string) {
	o.DonationToken = &v
}

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

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

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

	return false
}

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

// GetMerchantAccount returns the MerchantAccount field value
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) GetMerchantAccountOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.MerchantAccount, true
}

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

// GetMerchantRiskIndicator returns the MerchantRiskIndicator field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetMerchantRiskIndicator(v MerchantRiskIndicator) {
	o.MerchantRiskIndicator = &v
}

// GetMetadata returns the Metadata field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetMetadata(v map[string]string) {
	o.Metadata = &v
}

// GetMpiData returns the MpiData field value if set, zero value otherwise.
func (o *DonationPaymentRequest) GetMpiData() ThreeDSecureData {
	if o == nil || common.IsNil(o.MpiData) {
		var ret ThreeDSecureData
		return ret
	}
	return *o.MpiData
}

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

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

	return false
}

// SetMpiData gets a reference to the given ThreeDSecureData and assigns it to the MpiData field.
func (o *DonationPaymentRequest) SetMpiData(v ThreeDSecureData) {
	o.MpiData = &v
}

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

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

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

	return false
}

// SetOrigin gets a reference to the given string and assigns it to the Origin field.
func (o *DonationPaymentRequest) SetOrigin(v string) {
	o.Origin = &v
}

// GetPaymentMethod returns the PaymentMethod field value
func (o *DonationPaymentRequest) GetPaymentMethod() DonationPaymentMethod {
	if o == nil {
		var ret DonationPaymentMethod
		return ret
	}

	return o.PaymentMethod
}

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

// SetPaymentMethod sets field value
func (o *DonationPaymentRequest) SetPaymentMethod(v DonationPaymentMethod) {
	o.PaymentMethod = v
}

// GetRecurringProcessingModel returns the RecurringProcessingModel field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetRecurringProcessingModel(v string) {
	o.RecurringProcessingModel = &v
}

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

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

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

	return false
}

// SetRedirectFromIssuerMethod gets a reference to the given string and assigns it to the RedirectFromIssuerMethod field.
func (o *DonationPaymentRequest) SetRedirectFromIssuerMethod(v string) {
	o.RedirectFromIssuerMethod = &v
}

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

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

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

	return false
}

// SetRedirectToIssuerMethod gets a reference to the given string and assigns it to the RedirectToIssuerMethod field.
func (o *DonationPaymentRequest) SetRedirectToIssuerMethod(v string) {
	o.RedirectToIssuerMethod = &v
}

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

	return o.Reference
}

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

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

// GetReturnUrl returns the ReturnUrl field value
func (o *DonationPaymentRequest) GetReturnUrl() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.ReturnUrl
}

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

// SetReturnUrl sets field value
func (o *DonationPaymentRequest) SetReturnUrl(v string) {
	o.ReturnUrl = v
}

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

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

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

	return false
}

// SetSessionValidity gets a reference to the given string and assigns it to the SessionValidity field.
func (o *DonationPaymentRequest) SetSessionValidity(v string) {
	o.SessionValidity = &v
}

// GetShopperEmail returns the ShopperEmail field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetShopperEmail(v string) {
	o.ShopperEmail = &v
}

// GetShopperIP returns the ShopperIP field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetShopperIP(v string) {
	o.ShopperIP = &v
}

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

// GetShopperLocale returns the ShopperLocale field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetShopperLocale(v string) {
	o.ShopperLocale = &v
}

// GetShopperName returns the ShopperName field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetShopperName(v Name) {
	o.ShopperName = &v
}

// GetShopperReference returns the ShopperReference field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetShopperReference(v string) {
	o.ShopperReference = &v
}

// GetSocialSecurityNumber returns the SocialSecurityNumber field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetSocialSecurityNumber(v string) {
	o.SocialSecurityNumber = &v
}

// GetTelephoneNumber returns the TelephoneNumber field value if set, zero value otherwise.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) 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 *DonationPaymentRequest) SetTelephoneNumber(v string) {
	o.TelephoneNumber = &v
}

// GetThreeDS2RequestData returns the ThreeDS2RequestData field value if set, zero value otherwise.
func (o *DonationPaymentRequest) GetThreeDS2RequestData() ThreeDS2RequestFields {
	if o == nil || common.IsNil(o.ThreeDS2RequestData) {
		var ret ThreeDS2RequestFields
		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 *DonationPaymentRequest) GetThreeDS2RequestDataOk() (*ThreeDS2RequestFields, 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 *DonationPaymentRequest) HasThreeDS2RequestData() bool {
	if o != nil && !common.IsNil(o.ThreeDS2RequestData) {
		return true
	}

	return false
}

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

// GetThreeDSAuthenticationOnly returns the ThreeDSAuthenticationOnly field value if set, zero value otherwise.
// Deprecated since Adyen Checkout API v69
// Use `authenticationData.authenticationOnly` instead.
func (o *DonationPaymentRequest) 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.
// Deprecated since Adyen Checkout API v69
// Use `authenticationData.authenticationOnly` instead.
func (o *DonationPaymentRequest) 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 *DonationPaymentRequest) 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.
// Deprecated since Adyen Checkout API v69
// Use `authenticationData.authenticationOnly` instead.
func (o *DonationPaymentRequest) SetThreeDSAuthenticationOnly(v bool) {
	o.ThreeDSAuthenticationOnly = &v
}

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

func (o DonationPaymentRequest) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !common.IsNil(o.AccountInfo) {
		toSerialize["accountInfo"] = o.AccountInfo
	}
	if !common.IsNil(o.AdditionalData) {
		toSerialize["additionalData"] = o.AdditionalData
	}
	toSerialize["amount"] = o.Amount
	if !common.IsNil(o.ApplicationInfo) {
		toSerialize["applicationInfo"] = o.ApplicationInfo
	}
	if !common.IsNil(o.AuthenticationData) {
		toSerialize["authenticationData"] = o.AuthenticationData
	}
	if !common.IsNil(o.BillingAddress) {
		toSerialize["billingAddress"] = o.BillingAddress
	}
	if !common.IsNil(o.BrowserInfo) {
		toSerialize["browserInfo"] = o.BrowserInfo
	}
	if !common.IsNil(o.Channel) {
		toSerialize["channel"] = o.Channel
	}
	if !common.IsNil(o.CheckoutAttemptId) {
		toSerialize["checkoutAttemptId"] = o.CheckoutAttemptId
	}
	if !common.IsNil(o.ConversionId) {
		toSerialize["conversionId"] = o.ConversionId
	}
	if !common.IsNil(o.CountryCode) {
		toSerialize["countryCode"] = o.CountryCode
	}
	if !common.IsNil(o.DateOfBirth) {
		toSerialize["dateOfBirth"] = o.DateOfBirth
	}
	if !common.IsNil(o.DeliverAt) {
		toSerialize["deliverAt"] = o.DeliverAt
	}
	if !common.IsNil(o.DeliveryAddress) {
		toSerialize["deliveryAddress"] = o.DeliveryAddress
	}
	if !common.IsNil(o.DeviceFingerprint) {
		toSerialize["deviceFingerprint"] = o.DeviceFingerprint
	}
	if !common.IsNil(o.DonationAccount) {
		toSerialize["donationAccount"] = o.DonationAccount
	}
	if !common.IsNil(o.DonationCampaignId) {
		toSerialize["donationCampaignId"] = o.DonationCampaignId
	}
	if !common.IsNil(o.DonationOriginalPspReference) {
		toSerialize["donationOriginalPspReference"] = o.DonationOriginalPspReference
	}
	if !common.IsNil(o.DonationToken) {
		toSerialize["donationToken"] = o.DonationToken
	}
	if !common.IsNil(o.LineItems) {
		toSerialize["lineItems"] = o.LineItems
	}
	toSerialize["merchantAccount"] = o.MerchantAccount
	if !common.IsNil(o.MerchantRiskIndicator) {
		toSerialize["merchantRiskIndicator"] = o.MerchantRiskIndicator
	}
	if !common.IsNil(o.Metadata) {
		toSerialize["metadata"] = o.Metadata
	}
	if !common.IsNil(o.MpiData) {
		toSerialize["mpiData"] = o.MpiData
	}
	if !common.IsNil(o.Origin) {
		toSerialize["origin"] = o.Origin
	}
	toSerialize["paymentMethod"] = o.PaymentMethod
	if !common.IsNil(o.RecurringProcessingModel) {
		toSerialize["recurringProcessingModel"] = o.RecurringProcessingModel
	}
	if !common.IsNil(o.RedirectFromIssuerMethod) {
		toSerialize["redirectFromIssuerMethod"] = o.RedirectFromIssuerMethod
	}
	if !common.IsNil(o.RedirectToIssuerMethod) {
		toSerialize["redirectToIssuerMethod"] = o.RedirectToIssuerMethod
	}
	toSerialize["reference"] = o.Reference
	toSerialize["returnUrl"] = o.ReturnUrl
	if !common.IsNil(o.SessionValidity) {
		toSerialize["sessionValidity"] = o.SessionValidity
	}
	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.SocialSecurityNumber) {
		toSerialize["socialSecurityNumber"] = o.SocialSecurityNumber
	}
	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
	}
	return toSerialize, nil
}

type NullableDonationPaymentRequest struct {
	value *DonationPaymentRequest
	isSet bool
}

func (v NullableDonationPaymentRequest) Get() *DonationPaymentRequest {
	return v.value
}

func (v *NullableDonationPaymentRequest) Set(val *DonationPaymentRequest) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableDonationPaymentRequest(val *DonationPaymentRequest) *NullableDonationPaymentRequest {
	return &NullableDonationPaymentRequest{value: val, isSet: true}
}

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

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

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