Source code for terminusgps.authorizenet.api.payment_profiles

from authorizenet import apicontractsv1, apicontrollers
from authorizenet.apicontrollersbase import APIOperationBase
from lxml.objectify import ObjectifiedElement

__all__ = [
    "create_customer_payment_profile",
    "get_customer_payment_profile",
    "validate_customer_payment_profile",
    "update_customer_payment_profile",
    "delete_customer_payment_profile",
]


[docs] def create_customer_payment_profile( customer_profile_id: int, contract: apicontractsv1.customerPaymentProfileType, default: bool = False, validation: str = "liveMode", ) -> tuple[ObjectifiedElement, type[APIOperationBase]]: """ `createCustomerPaymentProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-create-customer-payment-profile>`_. :param customer_profile_id: An Authorizenet customer profile id. :type customer_profile_id: int :param contract: A customer payment profile element. :type contract: ~authorizenet.apicontractsv1.customerPaymentProfileType :param default: Whether to set the payment profile as default. Default is :py:obj:`False`. :type default: bool :param validation: Validation mode. Default is :py:obj:`"liveMode"`. :type validation: str :returns: A tuple containing an Authorizenet API request element and controller class. :rtype: tuple[~lxml.objectify.ObjectifiedElement, type[~authorizenet.apicontrollersbase.APIOperationBase]] """ if not contract.payment: raise ValueError("'payment' attribute is required in contract") if not contract.billTo: raise ValueError("'billTo' attribute is required in contract") request = apicontractsv1.createCustomerPaymentProfileRequest() request.customerProfileId = str(customer_profile_id) request.validationMode = validation request.paymentProfile = contract request.paymentProfile.defaultPaymentProfile = int(default) return request, apicontrollers.createCustomerPaymentProfileController
[docs] def get_customer_payment_profile( customer_profile_id: int, payment_profile_id: int, include_issuer_info: bool = False, ) -> tuple[ObjectifiedElement, type[APIOperationBase]]: """ `getCustomerPaymentProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-get-customer-payment-profile>`_. :param customer_profile_id: An Authorizenet customer profile id. :type customer_profile_id: int :param payment_profile_id: An Authorizenet customer payment profile id. :type payment_profile_id: int :param include_issuer_info: Whether to include issuer info in the response. Default is False. :type include_issuer_info: bool :returns: A tuple containing an Authorizenet API request element and controller class. :rtype: tuple[~lxml.objectify.ObjectifiedElement, type[~authorizenet.apicontrollersbase.APIOperationBase]] """ request = apicontractsv1.getCustomerPaymentProfileRequest() request.customerProfileId = str(customer_profile_id) request.customerPaymentProfileId = str(payment_profile_id) request.includeIssuerInfo = int(include_issuer_info) return request, apicontrollers.getCustomerPaymentProfileController
[docs] def validate_customer_payment_profile( customer_profile_id: int, payment_profile_id: int, validation: str = "liveMode", ) -> tuple[ObjectifiedElement, type[APIOperationBase]]: """ `validateCustomerPaymentProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-validate-customer-payment-profile>`_. :param customer_profile_id: An Authorizenet customer profile id. :type customer_profile_id: int :param payment_profile_id: An Authorizenet customer payment profile id. :type payment_profile_id: int :param validation: Validation mode. Default is :py:obj:`"liveMode"`. :type validation: str :returns: A tuple containing an Authorizenet API request element and controller class. :rtype: tuple[~lxml.objectify.ObjectifiedElement, type[~authorizenet.apicontrollersbase.APIOperationBase]] """ request = apicontractsv1.validateCustomerPaymentProfileRequest() request.customerProfileId = str(customer_profile_id) request.customerPaymentProfileId = str(payment_profile_id) request.validationMode = validation return request, apicontrollers.validateCustomerPaymentProfileController
[docs] def update_customer_payment_profile( customer_profile_id: int, contract: apicontractsv1.customerPaymentProfileExType, default: bool, validation: str = "liveMode", ) -> tuple[ObjectifiedElement, type[APIOperationBase]]: """ `updateCustomerPaymentProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-update-customer-payment-profile>`_. :param customer_profile_id: An Authorizenet customer profile id. :type customer_profile_id: int :param contract: A customer payment profile ex element. :type contract: ~authorizenet.apicontractsv1.customerPaymentProfileExType :param default: Whether to set the payment profile as default. :type default: bool :param validation: Validation mode. Default is :py:obj:`"liveMode"`. :type validation: str :raises ValueError: If neither payment nor address was provided. :returns: A tuple containing an Authorizenet API request element and controller class. :rtype: tuple[~lxml.objectify.ObjectifiedElement, type[~authorizenet.apicontrollersbase.APIOperationBase]] """ if not contract.payment: raise ValueError("'payment' attribute is required in contract") if not contract.billTo: raise ValueError("'billTo' attribute is required in contract") if not contract.customerPaymentProfileId: raise ValueError("'customerPaymentProfileId' is required in contract") request = apicontractsv1.updateCustomerPaymentProfileRequest() request.customerProfileId = str(customer_profile_id) request.validationMode = validation request.paymentProfile = contract request.paymentProfile.defaultPaymentProfile = int(default) return request, apicontrollers.updateCustomerPaymentProfileController
[docs] def delete_customer_payment_profile( customer_profile_id: int, payment_profile_id: int ) -> tuple[ObjectifiedElement, type[APIOperationBase]]: """ `deleteCustomerPaymentProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-delete-customer-payment-profile>`_. :param customer_profile_id: An Authorizenet customer profile id. :type customer_profile_id: int :param payment_profile_id: An Authorizenet customer payment profile id. :type payment_profile_id: int :returns: A tuple containing an Authorizenet API request element and controller class. :rtype: tuple[~lxml.objectify.ObjectifiedElement, type[~authorizenet.apicontrollersbase.APIOperationBase]] """ request = apicontractsv1.deleteCustomerPaymentProfileRequest() request.customerProfileId = str(customer_profile_id) request.customerPaymentProfileId = str(payment_profile_id) return request, apicontrollers.deleteCustomerPaymentProfileController