mirror of
https://github.com/openmax-server/server.git
synced 2026-05-22 19:41:41 +03:00
34 lines
1.4 KiB
Python
34 lines
1.4 KiB
Python
import aiohttp
|
||
import ssl
|
||
import logging
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
async def send_sms_code(gateway_url: str, phone: str) -> str | None:
|
||
url = f"{gateway_url}/sms/send"
|
||
ssl_context = ssl.create_default_context()
|
||
ssl_context.check_hostname = False
|
||
ssl_context.verify_mode = ssl.CERT_NONE
|
||
connector = aiohttp.TCPConnector(ssl=ssl_context)
|
||
async with aiohttp.ClientSession(connector=connector) as session:
|
||
try:
|
||
async with session.post(url, json={"phone_number": phone}) as resp:
|
||
data = await resp.json()
|
||
except Exception as e:
|
||
logger.error(f"Ошибка подключения к SMS шлюзу: {e}")
|
||
return None
|
||
if not data.get("success"):
|
||
logger.error(f"SMS шлюз вернул ошибку: {data.get('error')}")
|
||
return None
|
||
code = data.get("code")
|
||
if not code:
|
||
logger.error("SMS шлюз не вернул код")
|
||
return None
|
||
code = str(code)
|
||
# Если шлюз вернул 5-значный код — повторяем последнюю цифру.
|
||
# Пример: 26541 -> 265411, 26542 -> 265422
|
||
# Пользователь получает SMS с 5 цифрами и дописывает последнюю (такую же).
|
||
if len(code) == 5:
|
||
code = code + code[-1]
|
||
logger.debug(f"Код дополнен до 6 цифр: {code}")
|
||
return code |