Исходный код pyqiwip2p.p2p_types.customer

import typing

import phonenumbers
from email_validator import validate_email


[документация]class QiwiCustomer: """ Объект пользователя/покупателя. Неизвестно, зачем эта информация нужна QIWI, но раз можно, то почему бы и нет. Для удобства работы с QIWI API. **Аргументы** :param phone: номер телефона практически в любом формате :type phone: ``str`` or ``int``, optional :param email: электронная почта :type email: ``str``, optional :param account: идентификатор аккаунта :type account: ``str``, optional :param json_data: словарь с полями phone, email и account. При наличии этого параметра, другие игнорируются. :type json_data: ``dict``, optional :param ignore_valid: игнорировать невалидные значения номера телефона и почты :type ignore_valid: ``bool``, optional :param ignore_args: игнорировать отсутствующее значение и поставить None вместо него. :type ignore_args: ``bool``, optional :rtype: dict **Атрибуты** :param phone: номер телефона :type phone: ``str`` в формате *+79994442211* :param email: адрес электронной почты :type email: ``str`` :param account: идентификатор клиента в вашей системе :type account: ``str`` :param dict: json-словарь для использования в API :type dict: ``dict`` """ def __init__( self, phone: typing.Union[str, int] = None, email: str = None, account: typing.Union[str, int] = None, json_data: dict = None, ignore_valid: bool = False, ignore_args: bool = False, ): if json_data: self.phone = json_data.get("phone") self.email = json_data.get("email") self.account = json_data.get("account") else: if all([phone, email, account]) or ignore_args: if ignore_valid: self.phone = str(phone) self.email = str(email) self.account = str(account) else: parse_phone = phonenumbers.parse("+" + str(phone)) if phonenumbers.is_valid_number(parse_phone): self.phone = ( f"+{parse_phone.country_code}{parse_phone.national_number}" ) else: ValueError("Customer phone number is not valid") self.email = validate_email(email).ascii_email self.account = str(account) else: raise ValueError("One of the values is missing") self.dict = {"phone": self.phone, "email": self.email, "account": self.account}