так, смотри, у меня с этим кодом проблема, он пользователю самого бота выводит резульатту: Неизвестный статус активации: STATUS_OK.
В то время, как в консоли: 2024-10-07 08:42:32,963 - root - INFO - Ответ статуса: STATUS_OK:5716
2024-10-07 08:42:32,964 - root - ERROR - Unexpected activation status: STATUS_OK:5716
т.е. он как раз должен был вывести пользователю в бота: Код активации: 5716

я тебе присылаю сам код и документацию, исправь и пришли мне готовый полный код

import asyncio
import logging
from aiogram import Router, types, F
from aiogram.filters.command import Command
from aiogram.fsm.context import FSMContext
from aiogram.fsm.state import StatesGroup, State
from aiogram.utils.keyboard import InlineKeyboardBuilder
from .api import SmsHubAPI
from .data import (
    get_user_api_key,
    set_user_api_key,
    delete_user_api_key
)

router = Router()

# Состояния для работы с настройками и заказами SMS
class UserSettings(StatesGroup):
    entering_api_key = State()

class SmsOrderState(StatesGroup):
    waiting_for_service = State()
    waiting_for_max_price = State()
    waiting_for_sms = State()

@router.message(Command(commands=['start']))
async def start_handler(message: types.Message):
    logging.info(f"Пользователь {message.from_user.id} запустил бота.")
    await show_main_menu(message)

async def show_main_menu(message: types.Message):
    logging.info(f"Пользователь {message.from_user.id} вернулся в главное меню.")
    keyboard = InlineKeyboardBuilder()
    keyboard.button(text="💰 Проверить баланс", callback_data="check_balance")
    keyboard.button(text="📲 Получить SMS", callback_data="get_sms")
    keyboard.button(text="⚙️ Настройки", callback_data="settings")

    try:
        await message.edit_text("Добро пожаловать! Выберите действие:", reply_markup=keyboard.as_markup())
    except Exception as e:
        logging.error(f"Ошибка при обновлении сообщения главного меню: {e}")
        await message.answer("Не удалось обновить меню. Добро пожаловать! Выберите действие:", reply_markup=keyboard.as_markup())

@router.callback_query(F.data == "settings")
async def settings_handler(callback_query: types.CallbackQuery, state: FSMContext):
    user_api_key = await get_user_api_key(callback_query.from_user.id)
    keyboard = InlineKeyboardBuilder()

    if user_api_key:
        keyboard.button(text="✏️ Изменить API ключ", callback_data="edit_api_key")
        keyboard.button(text="❌ Удалить API ключ", callback_data="delete_api_key")
        keyboard.button(text="🔙 Назад", callback_data="back_to_main_menu")
        await callback_query.message.edit_text(
            f"Ваш текущий API ключ: `{user_api_key}`",
            reply_markup=keyboard.as_markup(),
            parse_mode="Markdown"
        )
    else:
        keyboard.button(text="❌ Отмена", callback_data="cancel_settings")
        await callback_query.message.edit_text("API ключ не настроен. Введите новый ключ:", reply_markup=keyboard.as_markup())
        await state.set_state(UserSettings.entering_api_key)

    await callback_query.answer()

@router.callback_query(F.data == "edit_api_key")
async def edit_api_key_handler(callback_query: types.CallbackQuery, state: FSMContext):
    keyboard = InlineKeyboardBuilder()
    keyboard.button(text="❌ Отмена", callback_data="cancel_settings")
    await callback_query.message.edit_text("Введите новый API ключ для работы с сервисом:", reply_markup=keyboard.as_markup())
    await state.set_state(UserSettings.entering_api_key)
    await callback_query.answer()

@router.callback_query(F.data == "delete_api_key")
async def delete_api_key_handler(callback_query: types.CallbackQuery):
    await delete_user_api_key(callback_query.from_user.id)
    
    await callback_query.message.edit_text("API ключ успешно удалён.")
    await show_main_menu(callback_query.message)
    await callback_query.answer()

@router.callback_query(F.data == "back_to_main_menu")
async def back_to_main_menu_handler(callback_query: types.CallbackQuery):
    try:
        await show_main_menu(callback_query.message)
    except Exception as e:
        logging.error(f"Ошибка при попытке вернуть пользователя в главное меню: {e}")
        await callback_query.message.answer("Не удалось вернуться в главное меню. Пожалуйста, попробуйте снова.")
    await callback_query.answer()

@router.callback_query(F.data == "cancel_settings")
async def cancel_settings_handler(callback_query: types.CallbackQuery, state: FSMContext):
    await state.clear()
    await callback_query.message.delete()
    await show_main_menu(callback_query.message)
    await callback_query.answer()

@router.message(UserSettings.entering_api_key)
async def set_user_api_key_handler(message: types.Message, state: FSMContext):
    user_api_key = message.text.strip()
    logging.info(f"Пользователь {message.from_user.id} ввел API ключ: {user_api_key}")

    try:
        smshub_api = SmsHubAPI(user_api_key)
        balance_response = await smshub_api.get_balance()

        if balance_response and balance_response.startswith("ACCESS_BALANCE:"):
            balance = balance_response.split(":")[1]
            logging.info(f"API ключ пользователя {message.from_user.id} успешно проверен. Баланс: {balance}")
            await set_user_api_key(message.from_user.id, user_api_key)
            await message.answer("Ваш API ключ успешно сохранен и проверен!")
            await show_main_menu(message)
            await state.clear()
        else:
            logging.warning(f"Введен неверный API ключ пользователем {message.from_user.id}. Ответ: {balance_response}")
            keyboard = InlineKeyboardBuilder()
            keyboard.button(text="❌ Отмена", callback_data="cancel_settings")
            await message.answer("Неверный API ключ. Пожалуйста, попробуйте снова или убедитесь, что ваш API ключ правильный:", reply_markup=keyboard.as_markup())
    except Exception as e:
        logging.error(f"Ошибка при проверке API ключа пользователя {message.from_user.id}: {e}")
        keyboard = InlineKeyboardBuilder()
        keyboard.button(text="❌ Отмена", callback_data="cancel_settings")
        await message.answer("Произошла ошибка при проверке ключа. Пожалуйста, попробуйте снова.", reply_markup=keyboard.as_markup())

@router.callback_query(F.data == "check_balance")
async def balance_handler(callback_query: types.CallbackQuery):
    user_api_key = await get_user_api_key(callback_query.from_user.id)

    if not user_api_key:
        await callback_query.message.edit_text(
            "Пожалуйста, сначала настройте ваш API ключ в разделе 'Настройки'.",
            reply_markup=callback_query.message.reply_markup
        )
        await callback_query.answer()
        return

    smshub_api = SmsHubAPI(user_api_key)
    logging.info(f"Пользователь {callback_query.from_user.id} запросил баланс.")
    
    try:
        balance_response = await smshub_api.get_balance()
        if balance_response and balance_response.startswith("ACCESS_BALANCE:"):
            balance = balance_response.split(":")[1]
            current_message_text = callback_query.message.text
            new_message_text = f"Ваш баланс: ₽{balance}\n\nВыберите действие:"
            if current_message_text != new_message_text:
                await callback_query.message.edit_text(new_message_text, reply_markup=callback_query.message.reply_markup)
        else:
            logging.error(f"Не удалось получить баланс. Ответ: {balance_response}")
            await callback_query.message.edit_text(
                "Не удалось получить баланс. Попробуйте снова.", 
                reply_markup=callback_query.message.reply_markup
            )
    except Exception as e:
        logging.error(f"Ошибка при запросе баланса пользователя {callback_query.from_user.id}: {e}")
        await callback_query.message.edit_text(
            "Произошла ошибка при попытке получить баланс.", 
            reply_markup=callback_query.message.reply_markup
        )

    await callback_query.answer()

@router.callback_query(F.data == "get_sms")
async def get_sms_handler(callback_query: types.CallbackQuery, state: FSMContext):
    user_api_key = await get_user_api_key(callback_query.from_user.id)

    if not user_api_key:
        await callback_query.message.edit_text(
            "Пожалуйста, сначала настройте ваш API ключ в разделе 'Настройки'.",
            reply_markup=callback_query.message.reply_markup
        )
        await callback_query.answer()
        return

    logging.info(f"Пользователь {callback_query.from_user.id} начал процесс получения номера.")
    keyboard = InlineKeyboardBuilder()
    keyboard.button(text="❌ Отмена", callback_data="cancel_service")

    await callback_query.message.edit_text(
        "Введите сервис для получения номера (например, wa для WhatsApp):",
        reply_markup=keyboard.as_markup()
    )
    await state.set_state(SmsOrderState.waiting_for_service)
    await callback_query.answer()

@router.callback_query(F.data == "cancel_service")
async def cancel_service_handler(callback_query: types.CallbackQuery, state: FSMContext):
    logging.info(f"Пользователь {callback_query.from_user.id} отменил операцию.")
    await callback_query.message.edit_text("Операция отменена.")  # Сообщение об отмене
    await show_main_menu(callback_query.message)  # Меню остается в том же сообщении
    await state.clear()  # Очищаем состояние
    await callback_query.answer()

@router.message(SmsOrderState.waiting_for_service)
async def service_handler(message: types.Message, state: FSMContext):
    service = message.text.strip().lower()
    logging.info(f"Пользователь {message.from_user.id} ввел сервис: {service}")

    user_api_key = await get_user_api_key(message.from_user.id)
    smshub_api = SmsHubAPI(user_api_key)
    country_code = "0"  # Default to Russia

    # Запрос цен для сервиса
    price_info = await smshub_api.get_price_for_service(service, country=country_code)
    
    if price_info:
        # Извлекаем минимальную и максимальную цену
        prices = [float(price) for price in price_info.keys()]
        min_price = min(prices)
        max_price = max(prices)

        keyboard = InlineKeyboardBuilder()
        keyboard.button(text="❌ Отмена", callback_data="cancel_service")  # Добавлена кнопка отмены

        await message.answer(
            f"Текущие цены для сервиса {service}: от ₽{min_price:.4f} до ₽{max_price:.4f}. Введите максимальную стоимость (например, 10):",
            reply_markup=keyboard.as_markup()  # Добавляем инлайн клавиатуру с кнопкой отмены
        )
        await state.update_data(service=service, min_price=min_price, max_price=max_price)  # Сохраняем также минимальную и максимальную цену
        await state.set_state(SmsOrderState.waiting_for_max_price)
    else:
        await message.answer("Сервис недоступен или введен неверно. Попробуйте снова.")
        logging.error(f"Сервис '{service}' не найден среди доступных сервисов для страны '{country_code}'.")
        await show_main_menu(message)

@router.message(SmsOrderState.waiting_for_max_price)
async def max_price_handler(message: types.Message, state: FSMContext):
    max_price = message.text.strip()
    logging.info(f"Пользователь {message.from_user.id} указал максимальную стоимость: {max_price}")

    try:
        max_price_float = float(max_price)
    except ValueError:
        await message.answer("Пожалуйста, введите корректное числовое значение для максимальной стоимости.")
        return

    user_data = await state.get_data()
    service = user_data.get('service')
    min_price = user_data.get('min_price')
    max_price_limit = user_data.get('max_price')  # Получаем сохраненные минимальную и максимальную цену
    user_api_key = await get_user_api_key(message.from_user.id)

    if max_price_float < min_price:
        await message.answer(f"Максимальная стоимость должна быть хотя бы ₽{min_price:.4f}.")
        return

    smshub_api = SmsHubAPI(user_api_key)
    country_code = "0"

    result = await smshub_api.get_number(service, country_code, max_price=max_price_float)
    if result and result.startswith("ACCESS_NUMBER"):
        _, activation_id, number = result.split(":")
        logging.info(f"Пользователь {message.from_user.id} получил номер: {number}, активация ID: {activation_id}")
        keyboard = InlineKeyboardBuilder()
        keyboard.button(text="❌ Отмена", callback_data="cancel_sms_wait")
        await message.answer(f"Получен номер: {number}. Ожидание SMS...", reply_markup=keyboard.as_markup())
        await state.update_data(activation_id=activation_id)  # Store activation_id in the state
        await state.set_state(SmsOrderState.waiting_for_sms)  # Set state to waiting for SMS

        asyncio.create_task(poll_for_sms(message, activation_id, smshub_api, state))
    else:
        await message.answer("Не удалось получить номер. Пожалуйста, попробуйте снова.")
        logging.error(f"Неизвестный ответ при запросе номера: {result}")
        await show_main_menu(message)

@router.callback_query(F.data == "cancel_sms_wait")
async def cancel_sms_wait_handler(callback_query: types.CallbackQuery, state: FSMContext):
    user_data = await state.get_data()
    activation_id = user_data.get('activation_id')
    user_api_key = await get_user_api_key(callback_query.from_user.id)

    if activation_id and user_api_key:
        smshub_api = SmsHubAPI(user_api_key)
        result = await smshub_api.cancel_activation(activation_id)
        if result and result == "ACCESS_CANCEL":
            await callback_query.message.edit_text("Активация успешно отменена.")
            await show_main_menu(callback_query.message)
        else:
            await callback_query.message.edit_text("Не удалось отменить активацию. Попробуйте снова.")
    else:
        await callback_query.message.edit_text("Не найден ID активации для отмены.")

    await state.clear()
    await callback_query.answer()

@router.callback_query(F.data == "complete_activation")
async def complete_activation_handler(callback_query: types.CallbackQuery, state: FSMContext):
    user_data = await state.get_data()
    activation_id = user_data.get('activation_id')
    user_api_key = await get_user_api_key(callback_query.from_user.id)

    if activation_id and user_api_key:
        smshub_api = SmsHubAPI(user_api_key)
        result = await smshub_api.set_status(activation_id, status="6")
        if result and result == "ACCESS_ACTIVATION":
            await callback_query.message.edit_text("Активация успешно завершена.")
        else:
            await callback_query.message.edit_text("Не удалось завершить активацию. Попробуйте снова.")
    else:
        await callback_query.message.edit_text("Не найден ID активации для завершения.")

    await state.clear()
    await show_main_menu(callback_query.message)
    await callback_query.answer()

@router.callback_query(F.data == "request_another_sms")
async def request_another_sms_handler(callback_query: types.CallbackQuery, state: FSMContext):
    user_data = await state.get_data()
    activation_id = user_data.get('activation_id')
    user_api_key = await get_user_api_key(callback_query.from_user.id)

    if activation_id and user_api_key:
        smshub_api = SmsHubAPI(user_api_key)
        result = await smshub_api.set_status(activation_id, status="3")
        if result and result == "ACCESS_RETRY_GET":
            await callback_query.message.edit_text("Запрошено еще одно SMS. Ожидание SMS...")
            asyncio.create_task(poll_for_sms(callback_query.message, activation_id, smshub_api, state))
        else:
            await callback_query.message.edit_text("Не удалось запросить еще одно SMS. Попробуйте снова.")
    else:
        await callback_query.message.edit_text("Не найден ID активации для запроса.")
    
    await callback_query.answer()

async def poll_for_sms(message: types.Message, activation_id: str, smshub_api: SmsHubAPI, state: FSMContext):
    while True:
        await asyncio.sleep(3)  # Pause between API requests

        # Request activation status
        status_response = await smshub_api.get_status(activation_id)
        
        if status_response and status_response.startswith("STATUS_"):
            status_info = status_response.split(":")
            status = status_info[0]

            if status == "STATUS_WAIT_CODE":  
                logging.info(f"Waiting for SMS code for activation {activation_id}...")
                continue  # Continue polling
            elif status.startswith("STATUS_WAIT_RETRY"):  
                last_code = status_info[1] if len(status_info) > 1 else "no previous code"
                logging.info(f"Waiting for another SMS code, last code: {last_code}")
                continue
            elif status == "STATUS_CANCEL": 
                await message.answer("Activation canceled.")
                break
            elif status.startswith("STATUS_OK:"):  # Code received
                code = status_info[1]
                await message.answer(f"SMS activation code received: {code}")
                await offer_sms_options(message, activation_id)
                break
            else:
                logging.error(f"Unexpected activation status: {status_response}")
                await message.answer(f"Неизвестный статус активации: {status}.")
                break
        else:
            logging.error(f"Failed to get activation status: {status_response}")
            if "BAD_ACTION" in status_response or "BAD_KEY" in status_response:
                await message.answer("Failed to get activation status. Please try again later.")
            break

async def offer_sms_options(message: types.Message, activation_id: str):
    keyboard = InlineKeyboardBuilder()
    keyboard.button(text="Finish", callback_data="complete_activation")
    keyboard.button(text="Request another SMS", callback_data="request_another_sms")
    
    await message.answer("Choose an option for this number:", reply_markup=keyboard.as_markup())


документация:
Внимание! Добавлена поддержка валюты.

Методы getBalance, getNumber, getPrices теперь принимают параметр currency

Параметр currency принимает два значения 643, 840 (цифровой код валюты ₽ и $ по стандарту ISO)

Также добавлен новый метод updateApiCurrency, который задает значение по умолчанию, если currency не передано

Если в метод не передан параметр currency и не было задано значение с помощью updateApiCurrency, мы используем значение по умолчанию заданное в нашей системе

API - это протокол взаимодействия между вашим ПО и нашим сервером активаций.

API нужен для того, чтобы автоматизировать процесс получение смс сообщений на вашей стороне

Все запросы (поддерживаются POST и GET) должны идти на https://smshub.org/stubs/handler_api.php

Во всех запросах должен присутствовать API ключ в виде параметра "api_key"

Запрос количества доступных номеров:
https://smshub.org/stubs/handler_api.php?api_key=APIKEY&action=getNumbersStatus&country=COUNTRY&operator=OPERATOR
Входные параметры
Параметр	Принимаемые значения	Обязательность	Описание
APIKEY	APIKEY	Да	Ваш API-ключ, обеспечивает доступ к оплаченным услугам. API-ключ следует хранить в тайне
COUNTRY	См. список стран в левом меню	Нет	Страна номера, если не задан, то будет выбран номер той страны, которая последний раз была выбрана в левом меню
OPERATOR	Список доступных операторов можно найти в левом меню соответсвующей страны	Нет	Оператор номера, если не задан, то будет выбран тот оператор, который последний раз была выбран в левом меню
Ответ сервиса будет в json формате, пример:

{"apd_0":200,"amy_0":249,"aly_0":246,"tu_0":214,"aho_0":115,"ky_0":86,"apn_0":214,"ajs_0":66,"yd_0":205,"ayc_0":27}

Где до черточки - название сервиса, после обозначение нужно ли включать переадресацию. 0 - не включать. 1 - включать. Номеров с переадресацией мы к сожалению пока не предоставляем

Запрос баланса
https://smshub.org/stubs/handler_api.php?api_key=APIKEY&action=getBalance&currency=CURRENCY
Входные параметры
Параметр	Принимаемые значения	Обязательность	Описание
APIKEY	APIKEY	Да	Ваш API-ключ, обеспечивает доступ к оплаченным услугам. API-ключ следует хранить в тайне
CURRENCY	643, 840	Нет	Если передано - возвращает значение соответствующего баланса.
Выходные данные
Ответ сервера	Пример	Описание
ACCESS_BALANCE:BALANCE	ACCESS_BALANCE:540	BALANCE - Баланс вашего API-ключа
Возможные ошибки
Ответ сервера	Описание
BAD_KEY	Неверный API-ключ
ERROR_SQL	ошибка SQL-сервера
BAD_ACTION	Общее неправильное формирование запроса
BAD_CURRENCY	Неверное значение currency
Заказ номера
https://smshub.org/stubs/handler_api.php?api_key=APIKEY&action=getNumber&service=SERVICE&operator=OPERATOR&country=COUNTRY&maxPrice=MAXPRICE&currency=CURRENCY
Входные параметры
Параметр	Принимаемые значения	Обязательность	Описание
APIKEY	APIKEY	Да	Ваш API-ключ, обеспечивает доступ к оплаченным услугам. API-ключ следует хранить в тайне
SERVICE	См. список сервисов в левом меню	Да	Сервис, номер для которого необходимо получить
OPERATOR	Принимаемые параметры зависят от конкретной страны, для уточнения обратите внимание на левое меню	Нет	Сотовый оператор номер которого необходимо получить
COUNTRY	См. список стран в левом меню	Нет	Страна номер которой необходимо получить
MAXPRICE	Числовое значение	Нет	Максимальная цена, за которую вы готовы купить номер по Free Price
CURRENCY	643, 840	Нет	С какого баланса будет списана стоимость номера.
Ответы сервиса
Ответ сервера	Пример	Описание
NO_NUMBERS	NO_NUMBERS	Нет номеров с заданными параметрами, попробуйте позже, или поменяйте оператора, страну.
NO_BALANCE	NO_BALANCE	Закончились деньги на API-ключе
API_KEY_NOT_VALID	API_KEY_NOT_VALID	Невалидный статус API-ключа
WRONG_SERVICE	WRONG_SERVICE	Не верный идентификатор сервиса
ACCESS_NUMBER:ID:NUMBER	ACCESS_NUMBER:234242:79123456789	Получили номер, ID активации - ID, сам номер с кодом страны - NUMBER
Возможные ошибки
Ответ сервера	Описание
BAD_ACTION	Общее неправильное формирование запросаО
BAD_SERVICE	некорректное наименование сервиса
BAD_KEY	Неверный API-ключ
ERROR_SQL	Ошибка базы SQL-сервера
BAD_CURRENCY	Неверное значение currency
Изменить статус
https://smshub.org/stubs/handler_api.php?api_key=APIKEY&action=setStatus&status=STATUS&id=ID
Входные параметры
Параметр	Принимаемые значения	Обязательность	Описание
APIKEY	APIKEY	Да	Ваш API-ключ, обеспечивает доступ к оплаченным услугам. API-ключ следует хранить в тайне
ID	Числовое значение	Да	ID активации, полученное при запросе номера
STATUS	1 - смс на номер отправлено, 3 - необходимо повторно смс, 6 - активация успешно завершена, 8 - отменить активацию	Да	Статус который необходимо передать активации
Какой статус когда отправлять?

Простая логика взаимодействия с API

Сразу после получения номера доступны следующие действия:
8 - Отменить активацию
1 - Сообщить, что SMS отправлена (необязательно)
Для активации со статусом 1:
8 - Отменить активацию
Сразу после получения кода:
3 - Запросить еще одну смс
6 - Подтвердить SMS-код и завершить активацию
Для активации со статусом 3:
6 - Подтвердить SMS-код и завершить активацию
Выходные данные
Ответ сервера	Описание
ACCESS_READY	Готовность ожидания смс
ACCESS_RETRY_GET	Ожидаем новое смс
ACCESS_ACTIVATION	Активация успешно завершена
ACCESS_CANCEL	Активация отменена
Возможные ошибки
Ответ сервера	Описание
BAD_ACTION	Общее неправильное формирование запроса
BAD_SERVICE	некорректное наименование сервиса
BAD_KEY	Неверный API-ключ
NO_ACTIVATION	id активации не существует
ERROR_SQL	Ошибка базы SQL-сервера, обратитесь к администратору
Получить статус
https://smshub.org/stubs/handler_api.php?api_key=APIKEY&action=getStatus&id=ID
Входные параметры
Параметр	Принимаемые значения	Обязательность	Описание
APIKEY	APIKEY	Да	Ваш API-ключ, обеспечивает доступ к оплаченным услугам. API-ключ следует хранить в тайне
ID	Числовое значение	Да	ID активации, полученное при запросе номера
Выходные данные
Ответ сервера	Описание
STATUS_WAIT_CODE	Ожидаем прихода смс
STATUS_WAIT_RETRY:LASTCODE	Ожидаем еще одно смс, LASTCODE - последнее полученное смс
STATUS_CANCEL	активация отменена
STATUS_OK:CODE	Код получен (где CODE - код активации)
Возможные ошибки
Ответ сервера	Описание
BAD_ACTION	Общее неправильное формирование запроса
BAD_KEY	Неверный API-ключ
NO_ACTIVATION	id активации не существует
ERROR_SQL	Ошибка базы SQL-сервера, обратитесь к администратору
Запросить все цены
https://smshub.org/stubs/handler_api.php?api_key=APIKEY&action=getPrices&service=SERVICE&country=COUNTRY&currency=CURRENCY
Входные параметры
Параметр	Принимаемые значения	Обязательность	Описание
APIKEY	APIKEY	Да	Ваш API-ключ, обеспечивает доступ к оплаченным услугам. API-ключ следует хранить в тайне
SERVICE	См. список сервисов в левом меню	Нет	Сервис, номер для которого необходимо получить
COUNTRY	См. список стран в левом меню	Нет	Страна номера
CURRENCY	643, 840	Нет	Если передано - метод вернет стоимость в соответствующей валюте.
Выходные данные
Ответ сервера	Описание
JSON ответ	Ответ в формате { "Страна": { "Сервис": { "Цена": Количество}}}
Возможные ошибки
Ответ сервера	Описание
BAD_CURRENCY	Неверное значение currency
Изменить валюту по умолчанию
https://smshub.org/stubs/handler_api.php?api_key=APIKEY&action=updateApiCurrency&&currency=CURRENCY
Входные параметры
Параметр	Принимаемые значения	Обязательность	Описание
APIKEY	APIKEY	Да	Ваш API-ключ, обеспечивает доступ к оплаченным услугам. API-ключ следует хранить в тайне
CURRENCY	643, 840	Да	Значение валюты которое будет установлено по умолчанию для запросов по API.
Выходные данные
Ответ сервера	Описание
JSON ответ	Ответ в формате {"status":"success"}
Возможные ошибки
Ответ сервера	Описание
BAD_CURRENCY	Неверное значение currency
CURRENCY_CHANGE_UNAVAILABLE	Изменение валюты недоступно