Руководство
Введение
Боковая панель слева содержит ссылки на соответствующие разделы:
- Имя пользователя - ссылки на личный профиль.
- Панель управления - просмотр текущего статуса в виде диаграмм и графиков.
- Приложения - управление приложением.
- Коды разблокировки - автоматически сгенерированные или загруженные вами коды разблокировки.
- Платежи - история входящих платежей пользователей.
- Руководство - текущее руководство пользователя.
Панель управления
Вы можете установить общие фильтры для всех виджетов на панели управления:
- Валюта - валюта, в которую будут конвертированы входящие и исходящие суммы на панели управления.
- Период - период времени, за который данные отображаются в диаграммах и таблицах на панели управления. Определяет интервал, в течение которого анализируется и отображается информация и статистика о платежах, приложениях и других параметрах.
Баланс
Баланс включает следующие суммы:
- Валовая сумма - общая сумма всех пользовательских платежей за выбранный период, за исключением комиссий платежных систем и PayToUse.
- Чистая сумма - общая сумма всех платежей за выбранный период за вычетом комиссий платежных систем и PayToUse.
- Ожидаемая сумма - общая сумма всех платежей за указанный период за вычетом комиссий платежных систем и PayToUse, ожидающая вывод на счет разработчика. Платеж становится доступным для вывода через 7 дней после его проведения.
- Доступная сумма - общая сумма всех платежей за все время за вычетом комиссий платежных систем и PayToUse, доступная для вывода на счет разработчика.
Платежи
Виджет «Платежи» включает таблицу платежей, сгруппированных по приложениям за выбранный период.
Поля таблицы:
- Приложение - приложение. В таблице отображаются только те приложения, для которых были совершены платежи за выбранный период.
- Платежи - количество платежей.
- Валовая сумма - общая сумма всех пользовательских платежей за выбранный период, за исключением комиссий платежных систем и PayToUse.
- Чистая сумма - общая сумма всех платежей за выбранный период за вычетом комиссий платежных систем и PayToUse.
График показывает динамику значений Чистая сумма и Валовая сумма по дням.
Новые пользователи
График новых пользователей показывает два значения по дням в динамике:
- Новые пользователи - количество новых вызовов API. Доступ к API записывается только в случае передачи параметра device - уникального идентификатора устройства - при отправке запроса к API. Этот параметр должен быть действительно уникальным для устройства. (см. Отправка запроса)
- Платежи - количество платежей за тот же период за день.
Конверсия
Метрика Conversion относится к оценке эффективности ваших продаж для преобразования Новые пользователи в Платежи.
График показывает соотношение количества Платежи к количеству Новые пользователи в процентах.
Приложения
При переходе в этот раздел открывается список ваших приложений.
Список столбцов в таблице приложений:
- # - уникальный идентификатор приложения. Используется при проверке кода приложения или отображении формы оплаты.
- Название - название приложения. Название отображается только вам в отчетах и панели управления. Нажав на название приложения, вы откроете страницу редактирования приложения.
- Статус - текущий статус приложения. Может быть:
- Создано - Приложение было только что создано, еще не настроено.
- Опубликовано - приложение работает.
- Создано - дата создания приложения.
- Дополнительные кнопки управления:
- Удалить - удалить приложение из списка.
Создание или редактирование приложения
Для принятия платежей необходимо последовательно заполнить все необходимые данные приложения и активировать его.
Кнопка создания нового приложения расположена в заголовке списка приложений.
Приложение
Доступные поля при создании приложения:
- Название - название приложения, которое видите только вы в отчетах или на панели управления. Название будет отображаться в заголовке страницы сохраненного приложения. Пока приложение не сохранено, вместо названия отображается "Новое приложение". Поле обязательно к заполнению.
- Контактный email - адрес электронной почты, на который будут отправляться копии сообщений, отправленных пользователям. Этот адрес также указан в поле "Ответить" и используется для ответа пользователю на полученное письмо с кодом. Это поле обязательно для заполнения. По умолчанию оно заполняется значением из профиля разработчика. Значение можно изменить на другое.
- Тип приложения - тип приложения. Если выбран тип приложения “Группа”, будет отображен список приложений для группировки. В списке доступны только отдельные приложения, для которых генерируются коды разблокировки.
- Разрешить обратную связь по оплате - добавляет поле в платежную форму для ввода свободного текста пользователем. Обратная связь добавляется в копию электронного письма разработчику. Обратную связь также можно увидеть в деталях платежа.
Начните вводить изменяемые значения, и появится кнопка Сохранить. Кнопка Сохранить позволяет сохранить ваши изменения, не переходя на следующую страницу. Кнопка Далее сохраняет изменения и переходит на следующую страницу. Вы всегда можете вернуться, чтобы внести изменения позже.
В заголовке страницы доступны только сохраненные страницы приложений для навигации. Вы можете нажать Далее или перейти к разделу в заголовке страницы.
Описание
Выберите язык из списка и нажмите Добавить.
Появится вкладка с локализованными текстами приложения для выбранного языка.
Доступные языки:
- Немецкий
- Английский
- Французский
- Испанский
- Русский
- Китайский упрощенный
Поля в описании используются для отображения информации на форме оплаты и в ответном сообщении пользователю:
- Название - название приложения для выбранного языка. Оно отображается на форме оплаты и в уведомлении об оплате. По умолчанию, при добавлении языка, вставляется название приложения. Вы можете установить разное название для каждого языка. Обязательное поле.
- Описание - краткое описание приложения. Отображается на форме оплаты под названием приложения. Опциональное поле. Можно оставить пустым, если вы не хотите, чтобы отображалось какое-либо описание.
- Ответ - дополнительная информация, которая будет отправлена пользователю в письме после успешной оплаты. Текст ответа добавляется в конце письма после стандартного ответа.
Должен быть добавлен хотя бы один язык для сохранения и перехода на следующую страницу.
Язык, отображаемый в платежной форме, определяется автоматически на основе предпочтений пользователя, указанных в настройках его браузера. Вы можете сохранить язык приложения для приложения.
Начните вводить или изменять значения, и кнопка “Сохранить” появится. Кнопка “Сохранить” позволяет сохранить ваши изменения без перехода на следующую страницу. Кнопка “Далее” сохраняет изменения и переходит на следующую страницу. Вы всегда можете вернуться, чтобы внести изменения позже.
В заголовке страницы доступны только сохраненные страницы приложений для навигации. Вы можете нажать Далее или перейти к разделу в заголовке страницы.
Цена
На странице содержится список цен и поля, связанные с оплатой:
- Испытательный период - длительность пробного периода.
- Единица времени - единица времени пробного периода. Например, если вы указываете 7 дней, это означает, что через 7 дней после первого вызова API приложения придет ответ о том, что пробный период истек. Время первого вызова устройства сохраняется.
- Метод расчета цены - метод расчета цены из списка:
- Расчет цены в зависимости от срока - В форме оплаты пользователь указывает период активации кода, и цена автоматически рассчитывается согласно приведенной ниже таблице. Пользователь получает автоматически сгенерированный код разблокировки в ответном письме.
- Расчет срока в зависимости от цены - В форме оплаты пользователь выбирает цену из списка или вводит собственное значение цены, и период автоматически рассчитывается согласно таблице ниже. Пользователь получает автоматически сгенерированный код в ответном сообщении.
- Постоянный код - В форме оплаты пользователь выбирает цену из списка или вводит собственное значение цены. После оплаты он получает код из списка ниже, соответствующий выбранной цене, в ответном электронном письме.
- Пожертвование - В форме оплаты пользователь выбирает цену из списка или вводит собственное значение цены. Для приложений типа Donation код разблокировки не генерируется.
Цена устанавливается в долларах США. Минимальная цена - 1 доллар США.
Начните вводить или изменять значения, и кнопка “Сохранить” появится. Кнопка “Сохранить” позволяет сохранить ваши изменения без перехода на следующую страницу. Кнопка “Далее” сохраняет изменения и переходит на следующую страницу. Вы всегда можете вернуться, чтобы внести изменения позже.
В заголовке страницы доступны только сохраненные страницы приложений для навигации. Вы можете нажать Далее или перейти к разделу в заголовке страницы.
Предпросмотр
Эта страница устанавливает значения:
- Длина кода - длина сгенерированного кода, если применимо.
- Набор символов кода - набор символов, из которых генерируется код:
- Числовой код - код генерируется с использованием только цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Начальные нули могут быть включены в код. Начальные нули значимы при проверке кода.
- Буквенно-цифровой код - код генерируется с использованием символов 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, G, K, L, M, N, P, Q, R, S, T, U, V, X, Y, Z. Код генерируется и отправляется пользователю в верхнем регистре. Регистр символов не имеет значения при проверке кода.
- Ссылка для проверки кода - пример ссылки для проверки кода.
- Ссылка для оплаты - ссылка для оплаты. Вы можете скопировать ссылку и вставить её в описание приложения на веб-сайте, где опубликовано приложение. Параметры для передачи:
- app - уникальный идентификатор приложения. Обязательный параметр.
- amount - сумма, которая будет указана в поле цены при покупке. Цена по умолчанию игнорируется. Однако сумма не может быть меньше минимальной цены и не может быть ниже минимальной цены, установленной для приложения. Необязательный параметр.
Для начала приема платежей необходимо активировать приложение с помощью кнопки Запуск. Перед активацией приложения убедитесь, что все введенные данные верны. Сгенерированные приложением ключи не могут быть изменены.
Проверка кода
Проверка кода разблокировки приложения выполняется в 3 этапа:
- Написание и отправка запроса на проверку кода
- Проверки на стороне API
- Получение и обработка ответа API
Отправка запроса
Для проверки кода пользователь вашего приложения должен ввести его в поле в настройках приложения.
<properties>
<property id="UnlockCode" type="string"></property>
<property id="UnlockResult" type="string">Checking...</property>
...
<properties>
<settings>
<setting propertyKey="@Properties.UnlockCode" title="@Strings.UnlockCode">
<settingConfig type="alphaNumeric" maxLength="12"/>
</setting>
<setting propertyKey="@Properties.UnlockResult" title="@Strings.UnlockResult">
<settingConfig type="alphaNumeric" readonly="true"/>
</setting>
...
</settings>
Затем необходимо отправить запрос на сервер API Pay-to-use:
function onTemporalEvent() as Void {
var ds = System.getDeviceSettings();
return Toybox.Communications.makeWebRequest(
"https://api.pay-to-use.com", // URL API
{
"device" => ds.uniqueIdentifier, // уникальный идентификатор устройства
"app" => "6", // идентификатор вашего приложения
"model" => ds.partNumber, // артикул устройства
"code" => Application.Properties.getValue("UnlockCode") // значение кода разблокировки в вашем приложении
},
{
:method => Communications.HTTP_REQUEST_METHOD_POST,
:headers => { "Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON },
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
},
method(:onReceive)
);
}
Параметры запроса API:
- url - https://api.pay-to-use.com. Использование протокола HTTPS является обязательным.
- Тело запроса (передаваемые значения). Словарь ключей и значений:
- device - уникальный идентификатор устройства.
- app - уникальный идентификатор вашего приложения.
- model — идентификатор модели устройства. Необязательный параметр. Данные используются для отображения статистики по новым устройствам.
- code - код разблокировки, введенный пользователем в настройках вашего приложения.
- Параметры запроса:
- :method - API поддерживает методы запроса GET и POST.
- :headers - для метода POST параметры должны быть переданы в формате JSON.
- :responseType - ответ возвращается в формате JSON.
- responseCallback - ссылка на метод обратного вызова, который должен принимать два аргумента:
- responseCode - код заголовка ответа сервера.
- data - содержимое, если запрос выполнен успешно, или null.
Проверки на стороне API
Если параметры не передаются в API, то API возвращает заголовок HTTP/1.1 404 Not Found.
Если хотя бы один параметр передается в API, то API возвращает заголовок HTTP/1.1 200 OK.
Ответ сервера состоит из:
- response - код ответа
- msg - текстовое описание ответа
- expires - временная метка UNIXTIME (если применимо)
Выполняется проверка для убеждения в том, что переданный идентификатор приложения является корректным. Приложение должно находиться в статусе Опубликовано в момент оплаты. В случае ошибки возвращается код ответа 301.
Если передается уникальный идентификатор устройства, то происходит поиск и хранение его. Если при проверке или сохранении возникают ошибки, возвращается код ошибки 402. Если такой код возврата найден, немедленно напишите в службу поддержки на [email protected]
Если код передан, следующие шаги выполняются для приложений с методами расчета Расчет цены в зависимости от срока и Расчет срока в зависимости от цены:
- Если передается пустой код, он отсоединяется от уникального идентификатора устройства, определенного на предыдущих этапах.
- Если передается непустой код и он не активирован, код активируется в зависимости от условий цены, указанной при покупке кода, независимо от даты активации.
- Если код не был передан или переданный код не найден, возвращается код ошибки 201.
- Активированный код проверяется на соответствие устройству, и если уникальный идентификатор устройства, отличный от сохраненного, был передан во время активации, возвращается код ошибки 202.
- Если переданный код не имеет даты истечения срока действия и все предыдущие проверки пройдены, возвращается код 101.
- Если код имеет ограничение по времени, проводится проверка. Если ключ не истек, возвращается код 101. Если код истек, возвращается код ошибки 203.
- Для этого типа приложения требуется привязка кода к устройству. Если уникальный идентификатор устройства не был передан, возвращается код ошибки 304.
Для приложения с Постоянный код проверяется только доступность кода на момент покупки. Если код найден, возвращается код 101. Если код не найден, возвращается код ошибки 201.
Для приложения с методом расчета Пожертвование код не проверяется. Всегда возвращается код 101.
Если предыдущие проверки не пройдены, проверяется тестовый период. Если прошло больше времени с момента первого контакта с устройством, чем установлено в текущих настройках приложения, возвращается код ошибки 204. Если пробный период еще не истек, возвращается код ошибки 102.
Если передается только идентификатор приложения, но не передаются ни код разблокировки, ни уникальный идентификатор устройства, возвращается код ошибки 303.
Если возвращен ответ 500, вам следует написать в поддержку по адресу [email protected]
Ниже приведена таблица всех возвращаемых кодов:
| Возврат | Сообщение |
|---|---|
| 101 |
Методы расчета Расчет цены в зависимости от срока и Расчет срока в зависимости от цены:
|
| |
Постоянный код:
| |
Пожертвование:
| |
| 102 | |
| 201 | |
| 202 | |
| 203 | |
| 204 | |
| 301 | |
| 302 | |
| 303 | |
| 304 | |
| 401 | |
| 402 | |
| 500 | |
Проверка ответа
Затем вам следует проверить ответ от сервера API Pay-to-use:
function onReceive(responseHeader, data) as Void {
if (responseHeader == 200) { Toybox.Background.exit(data); }
}
Вы можете проверить все заголовки и коды, вы можете отображать свои собственные сообщения для удобства пользователя, но в самом простом виде проверка будет выглядеть примерно так:
function onBackgroundData(data) as Void {
if (data.hasKey("response")) {
if (data.hasKey("msg")) {
// Вы можете показать data["msg"] в поле свойств с именем "UnlockResult".
Application.Properties.setValue("UnlockResult", data["msg"]);
}
if (data["response"].toString().substring(0, 1).equals("2")) {
// Проверка кода не удалась
// Платные функции НЕ доступны
...
} else {
// Проверка кода прошла успешно или ошибка на вашей стороне или на стороне API
// Платные функции доступны
...
}
}
}Коды разблокировки
При переходе в этот раздел откроется список кодов разблокировки.
Список разблокировочных кодов
Вы можете искать по полю email или коду в верхней строке поиска. Найденные коды будут отображаться в списке. Вы можете использовать всю или часть email или кода в качестве критерия поиска. Совпадения будут выделены цветом. Поиск и фильтры работают одновременно и не исключают друг друга.
Последний использованный фильтр сохраняется для пользователя. То есть, при следующем входе на страницу, последний использованный фильтр будет применен автоматически. Фильтры доступны для списка кодов разблокировки:
- Колонки - выберите столбцы таблицы для отображения в списке кодов разблокировки.
- Приложение - отображать только коды разблокировки для выбранных приложений.
- Статус - отображать только коды разблокировки, которые находятся в выбранных статусах.
Список столбцов в таблице кодов разблокировки:
- Приложение - ваше приложение. Вы можете перейти по ссылке для редактирования его настроек.
- Код - код разблокировки.
- Email - адрес электронной почты, связанный с регистрацией кода разблокировки. Этот адрес используется для поиска клиентских кодов разблокировки в разделе Мои покупки на сайте. Этот раздел доступен пользователям.
- Срок - период действия отправленного кода (указан в настройках приложения). Период действия установлен для кода в соответствии с условиями настроек приложения на момент его создания.
- Статус - статус кода разблокировки. (см. Статус кода разблокировки)
- Создано - дата создания кода разблокировки.
- Активирован - дата активации кода. Устанавливается в момент, когда данное устройство пользователя впервые связывается с сервисом PayToUse API и отправляет этот код. Статус кода меняется на Активирован. Только неактивный код может быть активирован. Если активный код отправляется устройством с другим ID, API возвращает ошибку 202. Только одно устройство может быть связано с одним кодом.
- Истечение срока - дата истечения срока действия кода. Устанавливается для кодов с ограниченным сроком действия при активации. Для кодов с неограниченным сроком действия дата остается пустой.
- Удален - дата удаления кода. При удалении статус кода устанавливается на Неизвестно.
- Платеж № - уникальный порядковый номер платежа. Вы можете нажать на ссылку, чтобы посмотреть детали платежа.
- Кнопки для действий с кодами разблокировки. Например, удаление.
Статус кода разблокировки
В течение своего жизненного цикла код разблокировки проходит различные состояния, которые можно отслеживать по статусу кода.
| Статус | Описание |
|---|---|
| Доступно | Статус присваивается коду разблокировки, для которого не были выполнены никакие действия. Или если связь с устройством для кода была сброшена. |
| Активирован | Статус устанавливается для кода с установленной датой активации. Дата активации устанавливается, когда устройство успешно обращается к сервису PayToUse API впервые. Также при активации кода устанавливается дата истечения срока действия кода. |
| Истек | Статус устанавливается для истекшего кода. Отвязка кода от устройства не сбрасывает дату истечения срока действия кода. Проверка кода с этим статусом вернет ошибку 203. (см. Проверки на стороне API) |
| Неизвестно | Статус устанавливается при удалении кода. Проверка кода с этим статусом вернет ошибку 201. (см. Проверки на стороне API) |
Платежи
При переходе в этот раздел откроется список платежей пользователей.
Для приема платежей используются следующие платежные системы:
После учета комиссии платежной системы PayToUse взимает комиссию в размере 13%. Мы постоянно работаем над снижением комиссий.
Если возникают споры или возвраты средств в системе оплаты, штрафы системы оплаты выписываются разработчику заново. Поэтому следует не допускать таких ситуаций. Комиссия PayToUse не взимается в спорных ситуациях.
Список платежей
Вы можете искать по электронной почте или отправленному коду в верхнем поисковом поле. Найденные платежи будут отображены в списке. Вы можете использовать весь или часть адреса электронной почты или отправленного кода в качестве критерия поиска. Совпадения будут подсвечены цветом. Поиск и фильтры работают одновременно и не исключают друг друга.
Последний использованный фильтр сохраняется для пользователя. То есть, при следующем входе на страницу последний использованный фильтр будет применен автоматически. Для списка платежей доступны следующие фильтры:
- Колонки - выберите столбцы таблицы для отображения в списке платежей.
- Приложение - отображение платежей только для выбранных приложений.
- Система - отображение платежей только из выбранных платежных систем.
- Статус - отображение платежей только с выбранными статусами.
Список столбцов в таблице платежей:
- Приложение - ваше приложение. Вы можете перейти по ссылке для редактирования его настроек.
- # - уникальный порядковый номер платежа. Он присваивается платежу автоматически, когда пользователь переходит от формы оплаты на страницу оплаты в платежной системе. Вы можете нажать на ссылку, чтобы просмотреть детали платежа.
- Комментарии - сообщение от пользователя, введенное в форме оплаты.
- Система - платежная система, выбранная пользователем.
- Статус - статус платежа. (см. Статус платежа)
- Email - электронная почта пользователя, указанная в форме оплаты.
- Срок - период действия отправленного кода (указанный в настройках приложения).
- Создано - дата создания платежа.
- Сумма счета - сумма платежа, взимаемая с пользователя. Указывается в форме оплаты в зависимости от настроек приложения.
- Дата платежа - дата платежа.
- Сумма платежа - сумма платежа, подтвержденная платежной системой.
- Отправленный код - код, отправленный пользователю.
- Доступная сумма - доступная сумма для вывода.
- Сумма выплат - сумма снятых средств для платежа.
Изменения в платеже невозможны.
Статус платежа
В течение своего жизненного цикла платеж проходит через различные стадии, которые можно отслеживать по статусу платежа.
| Статус | Описание |
|---|---|
| Неполный | Статус назначается платежам, для которых не было выполнено никаких действий. Платеж создается сразу, как только пользователь переходит от формы платежа к форме платежной системы. Платежу присваивается уникальный серийный номер, а также основные атрибуты платежа: сумма, платежная система, дата. |
| Успешно | Статус назначается платежам, которые получили положительный ответ от платежной системы. Следующим шагом является отправка электронного письма пользователю, содержащего сгенерированный код или другие данные в зависимости от настроек приложения. Если платеж остается в этом статусе, следует обратить особое внимание, так как последующие действия не были выполнены. |
| Ошибка | Статус назначается платежам, для которых получен отрицательный ответ от платежной системы. Последующие шаги не выполняются. Необходимо обратить особое внимание на такие платежи, так как статус на стороне платежной системы может быть обработан с задержкой. |
| Ожидание | Статус назначается платежам, для которых получен положительный ответ от платежной системы, и все последующие шаги были успешно завершены. Вывод средств для платежей с этим статусом недоступен. Платежи автоматически переходят в следующий статус через 7 дней. |
| Доступно | Вывод средств доступен для платежей в этом статусе. |
| Отправка | Статус включается для платежей, включенных в следующий вывод. Если вывод отменен или отклонен, статус платежа возвращается в Доступно. |
| Отправлено | Статус активирован для платежей, по которым производится вывод. Ожидается подтверждение получения средств. |
| Завершено | Статус включен для платежей с успешным выводом средств. Вы можете установить статус вручную, подтвердив вывод в соответствующем разделе. Также статус автоматически изменяется через 14 дней после вывода средств. |
| Возвращено | Платежи, для которых был выдан возврат, переводятся в этот статус. При выполнении возврата взимается комиссия за возврат. Комиссия удерживается из суммы вывода. |
Вывод средств
При переходе в этот раздел откроется список ваших выводов.
Список выводов средств
Последний использованный фильтр сохраняется для пользователя. Таким образом, при следующем входе на страницу будет автоматически применен последний использованный фильтр. Для списка выводов доступны следующие фильтры:
- Колонки - отображение только выбранных столбцов в списке выводов.
- Статус - отображение только выводов, находящихся в выбранных статусах.
Список столбцов в таблице выводов:
- # - уникальный порядковый номер вывода. Он присваивается выводу автоматически при сохранении. Вы можете щелкнуть по ссылке, чтобы посмотреть подробности вывода.
- Статус - статус вывода. (см. Статус вывода)
- Создано - дата запроса вывода.
- Сумма - сумма вывода.
- Вывод средств - дата отправки вывода.
- Кнопки для действий с выводами. Например, подтверждение.
Вы можете подтвердить вывод, когда он находится в статусе Отправлено.
Статус вывода
В течение своего жизненного цикла вывод проходит через различные состояния, которые можно отслеживать по статусу вывода.
| Статус | Описание |
|---|---|
| Ожидание | Статус назначается выводам при создании, для которых не было выполнено никаких действий. |
| Отменено | Статус назначается отмененным выводам. Отмены могут происходить по различным причинам. Например, метод получения средств не указан. Все платежи из этого вывода переходят в статус Доступно и снова доступны для вывода. |
| Отправлено | Статус устанавливается для вывода средств при его отправке. |
| Завершено | Статус устанавливается для ручного вывода, когда разработчик получает его для подтверждения получения. Или автоматически через 14 дней после отправки. |
| Отклонено | Статус устанавливается для вывода, когда банк или платежная система возвращает средства после отправки. Все платежи из этого вывода переходят в статус Доступно и снова доступны для вывода. |
API
Обзор
API PayToUse выполняет следующие функции:
- Проверяет статус активации кода разблокировки и активирует его при необходимости.
- Получает данные о уровне глюкозы в крови из приложения NightScout.
- Получает текущие данные о погоде для указанного местоположения.
Вся информация может быть запрашиваемой и возвращаемой в одном запросе.
Конечные точки API
Вы можете использовать один из следующих конечных точек:
- https://api.pay-to-use.com
- https://api.p2u.io
Обе конечные точки обрабатывают запросы GET и POST.
Параметры запроса
- device: строка (обязательный) — уникальный идентификатор устройства
- app: целое число (обязательный) — ваш ID приложения
- model: строка (необязательный) — код модели устройства, необходимый для сбора и отображения статистики для устройств, использующих приложение
- code: строка (необязательный) — код разблокировки
- bg: ассоциативный массив (необязательный) — данные для запроса уровня глюкозы в крови из приложения NightScout
- url: строка (необязательный) — адрес приложения NightScout
- weather: ассоциативный массив (необязательный) — данные для запроса текущей погоды
- appid: строка (необязательный) — ключ доступа к API погоды
- lat: число с плавающей запятой (необязательный) — широта
- lon: число с плавающей запятой (необязательный) — долгота
- provider: целое число (необязательный) — поставщик погодных данных
Список поддерживаемых поставщиков погодных данных
1. OpenWeatherMap
- Описание: OpenWeatherMap предоставляет глобальные данные о погоде, включая текущую погоду, исторические данные и 16-дневные прогнозы. С широким географическим охватом и частыми обновлениями, OpenWeatherMap является популярным выбором для приложений, требующих как текущей погоды, так и расширенных прогнозов.
- Предоставляемые данные: Температура, влажность, скорость ветра, качество воздуха, вероятность осадков и другие данные в реальном времени. Предоставляются как текущие данные, так и прогнозы, включая погодные данные по минутам для выбранных локаций.
- Выбор поставщика: Включите provider = 1 в раздел weather вашего запроса, чтобы выбрать OpenWeatherMap в качестве поставщика погоды.
- Примечания по использованию: Предлагает бесплатные и платные уровни с доступом к данным через аутентификацию по ключу API. Расширенные слои данных и премиум-функции доступны в платных планах.
- Документация API: Доступно здесь.
2. QWeather
- Описание: QWeather, также известен как HeWeather, предоставляет всесторонние данные о погоде, ориентированные на Китай, но также включает международные данные. Он предлагает подробную информацию, такую как текущая погода, прогнозы, данные о качестве воздуха и предупреждения.
- Предоставляемые данные: Текущая температура, влажность, индекс ультрафиолетового излучения, уровень загрязнения, ежедневные и почасовые прогнозы, а также предупреждения о неблагоприятных погодных условиях. Известен своими подробными данными о качестве воздуха и обновлениями в реальном времени о изменениях в погодных условиях.
- Выбор поставщика: Включите provider = 2 в раздел weather вашего запроса, чтобы выбрать QWeather в качестве поставщика погоды.
- Примечания по использованию: QWeather предоставляет доступ к API с бесплатными и платными уровнями. Бесплатный уровень предоставляет ограниченные данные, в то время как платные опции расширяют доступ к дополнительным данным и локациям.
- Документация API: Доступно здесь.
3. MET Weather (MET Norway)
- Описание: MET Weather API, предоставляемый MET Norway, дает доступ к различным открытым метеорологическим данным, включая прогнозы, исторические данные и специфические данные для Норвегии и северных регионов. Известен своей точностью и прозрачностью, MET Weather идеально подходит для приложений, нуждающихся в надежных данных о погоде.
- Предоставляемые данные: Текущие погодные условия, прогнозы, осадки, температура, данные о ветре и ультрафиолетовом индексе. MET Weather предоставляет специализированные данные для северных регионов, но также поддерживает глобальную информацию о погоде.
- Выбор поставщика: Включите provider = 3 в раздел weather вашего запроса, чтобы выбрать MET Weather в качестве поставщика погоды.
- Примечания по использованию: Все данные, предоставляемые MET Weather, доступны для использования бесплатно по лицензии Creative Commons, что позволяет использовать их как в некоммерческих, так и в коммерческих приложениях без затрат. MET Norway известна своими экологическими данными, что делает её надежным поставщиком, особенно в Европе.
- Документация API: Доступно здесь.
Пример запроса
function onTemporalEvent() as Void {
var ds = System.getDeviceSettings();
if (!ds.phoneConnected) { // Проверяет, что устройство подключено к телефону для отправки запроса
return;
}
var id = ds.uniqueIdentifier;
if (id == null) { // Проверяет, что устройству назначен уникальный идентификатор
return;
}
var request = {};
var lockCheck = Application.Storage.getValue("LastCodeCheckTimestamp");
if (lockCheck == null || lockCheck <= Time.now().value()) { // Отправляет код при необходимости
request.put("code", Application.Properties.getValue("UnlockCode"));
}
var ns_url = Application.Properties.getValue("NS");
if (!ns_url.equals("")) { // Отправляет URL приложения NightScout, если необходимо
request.put("bg", { "url" => ns_url });
}
var wP = Application.Properties.getValue("Weather");
if (wP != 0) { // Отправляет параметры запроса погоды, если необходимо
var lat = Application.Properties.getValue("latitude");
var lon = Application.Properties.getValue("longitude");
if (!lat.equals("") && !lon.equals("")) {
request.put("weather", {
"appid" => Application.Properties.getValue("appID"),
"lat" => lat,
"lon" => lon,
"provider" => wP
});
}
}
if (!request.isEmpty()) {
// Заполняет необходимые параметры запроса
request.put("device", id);
request.put("app", p2uAppID); // идентификатор вашего приложения
request.put("model", ds.partNumber);
Toybox.Communications.makeWebRequest(
"https://api.p2u.io", // Конечная точка API
request,
{
:method => 3, // Communications.HTTP_REQUEST_METHOD_POST
:headers => {
"Content-Type" => 1 // Communications.REQUEST_CONTENT_TYPE_JSON
},
:responseType => 0 // Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
},
method(:onReceive)
);
}
}
Ответ API
API возвращает объект JSON с информацией о статусе разблокировки, уровне глюкозы и погоде.
Параметры ответа
Результаты проверки кода разблокировки (если запрос был отправлен):
- response: целое число — код возврата
- msg: строка — сообщение о результате проверки
- expires: целое число — временная метка истечения срока действия кода в формате UNIXTIMESTAMP
- qr: array — QR код для проверки покупки или серийного номера, если применимо
Ответ приложения NightScout (если запрос был отправлен):
- bg: ассоциативный массив — отформатированный ответ от приложения NightScout
- value: целое число — уровень глюкозы в крови в мг/дл
- date: целое число — временная метка истечения срока действия кода в формате UNIXTIMESTAMP
- direction: строка — тренд изменения уровня глюкозы в крови
Ответ Weather API (если запрос был отправлен):
- weather: ассоциативный массив — отформатированный ответ от Weather API
- provider: целое число — идентификатор поставщика погодных данных
- weather: array — текущие погодные условия. Может возвращать одно или два значения; если два значения, они представляют дневные и ночные условия
- temp: число с плавающей запятой — текущая температура в Цельсиях
- feels_like: число с плавающей запятой — температура по ощущениям в Цельсиях
Внимание! Отсутствует для MET Norway - pressure: целое число — атмосферное давление в hPa
- humidity: целое число — влажность в %
- precipitation: целое число — вероятность осадков в %
Внимание! Отсутствует для MET Norway - wind: целое число — направление ветра в градусах
- wind_speed: число с плавающей запятой — скорость ветра в м/с
- temp_low: число с плавающей запятой — минимальная температура сегодня в Цельсиях
- temp_high: число с плавающей запятой — максимальная температура сегодня в Цельсиях
- sunrise_today: целое число — временная метка восхода солнца сегодня в формате UNIXTIMESTAMP
- sunset_today: целое число — временная метка захода солнца сегодня в формате UNIXTIMESTAMP
- sunrise_tomorrow: целое число — временная метка восхода солнца завтра в формате UNIXTIMESTAMP
- sunset_tomorrow: целое число — временная метка захода солнца завтра в формате UNIXTIMESTAMP
- aqi: ассоциативный массив — индекс качества воздуха
- level: целое число — уровень индекса качества воздуха
- value: целое число — значение индекса качества воздуха
Пример ответа
{
"response": 103,
"msg": "Free for beta tester",
"expires": 0,
"qr": [
"11111110111011010110101111111",
"10000010111001001101001000001",
"10111010101100110110101011101",
"10111010110101000001001011101",
"10111010000001010100001011101",
"10000010100110001101001000001",
"11111110101010101010101111111",
"00000000010010110111100000000",
"11001110000100100100100101111",
"11111100011011011010011111111",
"01111011100111111100101000001",
"01111100101100110111011011011",
"00110110101010100101110000010",
"11001000010001011000001011111",
"01101010001001110100000001101",
"10111101100010100101100110011",
"01010111111100110100100100010",
"10000100111011011000101111011",
"00000110110110110100100000101",
"00111100011100001100101100011",
"11110111110010100111111111001",
"00000000111001011101100010001",
"11111110010001011111101011101",
"10000010100010100111100010010",
"10111010101101100111111111001",
"10111010010010110000010000001",
"10111010001111111110000001111",
"10000010111101011111101101011",
"11111110100011011110110010010"
],
"bg": {
"value": -102,
"date": 1730546101,
"direction": ""
},
"weather": {
"provider": 1,
"weather": [
89
],
"temp": 0.27,
"feels_like": -3.14,
"pressure": 999,
"humidity": 78,
"precipitation": 0,
"wind": 120,
"wind_speed": 2.96,
"temp_low": -3.8,
"temp_high": 0.27,
"sunrise_today": 1730527969,
"sunset_today": 1730551770,
"sunrise_tomorrow": 1730614492,
"sunset_tomorrow": 1730638051,
"aqi": {
"level": 1,
"value": 38
}
}
}
Примечания
- Запросы с bg требуют подключения к приложению NightScout.
- Для каждого запроса с code API автоматически проверяет статус кода и активирует его, если он неактивен.
- Обратите внимание, что параметры API могут обновляться или изменяться со временем для улучшения функциональности, совместимости и безопасности. Рекомендуется периодически проверять документацию API на предмет изменений, которые могут повлиять на интеграцию или использование.
Garmin
Для подробного описания функций и констант погоды Garmin SDK, обратитесь к этой ссылке. Вы можете сохранять значения, полученные через API, или результаты функций Garmin SDK, в зависимости от выбранного поставщика погоды, для обеспечения согласованности отображаемых значений на экране.
| ID | Описание | День | Ночь |
|---|---|---|---|
| 0 | Очистить |
0x53 |
0x54 |
| 40 | Ясно | ||
| 23 | В основном ясно |
0x55 |
0x56 |
| 1 | Частично облачно |
0x57 |
0x58 |
| 22 | Частично ясно | ||
| 2 | В основном облачно |
0x59 |
|
| 52 | Тонкие облака | ||
| 20 | Облачно |
0x5A |
|
| 45 | Облачно, вероятность дождя | ||
| 31 | Мелкий дождь |
0x3E |
|
| 14 | Легкий дождь |
0x42 |
|
| 24 | Легкие дожди | ||
| 3 | Дождь |
0x43 |
|
| 25 | Дожди | ||
| 27 | Вероятность дождей |
0x46 |
|
| 11 | Разрозненные дожди | ||
| 15 | Сильный дождь | ||
| 26 | Сильные дожди | ||
| 28 | Вероятность грозы |
0x36 |
0x37 |
| 12 | Разрозненные грозы |
0x38 |
|
| 6 | Гроза |
0x39 |
|
| 8 | Туман |
0x4E |
|
| 9 | Пасмурно | ||
| 29 | Туман | ||
| 39 | Легкий туман | ||
| 30 | Пыль |
0x4F |
|
| 35 | Песок | ||
| 33 | Дым | ||
| 38 | Вулканический пепел | ||
| 37 | Песчаная буря | ||
| 13 | Неизвестные осадки | ||
| 5 | Ветреная |
0x52 |
|
| 36 | Штормовой порыв ветра | ||
| 48 | Легкий снегопад | ||
| 32 | Торнадо |
0x50 |
|
| 41 | Ураган | ||
| 42 | Тропический шторм | ||
| 50 | Дождь с ледяными каплями |
0x45 |
|
| 7 | Смешанная зимняя погода | ||
| 18 | Легкий дождь со снегом | ||
| 19 | Сильный дождь со снегом | ||
| 21 | Дождь со снегом | ||
| 49 | Ледяной дождь | ||
| 44 | Вероятность дождя со снегом | ||
| 47 | Облачная вероятность дождя со снегом | ||
| 34 | Лед | ||
| 51 | Ледяной снег | ||
| 43 | Вероятность снега |
0x4C |
0x4D |
| 16 | Легкий снег | ||
| 46 | Облачная вероятность снега |
0x4A |
|
| 4 | Снег | ||
| 17 | Сильный снег |
0x4B |
|
| 10 | Град |
0x3A |
|
Open Weather Map
Посмотрите набор иконок для OpenWeatherMap в качестве примера здесь.
| ID | Описание | День | Ночь |
|---|---|---|---|
| 2xx | Гроза | ||
| 200 | Гроза с легким дождем |
0x36 |
0x37 |
| 201 | Гроза с дождем |
0x38 |
|
| 202 | Гроза с сильным дождем | ||
| 210 | Легкая гроза | ||
| 211 | Гроза |
0x39 |
|
| 212 | Сильная гроза |
0x3B |
|
| 221 | Неровная гроза | ||
| 230 | Гроза с легким моросящим дождем |
0x3A |
|
| 231 | Гроза с моросящим дождем | ||
| 232 | Гроза с сильным моросящим дождем | ||
| 3xx | Мелкий дождь | ||
| 300 | Легкий моросящий дождь |
0x3C |
0x3D |
| 301 | Мелкий дождь |
0x3E |
|
| 302 | Сильный моросящий дождь |
0x3F |
|
| 310 | Легкий моросящий дождь с дождем |
0x40 |
|
| 311 | Моросящий дождь | ||
| 312 | Сильный моросящий дождь с дождем |
0x41 |
|
| 313 | Ливневый дождь и моросящий дождь | ||
| 314 | Сильный ливневый дождь и моросящий дождь | ||
| 321 | Ливневой дождь с моросящим дождем | ||
| 5xx | Дождь | ||
| 500 | Легкий дождь |
0x42 |
|
| 501 | Умеренный дождь |
0x43 |
|
| 502 | Сильный дождь |
0x44 |
|
| 503 | Очень сильный дождь | ||
| 504 | Экстремальный дождь | ||
| 511 | Ледяной дождь |
0x45 |
|
| 520 | Легкий ливневой дождь |
0x46 |
|
| 521 | Ливневой дождь | ||
| 522 | Сильный ливневой дождь | ||
| 531 | Неровный ливневой дождь | ||
| 6xx | Снег | ||
| 600 | Легкий снег |
0x4C |
0x4D |
| 601 | Снег |
0x4A |
|
| 602 | Сильный снег | ||
| 611 | Дождь с ледяными каплями |
0x45 |
|
| 612 | Легкий дождь с ледяными каплями | ||
| 613 | Дождь с ледяными каплями | ||
| 615 | Легкий дождь и снег | ||
| 616 | Дождь и снег | ||
| 620 | Легкий снеговой дождь |
0x4B |
|
| 621 | Снеговой дождь | ||
| 622 | Сильный снеговой дождь | ||
| 7xx | Атмосфера | ||
| 701 | Туман |
0x4E |
|
| 711 | Дым |
0x4F |
|
| 721 | Легкий туман | ||
| 731 | Песчаные/пыльные вихри | ||
| 741 | Туман | ||
| 751 | Песок |
0x4F |
|
| 761 | Пыль | ||
| 762 | Вулканический пепел | ||
| 771 | Штормовые порывы ветра |
0x52 |
|
| 781 | Торнадо |
0x50 |
|
| 800 | Очистить | ||
| 800 | Ясное небо |
0x53 |
0x54 |
| 80x | Облака | ||
| 801 | Немного облаков 11-25% |
0x55 |
0x56 |
| 802 | Рассеянные облака 25-50% |
0x57 |
0x58 |
| 803 | Обрывистые облака 51-84% |
0x59 |
|
| 804 | Пасмурные облака 85-100% |
0x5A |
|
QWeather
Вы можете проверить оригинальный набор иконок погоды, кликнув здесь
| ID | Описание | День | Ночь |
|---|---|---|---|
| 302 | Гроза с дождем |
0x36 |
0x37 |
| 303 | Сильная гроза |
0x38 |
|
| 310 | Дождевой шторм |
0x39 |
|
| 317 | Дождевой шторм до сильного дождевого шторма | ||
| 304 | Град |
0x3A |
|
| 311 | Сильный дождевой шторм |
0x3B |
|
| 312 | Сильный дождевой шторм | ||
| 318 | Сильный дождевой шторм до чрезвычайно сильного | ||
| 309 | Моросящий дождь |
0x3C |
0x3D |
| 404 | Дождь с ледяными каплями |
0x3E |
|
| 305 | Легкий дождь |
0x42 |
|
| 314 | Легкий до умеренного дождя | ||
| 306 | Умеренный дождь |
0x43 |
|
| 315 | Умеренный до сильного дождя | ||
| 399 | Дождь | ||
| 308 | Экстремальный дождь |
0x44 |
|
| 316 | Сильный дождь до дождевого шторма | ||
| 313 | Замерзающий дождь |
0x45 |
|
| 405 | Дождь и снег | ||
| 300 | Ливневой дождь |
0x46 |
|
| 301 | Сильный ливневой дождь | ||
| 307 | Сильный дождь | ||
| 350 | Ливневой дождь | ||
| 351 | Сильный ливневой дождь | ||
| 400 | Легкий снег |
0x4C |
0x4D |
| 408 | Легкий до умеренного снега | ||
| 499 | Снег | ||
| 401 | Умеренный снег |
0x4A |
|
| 402 | Сильный снег | ||
| 409 | Умеренный до сильного снега | ||
| 410 | Сильный снег до снежной бури | ||
| 403 | Снежная буря |
0x4B |
|
| 406 | Ливневой дождь и снег | ||
| 407 | Снежный вихрь | ||
| 456 | Ливневой дождь и снег | ||
| 457 | Снежный вихрь | ||
| 503 | Песок |
0x4E |
|
| 504 | Пыль | ||
| 507 | Песчаная буря | ||
| 508 | Песчаная буря | ||
| 511 | Умеренный туман | ||
| 512 | Сильный туман | ||
| 513 | Чрезвычайный туман | ||
| 500 | Туман |
0x4F |
|
| 501 | Туман | ||
| 502 | Легкий туман | ||
| 509 | Плотный туман | ||
| 510 | Сильный туман | ||
| 514 | Сильный туман | ||
| 515 | Очень сильный туман | ||
| 100 | Солнечно |
0x53 |
0x54 |
| 150 | Очистить | ||
| 101 | Облачно |
0x55 |
0x56 |
| 151 | Облачно | ||
| 102 | Немного облаков |
0x57 |
0x58 |
| 152 | Немного облаков | ||
| 103 | Частично облачно |
0x59 |
|
| 153 | Частично облачно | ||
| 104 | Пасмурно |
0x5A |
|
MET Погода
Посмотрите набор иконок для MET Weather в качестве примера здесь.
| ID | Описание | День | Ночь |
|---|---|---|---|
| lightrainshowers | Легкие дожди |
0x36 |
0x37 |
| lightrainshowersandthunder | Легкие дожди и гром | ||
| rainshowersandthunder | Дожди и гром | ||
| heavyrainshowersandthunder | Сильные дожди и гром | ||
| heavyrainandthunder | Сильный дождь и гром |
0x38 |
|
| rainandthunder | Дождь и гром | ||
| lightrainandthunder | Легкий дождь и гром |
0x39 |
|
| heavysleetandthunder | Сильный дождь с ледяными каплями и гром |
0x3B |
|
| lightsleetandthunder | Легкий дождь с ледяными каплями и гром |
0x3A |
|
| lightssleetshowersandthunder | Легкие дожди с ледяными каплями и гром | ||
| sleetandthunder | Дождь с ледяными каплями и гром | ||
| lightsleetshowers | Легкие дожди с ледяными каплями |
0x3C |
0x3D |
| sleetshowers | Дожди с ледяными каплями | ||
| sleetshowersandthunder | Дожди с ледяными каплями и гром | ||
| heavysleetshowers | Сильные дожди с ледяными каплями | ||
| heavysleetshowersandthunder | Сильные дожди с ледяными каплями и гром | ||
| lightsleet | Легкий дождь с ледяными каплями |
0x3E |
|
| sleet | Дождь с ледяными каплями |
0x3F |
|
| heavysleet | Сильный дождь с ледяными каплями |
0x45 |
|
| lightrain | Легкий дождь |
0x42 |
|
| rain | Дождь |
0x43 |
|
| heavyrain | Сильный дождь |
0x44 |
|
| rainshowers | Дожди |
0x46 |
|
| heavyrainshowers | Сильные дожди | ||
| heavysnow | Сильный снег |
0x4B |
|
| heavysnowandthunder | Сильный снег и гром | ||
| snow | Снег | ||
| snowandthunder | Снег и гром | ||
| lightsnowshowers | Легкие дожди снега |
0x4C |
0x4D |
| lightssnowshowersandthunder | Легкие дожди снега и гром | ||
| snowshowers | Дожди снега | ||
| snowshowersandthunder | Дожди снега и гром | ||
| heavysnowshowers | Сильные дожди снега | ||
| heavysnowshowersandthunder | Сильные дожди снега и гром | ||
| lightsnow | Легкий снег |
0x4A |
|
| lightsnowandthunder | Легкий снег и гром | ||
| fog | Туман |
0x4F |
|
| clearsky | Ясное небо |
0x53 |
0x54 |
| fair | Ясно |
0x55 |
0x56 |
| partlycloudy | Частично облачно |
0x57 |
0x58 |
| cloudy | Облачно |
0x59 |
|