# -*- coding: utf-8 -*-
from yookassa.domain.common import BaseObject


class CancellationDetails(BaseObject):
    """
    Комментарий к статусу ~`canceled`: кто отменил платеж и по какой причине. Подробнее про [неуспешные платежи](https://yookassa.ru/developers/payment-acceptance/after-the-payment/declined-payments)
    """  # noqa: E501

    __party = None
    """Участник процесса платежа, который принял решение об отмене транзакции. Может принимать значения ~`yoo_money`, ~`payment_network` и ~`merchant`. Подробнее про %[инициаторов отмены платежа](/developers/payment-acceptance/after-the-payment/declined-payments#cancellation-details-party) """  # noqa: E501

    __reason = None
    """Причина отмены платежа. %[Перечень и описание возможных значений](/developers/payment-acceptance/after-the-payment/declined-payments#cancellation-details-reason)"""  # noqa: E501

    @property
    def party(self):
        """
        Возвращает party модели CancellationDetails.

        :return: party модели CancellationDetails.
        :rtype: str
        """
        return self.__party

    @party.setter
    def party(self, value):
        """
        Устанавливает party модели CancellationDetails.

        :param value: party модели CancellationDetails.
        :type value: str
        """
        self.__party = str(value)

    @property
    def reason(self):
        """
        Возвращает reason модели CancellationDetails.

        :return: reason модели CancellationDetails.
        :rtype: str
        """
        return self.__reason

    @reason.setter
    def reason(self, value):
        """
        Устанавливает reason модели CancellationDetails.

        :param value: reason модели CancellationDetails.
        :type value: str
        """
        self.__reason = str(value)


class CancellationDetailsPartyCode(object):
    """
    Инициаторы отмены платежа, выплаты, возврата, персональных данных
    """  # noqa: E501

    """
    Список допустимых значений
    """
    MERCHANT = 'merchant'
    """Продавец товаров и услуг (вы)"""  # noqa: E501
    YOO_MONEY = 'yoo_money'
    """ЮKassa"""
    PAYMENT_NETWORK = 'payment_network'
    """Любые участники процесса платежа, кроме ЮKassa и вас (например, эмитент, сторонний платежный сервис)"""  # noqa: E501
    REFUND_NETWORK = 'refund_network'
    """Любые участники процесса возврата, кроме ЮKassa и вас (например, эмитент банковской карты)"""  # noqa: E501
    PAYOUT_NETWORK = 'payout_network'
    """Любые участники процесса выплаты, кроме ЮKassa и вас (например, эмитент банковской карты)"""  # noqa: E501


class CancellationDetailsReasonCode(object):
    """
    Причины отмены платежа
    """  # noqa: E501

    """
    Список допустимых значений
    """
    THREE_D_SECURE_FAILED = '3d_secure_failed'
    """Не пройдена аутентификация по 3-D Secure. При новой попытке оплаты пользователю следует пройти аутентификацию, использовать другое платежное средство или обратиться в банк за уточнениями"""  # noqa: E501
    CALL_ISSUER = 'call_issuer'
    """Оплата данным платежным средством отклонена по неизвестным причинам. Пользователю следует обратиться в организацию, выпустившую платежное средство"""  # noqa: E501
    CANCELED_BY_MERCHANT = 'canceled_by_merchant'
    """Платеж отменен по API при оплате в две стадии"""
    CARD_EXPIRED = 'card_expired'
    """Истек срок действия банковской карты. При новой попытке оплаты пользователю следует использовать другое платежное средство"""  # noqa: E501
    COUNTRY_FORBIDDEN = 'country_forbidden'
    """Нельзя заплатить банковской картой, выпущенной в этой стране. При новой попытке оплаты пользователю следует использовать другое платежное средство. Вы можете настроить ограничения на оплату иностранными банковскими картами"""  # noqa: E501
    DEAL_EXPIRED = 'deal_expired'
    """Для тех, кто использует Безопасную сделку: закончился срок жизни сделки. Если вы еще хотите принять оплату, создайте новую сделку и проведите для нее новый платеж"""  # noqa: E501
    EXPIRED_ON_CONFIRMATION = 'expired_on_confirmation'
    """Истек срок оплаты: пользователь не подтвердил платеж за время, отведенное на оплату выбранным способом. Если пользователь еще хочет оплатить, вам необходимо повторить платеж с новым ключом идемпотентности, а пользователю — подтвердить его"""  # noqa: E501
    EXPIRED_ON_CAPTURE = 'expired_on_capture'
    """Истек срок списания оплаты у двухстадийного платежа. Если вы еще хотите принять оплату, повторите платеж с новым ключом идемпотентности и спишите деньги после подтверждения платежа пользователем"""  # noqa: E501
    FRAUD_SUSPECTED = 'fraud_suspected'
    """Платеж заблокирован из-за подозрения в мошенничестве. При новой попытке оплаты пользователю следует использовать другое платежное средство"""  # noqa: E501
    GENERAL_DECLINE = 'general_decline'
    """Причина не детализирована. Пользователю следует обратиться к инициатору отмены платежа за уточнением подробностей"""  # noqa: E501
    IDENTIFICATION_REQUIRED = 'identification_required'
    """Превышены ограничения на платежи для кошелька ЮMoney. При новой попытке оплаты пользователю следует идентифицировать кошелек или выбрать другое платежное средство"""  # noqa: E501
    INSUFFICIENT_FUNDS = 'insufficient_funds'
    """Не хватает денег для оплаты. Пользователю следует пополнить баланс или использовать другое платежное средство"""  # noqa: E501
    INTERNAL_TIMEOUT = 'internal_timeout'
    """Технические неполадки на стороне ЮKassa: не удалось обработать запрос в течение 30 секунд. Повторите платеж с новым ключом идемпотентности"""  # noqa: E501
    INVALID_CARD_NUMBER = 'invalid_card_number'
    """Неправильно указан номер карты. При новой попытке оплаты пользователю следует ввести корректные данные"""
    INVALID_CSC = 'invalid_csc'
    """Неправильно указан код CVV2 (CVC2, CID). При новой попытке оплаты пользователю следует ввести корректные данные"""  # noqa: E501
    ISSUER_UNAVAILABLE = 'issuer_unavailable'
    """Организация, выпустившая платежное средство, недоступна. При новой попытке оплаты пользователю следует использовать другое платежное средство или повторить оплату позже"""  # noqa: E501
    PAYMENT_METHOD_LIMIT_EXCEEDED = 'payment_method_limit_exceeded'
    """Исчерпан лимит платежей для данного платежного средства или вашего магазина. При новой попытке оплаты пользователю следует использовать другое платежное средство или повторить оплату на следующий день"""  # noqa: E501
    PAYMENT_METHOD_RESTRICTED = 'payment_method_restricted'
    """Запрещены операции данным платежным средством (например, карта заблокирована из-за утери, кошелек — из-за взлома мошенниками). Пользователю следует обратиться в организацию, выпустившую платежное средство"""  # noqa: E501
    PERMISSION_REVOKED = 'permission_revoked'
    """Нельзя провести безакцептное списание: пользователь отозвал разрешение на автоплатежи. Если пользователь еще хочет оплатить, вам необходимо создать новый платеж, а пользователю — подтвердить оплату"""  # noqa: E501
    UNSUPPORTED_MOBILE_OPERATOR = 'unsupported_mobile_operator'
    """Нельзя заплатить с номера телефона этого мобильного оператора. При новой попытке оплаты пользователю следует использовать другое платежное средство. Список поддерживаемых операторов"""  # noqa: E501
    REJECTED_BY_TIMEOUT = 'rejected_by_timeout'
    """Отклонено по таймауту"""

class PayoutCancellationDetailsReasonCode(object):
    """
    Причины отмены выплаты
    """  # noqa: E501

    """
    Список допустимых значений
    """
    FRAUD_SUSPECTED = 'fraud_suspected'
    """Выплата заблокирована из-за подозрения в мошенничестве. Следует обратиться к инициатору отмены выплаты за уточнением подробностей или выбрать другой способ получения выплаты или другое платежное средство (например, другую банковскую карту)"""  # noqa: E501
    GENERAL_DECLINE = 'general_decline'
    """Причина не детализирована. Следует обратиться к инициатору отмены выплаты за уточнением подробностей"""
    INSUFFICIENT_FUNDS = 'insufficient_funds'
    """На балансе выплат не хватает денег для проведения выплаты. Пополните баланс и повторите запрос с новым ключом идемпотентности"""  # noqa: E501
    ISSUER_UNAVAILABLE = 'issuer_unavailable'
    """Эквайер недоступен. Следует выбрать другой способ получения выплаты или другое платежное средство (например, другую банковскую карту) или повторить запрос позже с новым ключом идемпотентности"""  # noqa: E501
    ONE_TIME_LIMIT_EXCEEDED = 'one_time_limit_exceeded'
    """
    Превышен лимит на разовое зачисление. Можно уменьшить размер выплаты, разбить сумму и сделать несколько выплат, выбрать другой способ получения выплат или другое платежное средство (например, другую банковскую карту)
    Для выплат на кошельки ЮMoney максимальный размер выплаты зависит от лимита на баланс: после выплаты остаток в кошельке не должен превышать определенную сумму, размер которой зависит от статуса кошелька. Если выплата не проходит из-за лимита на баланс, получателю следует изменить статус кошелька или потратить сумму, на которую превышается остаток  # noqa: E501
    """
    PERIODIC_LIMIT_EXCEEDED = 'periodic_limit_exceeded'
    """Превышен лимит выплат за период времени (сутки, месяц). Следует выбрать другой способ получения выплаты или другое платежное средство (например, другую банковскую карту). При необходимости вы можете изменить лимиты. Для этого обратитесь к вашему менеджеру ЮKassa"""  # noqa: E501
    RECIPIENT_CHECK_FAILED = 'recipient_check_failed'
    """Только для выплат с проверкой получателя. Получатель выплаты не прошел проверку: имя получателя не совпало с именем владельца счета, на который необходимо перевести деньги"""  # noqa: E501
    RECIPIENT_NOT_FOUND = 'recipient_not_found'
    """Для выплат через СБП: получатель не найден — в выбранном банке или платежном сервисе не найден счет, к которому привязан указанный номер телефона. Следует повторить запрос с новыми данными и новым ключом идемпотентности или выбрать другой способ получения выплаты"""  # noqa: E501
    REJECTED_BY_PAYEE = 'rejected_by_payee'
    """Эмитент отклонил выплату по неизвестным причинам. Пользователю следует обратиться к эмитенту за уточнением подробностей или выбрать другой способ получения выплаты или другое платежное средство (например, другую банковскую карту)"""  # noqa: E501
    SELF_EMPLOYED_ANNUAL_LIMIT_EXCEEDED = 'self_employed_annual_limit_exceeded'
    """Превышен лимит на годовой доход самозанятого. Порекомендуйте получателю выплаты проверить свой доход."""

class RefundCancellationDetailsReasonCode(object):
    """
    Причины отмены возврата
    """  # noqa: E501

    """
    Список допустимых значений
    """
    INSUFFICIENT_FUNDS = 'insufficient_funds'
    """Не хватает денег, чтобы сделать возврат: сумма платежей, которые вы получили в день возврата, меньше, чем сам возврат, или есть задолженность"""  # noqa: E501
    GENERAL_DECLINE = 'general_decline'
    """Причина не детализирована. Для уточнения подробностей обратитесь в техническую поддержку"""
    REJECTED_BY_PAYEE = 'rejected_by_payee'
    """Эмитент платежного средства отклонил возврат по неизвестным причинам. Предложите пользователю обратиться к эмитенту для уточнения подробностей или договоритесь с пользователем о том, чтобы вернуть ему деньги напрямую, не через ЮKassa"""  # noqa: E501
    YOO_MONEY_ACCOUNT_CLOSED = 'yoo_money_account_closed'
    """Пользователь закрыл кошелек ЮMoney, на который вы пытаетесь вернуть платеж. Сделать возврат через ЮKassa нельзя. Договоритесь с пользователем напрямую, каким способом вы вернете ему деньги"""  # noqa: E501
    PAYMENT_BASKET_ID_NOT_FOUND = 'payment_basket_id_not_found'
    """НСПК не нашла для этого возврата одобренную корзину покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности."""  # noqa: E501
    PAYMENT_ARTICLE_NUMBER_NOT_FOUND = 'payment_article_number_not_found'
    """Указаны товары, для оплаты которых не использовался электронный сертификат: значение `payment_article_number` отсутствует в одобренной корзине покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности."""  # noqa: E501
    PAYMENT_TRU_CODE_NOT_FOUND = 'payment_tru_code_not_found'
    """Указаны товары, для оплаты которых не использовался электронный сертификат: значение tru_code отсутствует в одобренной корзине покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности."""  # noqa: E501
    TOO_MANY_REFUNDING_ARTICLES = 'too_many_refunding_articles'
    """Для одного или нескольких товаров количество возвращаемых единиц (`quantity`) больше, чем указано в одобренной корзине покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности."""  # noqa: E501
    SOME_ARTICLES_ALREADY_REFUNDED = 'some_articles_already_refunded'
    """Некоторые товары уже возвращены. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности."""  # noqa: E501
    REJECTED_BY_TIMEOUT = 'rejected_by_timeout'
    """Технические неполадки на стороне инициатора отмены возврата. Повторите запрос с новым ключом идемпотентности"""  # noqa: E501

class PersonalDataCancellationDetailsReasonCode(object):
    """
    Причины отмены персональных данных
    """  # noqa: E501

    """
    Список допустимых значений
    """
    EXPIRED_BY_TIMEOUT = 'expired_by_timeout'
    """"Истек срок хранения или использования персональных данных"""

class InvoiceCancellationDetailsReasonCode:
    """Причина отмены счета.""" # noqa: E501

    """
    Список допустимых значений
    """
    INVOICE_CANCELED = "invoice_canceled"
    """Cчет отменен вручную из личного кабинета ЮKassa;"""  # noqa: E501
    INVOICE_EXPIRED = "invoice_expired"
    """Истек срок действия счета, который вы установили в запросе на создание счета в параметре `expires_at`, и по счету нет ни одного успешного платежа;"""  # noqa: E501
    GENERAL_DECLINE = "general_decline"
    """Причина не детализирована, поэтому пользователю следует обратиться к инициатору отмены счета за уточнением подробностей;"""  # noqa: E501
    PAYMENT_CANCELED = "payment_canceled"
    """Платеж отменен по API при оплате в две стадии;"""  # noqa: E501
    PAYMENT_EXPIRED_ON_CAPTURE = "payment_expired_on_capture"
    """Истек срок списания оплаты для платежа в две стадии."""  # noqa: E501
