# -*- coding: utf-8 -*-

"""
    apimaticcalculatorlatest

    This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
"""


class PaymentGateways(object):

    """Implementation of the 'PaymentGateways' model.

    TODO: type model description here.

    Attributes:
        payment_gateways_type (PaymentGatewaysTypeEnum): TODO: type
            description here.
        user (string): Value necessary for accessing payment gateway, values
            are different per payment gateway: PAYPAL - Client ID
            AUTHORIZE_NET - User ID BRIDGE_PAY - Username PAY_BOX - Site
            number DIBS - Login O_GONE - User ID DOC_DATA - ID PAY_GATE - ID 
            Note: This value will not be returned in response.
        secret (string): Value necessary for accessing payment gateway, values
            are different per payment gateway: PAYPAL - Secret AUTHORIZE_NET -
            Transaction Key BRIDGE_PAY - Password  PAY_BOX - Rank number DIBS
            - Password O_GONE - Password  DOC_DATA - Password PAY_GATE -
            Password  Note: This value will not be returned in response.
        additional_field_1 (string): Additional value necessary for accessing
            some payment gateways, values are different per payment gateway:
            BRIDGE_PAY - Merchant Number PAY_BOX - An identifier DIBS -
            Merchant ID O_GONE - PSP ID  Note: This value will not be returned
            in response.
        additional_field_2 (string): Additional value necessary for accessing
            some payment gateways, values are different per payment gateway:
            BRIDGE_PAY - Merchant Number PAY_BOX - An identifier DIBS -
            Merchant ID O_GONE - PSP ID  Note: This value will not be returned
            in response.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "payment_gateways_type":'paymentGatewaysType',
        "user":'user',
        "secret":'secret',
        "additional_field_1":'additionalField1',
        "additional_field_2":'additionalField2'
    }

    def __init__(self,
                 payment_gateways_type=None,
                 user=None,
                 secret=None,
                 additional_field_1=None,
                 additional_field_2=None):
        """Constructor for the PaymentGateways class"""

        # Initialize members of the class
        self.payment_gateways_type = payment_gateways_type
        self.user = user
        self.secret = secret
        self.additional_field_1 = additional_field_1
        self.additional_field_2 = additional_field_2


    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Creates an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object as
            obtained from the deserialization of the server's response. The keys
            MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """
        if dictionary is None:
            return None

        # Extract variables from the dictionary
        payment_gateways_type = dictionary.get('paymentGatewaysType')
        user = dictionary.get('user')
        secret = dictionary.get('secret')
        additional_field_1 = dictionary.get('additionalField1')
        additional_field_2 = dictionary.get('additionalField2')

        # Return an object of this model
        return cls(payment_gateways_type,
                   user,
                   secret,
                   additional_field_1,
                   additional_field_2)


