Руководство
Введение
Боковая панель слева содержит ссылки на соответствующие разделы:
- Имя пользователя - ссылки на личный профиль.
- Панель управления - просмотр текущего статуса в виде диаграмм и графиков.
- Приложения - управление приложением.
- Коды разблокировки - автоматически сгенерированные или загруженные вами коды разблокировки.
- Платежи - история входящих платежей пользователей.
- Руководство - текущее руководство пользователя.
Панель управления
Вы можете установить общие фильтры для всех виджетов на панели управления:
- Валюта - валюта, в которую будут конвертированы входящие и исходящие суммы на панели управления.
- Период - период времени, за который данные отображаются в диаграммах и таблицах на панели управления. Определяет интервал, в течение которого анализируется и отображается информация и статистика о платежах, приложениях и других параметрах.
Баланс
Баланс включает следующие суммы:
- Валовая сумма - общая сумма всех пользовательских платежей за выбранный период, за исключением комиссий платежных систем и 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, // device part number
"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. Using HTTPS is mandatory.
- Тело запроса (передаваемые значения). Словарь ключей и значений:
- device - уникальный идентификатор устройства.
- app - уникальный идентификатор вашего приложения.
- model - device model identifier. Optional parameter. Data is used to display statistics for new devices.
- 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
Overview
API PayToUse performs the following functions:
- Checks the activation status of an unlock code and activates it if necessary.
- Retrieves blood glucose data from the NightScout app.
- Retrieves current weather data for a specified location.
All information can be requested and returned in a single request.
API Endpoints
You can use one of the following endpoints:
- https://api.pay-to-use.com
- https://api.p2u.io
Both endpoints handle GET and POST requests.
Request Parameters
- device: string (required) — unique device identifier
- app: integer (required) — your Application ID
- model: string (optional) — device model code, needed for collecting and displaying statistics for devices using the app
- code: string (optional) — unlock code
- bg: associative array (optional) — data for requesting blood glucose levels from the NightScout app
- url: string (optional) — address of the NightScout app
- weather: associative array (optional) — data for requesting current weather
- appid: string (optional) — weather API access key
- lat: float (optional) — latitude
- lon: float (optional) — longitude
- provider: integer (optional) — weather provider
List of Supported Weather Providers
1. OpenWeatherMap
- Description: OpenWeatherMap provides global weather data, including real-time weather, historical data, and 16-day forecasts. With wide geographic coverage and frequent updates, OpenWeatherMap is a popular choice for applications requiring both current weather and extended forecasts.
- Data Provided: Real-time temperature, humidity, wind speed, air quality, precipitation probability, and more. Offers both current and forecast data, including minute-by-minute weather data for select locations.
- Provider Selection: Include provider = 1 in the weather section of your request to select OpenWeatherMap as the weather provider.
- Usage Notes: Offers free and paid tiers, with data accessible via API key authentication. Advanced data layers and premium features are available in paid plans.
- API Documentation: Available here.
2. QWeather
- Description: QWeather, also known as HeWeather, provides comprehensive weather data focused on China but includes international data as well. It offers extensive details such as real-time weather, forecasts, air quality information, and alerts.
- Data Provided: Current temperature, humidity, UV index, pollution levels, daily and hourly forecasts, as well as warnings for severe weather conditions. Known for its granular air quality data and its real-time updates on changing weather conditions.
- Provider Selection: Include provider = 2 in the weather section of your request to select QWeather as the weather provider.
- Usage Notes: QWeather offers API access with free and premium tiers. The free tier provides limited data, while premium options expand to cover additional data points and locations.
- API Documentation: Available here.
3. MET Weather (MET Norway)
- Description: The MET Weather API, provided by MET Norway, gives access to a variety of open meteorological data, including forecasts, historical data, and specific data for Norway and the Nordic regions. Known for its accuracy and transparency, MET Weather is ideal for applications in need of highly reliable weather data.
- Data Provided: Current weather conditions, forecasts, precipitation, temperature, wind data, and UV index. MET Weather offers specialized data for the Nordic regions but also supports global weather information.
- Provider Selection: Include provider = 3 in the weather section of your request to select MET Weather as the weather provider.
- Usage Notes: All data provided by MET Weather is freely available for use under a Creative Commons license, allowing both non-commercial and commercial applications without cost. MET Norway is renowned for its environmental data, making it a trusted provider, particularly in Europe.
- API Documentation: Available here.
Example Request
function onTemporalEvent() as Void {
var ds = System.getDeviceSettings();
if (!ds.phoneConnected) { // Checks that the device is connected to the phone for sending the request
return;
}
var id = ds.uniqueIdentifier;
if (id == null) { // Verifies that the device has been assigned a unique identifier
return;
}
var request = {};
var lockCheck = Application.Storage.getValue("LastCodeCheckTimestamp");
if (lockCheck == null || lockCheck <= Time.now().value()) { // Sends the code if necessary
request.put("code", Application.Properties.getValue("UnlockCode"));
}
var ns_url = Application.Properties.getValue("NS");
if (!ns_url.equals("")) { // Sends the NightScout app URL if needed
request.put("bg", { "url" => ns_url });
}
var wP = Application.Properties.getValue("Weather");
if (wP != 0) { // Sends weather request parameters if needed
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()) {
// Fills in the required request parameters
request.put("device", id);
request.put("app", p2uAppID); // идентификатор вашего приложения
request.put("model", ds.partNumber);
Toybox.Communications.makeWebRequest(
"https://api.p2u.io", // API Endpoint
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 Response
The API returns a JSON object with information on unlock status, glucose level, and weather.
Response Parameters
Unlock Code Verification Results (if a request was sent):
- response: integer — return code
- msg: string — message about the verification result
- expires: integer — expiration timestamp of the code in UNIXTIMESTAMP format
- qr: array — QR code for purchase or serial number verification, if applicable
NightScout App Response (if a request was sent):
- bg: associative array — formatted response from the NightScout app
- value: integer — blood glucose level in mg/dL
- date: integer — timestamp of the code expiration in UNIXTIMESTAMP format
- direction: string — trend in blood glucose level change
Weather API Response (if a request was sent):
- weather: associative array — formatted response from the Weather API
- provider: integer — weather provider identifier
- weather: array — current weather conditions. May return one or two values; if two values are returned, they represent day and night conditions
- temp: float — current temperature in Celsius
- feels_like: float — feels-like temperature in Celsius
- pressure: integer — atmospheric pressure in hPa
- humidity: integer — humidity in %
- precipitation: integer — precipitation probability in %
- wind: integer — wind direction in degrees
- wind_speed: float — wind speed in m/s
- temp_low: float — today’s low temperature in Celsius
- temp_high: float — today’s high temperature in Celsius
- sunrise_today: integer — today’s sunrise timestamp in UNIXTIMESTAMP format
- sunset_today: integer — today’s sunset timestamp in UNIXTIMESTAMP format
- sunrise_tomorrow: integer — tomorrow’s sunrise timestamp in UNIXTIMESTAMP format
- sunset_tomorrow: integer — tomorrow’s sunset timestamp in UNIXTIMESTAMP format
- aqi: associative array — air quality index
- level: integer — air quality index level
- value: integer — air quality index value
Example Response
{
"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
}
}
}
Notes
- Requests with bg require a connection to the NightScout app.
- For every request with a code, the API automatically checks the code status and activates it if inactive.
- Please note that API parameters may be updated or modified over time to improve functionality, compatibility, and security. It is recommended to periodically review the API documentation for any changes that might affect integration or usage.
Garmin
Project-Id-Version: PayToUse
Report-Msgid-Bugs-To:
PO-Revision-Date: 2024-06-26 18:31+0300
Last-Translator: VeshchiyOleg
ID | Описание | Day | Night |
---|---|---|---|
0 | Очистить |
0x53 |
0x54 |
40 | Fair | ||
23 | Mostly clear |
0x55 |
0x56 |
1 | Partly cloudy |
0x57 |
0x58 |
22 | Partly clear | ||
2 | Mostly cloudy |
0x59 |
|
52 | Thin clouds | ||
20 | Cloudy |
0x5A |
|
45 | Cloudy chance of rain | ||
31 | Drizzle |
0x3E |
|
14 | Light rain |
0x42 |
|
24 | Light showers | ||
3 | Rain |
0x43 |
|
25 | Showers | ||
27 | Chance of showers |
0x46 |
|
11 | Scattered showers | ||
15 | Heavy rain | ||
26 | Heavy showers | ||
28 | Chance of thunderstorms |
0x36 |
0x37 |
12 | Scattered thunderstorms |
0x38 |
|
6 | Thunderstorms |
0x39 |
|
8 | Fog |
0x4E |
|
9 | Hazy | ||
29 | Mist | ||
39 | Haze | ||
30 | Dust |
0x4F |
|
35 | Sand | ||
33 | Smoke | ||
38 | Volcanic ash | ||
37 | Sandstorm | ||
13 | Unknown precipitation | ||
5 | Windy |
0x52 |
|
36 | Squall | ||
48 | Flurries | ||
32 | Tornado |
0x50 |
|
41 | Hurricane | ||
42 | Tropical storm | ||
50 | Sleet |
0x45 |
|
7 | Wintry mix | ||
18 | Light rain snow | ||
19 | Heavy rain snow | ||
21 | Rain snow | ||
49 | Freezing rain | ||
44 | Chance of rain snow | ||
47 | Cloudy chance of rain snow | ||
34 | Ice | ||
51 | Ice snow | ||
43 | Chance of snow |
0x4C |
0x4D |
16 | Light snow | ||
46 | Cloudy chance of snow |
0x4A |
|
4 | Snow | ||
17 | Heavy snow |
0x4B |
|
10 | Hail |
0x3A |
Open Weather Map
Project-Id-Version: PayToUse
Report-Msgid-Bugs-To:
PO-Revision-Date: 2024-06-26 18:31+0300
Last-Translator: VeshchiyOleg
ID | Описание | Day | Night |
---|---|---|---|
2xx | Thunderstorm | ||
200 | Thunderstorm with light rain |
0x36 |
0x37 |
201 | Thunderstorm with rain |
0x38 |
|
202 | Thunderstorm with heavy rain | ||
210 | Light thunderstorm | ||
211 | Thunderstorm |
0x39 |
|
212 | Heavy thunderstorm |
0x3B |
|
221 | Ragged thunderstorm | ||
230 | Thunderstorm with light drizzle |
0x3A |
|
231 | Thunderstorm with drizzle | ||
232 | Thunderstorm with heavy drizzle | ||
3xx | Drizzle | ||
300 | Light intensity drizzle |
0x3C |
0x3D |
301 | Drizzle |
0x3E |
|
302 | Heavy intensity drizzle |
0x3F |
|
310 | Light intensity drizzle rain |
0x40 |
|
311 | Drizzle rain | ||
312 | Heavy intensity drizzle rain |
0x41 |
|
313 | Shower rain and drizzle | ||
314 | Heavy shower rain and drizzle | ||
321 | Shower drizzle | ||
5xx | Rain | ||
500 | Light rain |
0x42 |
|
501 | Moderate rain |
0x43 |
|
502 | Heavy intensity rain |
0x44 |
|
503 | Very heavy rain | ||
504 | Extreme rain | ||
511 | Freezing rain |
0x45 |
|
520 | Light intensity shower rain |
0x46 |
|
521 | Shower rain | ||
522 | Heavy intensity shower rain | ||
531 | Ragged shower rain | ||
6xx | Snow | ||
600 | Light snow |
0x4C |
0x4D |
601 | Snow |
0x4A |
|
602 | Heavy snow | ||
611 | Sleet |
0x45 |
|
612 | Light shower sleet | ||
613 | Shower sleet | ||
615 | Light rain and snow | ||
616 | Rain and snow | ||
620 | Light shower snow |
0x4B |
|
621 | Shower snow | ||
622 | Heavy shower snow | ||
7xx | Atmosphere | ||
701 | Mist |
0x4E |
|
711 | Smoke |
0x4F |
|
721 | Haze | ||
731 | Sand/ dust whirls | ||
741 | Fog | ||
751 | Sand |
0x4F |
|
761 | Dust | ||
762 | Volcanic ash | ||
771 | Squalls |
0x52 |
|
781 | Tornado |
0x50 |
|
800 | Очистить | ||
800 | Clear sky |
0x53 |
0x54 |
80x | Clouds | ||
801 | Few clouds 11-25% |
0x55 |
0x56 |
802 | Scattered clouds 25-50% |
0x57 |
0x58 |
803 | Broken clouds 51-84% |
0x59 |
|
804 | Overcast clouds 85-100% |
0x5A |
QWeather
You can check out the original set of weather icons by clicking here
ID | Описание | Day | Night |
---|---|---|---|
302 | Thundershower |
0x36 |
0x37 |
303 | Heavy Thunderstorm |
0x38 |
|
310 | Rainstorm |
0x39 |
|
317 | Rainstorm to Heavy Rainstorm | ||
304 | Hail |
0x3A |
|
311 | Heavy Rainstorm |
0x3B |
|
312 | Severe Rainstorm | ||
318 | Heavy to Severe Rainstorm | ||
309 | Drizzle Rain |
0x3C |
0x3D |
404 | Sleet |
0x3E |
|
305 | Light Rain |
0x42 |
|
314 | Light to Moderate Rain | ||
306 | Moderate Rain |
0x43 |
|
315 | Moderate to Heavy Rain | ||
399 | Rain | ||
308 | Extreme Rain |
0x44 |
|
316 | Heavy Rain to Rainstorm | ||
313 | Freezing Rain |
0x45 |
|
405 | Rain and Snow | ||
300 | Shower Rain |
0x46 |
|
301 | Heavy Shower Rain | ||
307 | Heavy Rain | ||
350 | Shower Rain | ||
351 | Heavy Shower Rain | ||
400 | Light Snow |
0x4C |
0x4D |
408 | Light to Moderate Snow | ||
499 | Snow | ||
401 | Moderate Snow |
0x4A |
|
402 | Heavy Snow | ||
409 | Moderate to Heavy Snow | ||
410 | Heavy Snow to Snowstorm | ||
403 | Snowstorm |
0x4B |
|
406 | Shower Rain and Snow | ||
407 | Snow Flurry | ||
456 | Shower Rain and Snow | ||
457 | Snow Flurry | ||
503 | Sand |
0x4E |
|
504 | Dust | ||
507 | Duststorm | ||
508 | Sandstorm | ||
511 | Moderate Haze | ||
512 | Heavy Haze | ||
513 | Severe Haze | ||
500 | Mist |
0x4F |
|
501 | Fog | ||
502 | Haze | ||
509 | Dense Fog | ||
510 | Strong Fog | ||
514 | Heavy Fog | ||
515 | Extra Heavy Fog | ||
100 | Sunny |
0x53 |
0x54 |
150 | Очистить | ||
101 | Cloudy |
0x55 |
0x56 |
151 | Cloudy | ||
102 | Few Clouds |
0x57 |
0x58 |
152 | Few Clouds | ||
103 | Partly Cloudy |
0x59 |
|
153 | Partly Cloudy | ||
104 | Overcast |
0x5A |
MET Weather
Project-Id-Version: PayToUse
Report-Msgid-Bugs-To:
PO-Revision-Date: 2024-06-26 18:31+0300
Last-Translator: VeshchiyOleg
ID | Описание | Day | Night |
---|---|---|---|
lightrainshowers | Light rain showers |
0x36 |
0x37 |
lightrainshowersandthunder | Light rain showers and thunder | ||
rainshowersandthunder | Rain showers and thunder | ||
heavyrainshowersandthunder | Heavy rain showers and thunder | ||
heavyrainandthunder | Heavy rain and thunder |
0x38 |
|
rainandthunder | Rain and thunder | ||
lightrainandthunder | Light rain and thunder |
0x39 |
|
heavysleetandthunder | Heavy sleet and thunder |
0x3B |
|
lightsleetandthunder | Light sleet and thunder |
0x3A |
|
lightssleetshowersandthunder | Light sleet showers and thunder | ||
sleetandthunder | Sleet and thunder | ||
lightsleetshowers | Light sleet showers |
0x3C |
0x3D |
sleetshowers | Sleet showers | ||
sleetshowersandthunder | Sleet showers and thunder | ||
heavysleetshowers | Heavy sleet showers | ||
heavysleetshowersandthunder | Heavy sleet showers and thunder | ||
lightsleet | Light sleet |
0x3E |
|
sleet | Sleet |
0x3F |
|
heavysleet | Heavy sleet |
0x45 |
|
lightrain | Light rain |
0x42 |
|
rain | Rain |
0x43 |
|
heavyrain | Heavy rain |
0x44 |
|
rainshowers | Rain showers |
0x46 |
|
heavyrainshowers | Heavy rain showers | ||
heavysnow | Heavy snow |
0x4B |
|
heavysnowandthunder | Heavy snow and thunder | ||
snow | Snow | ||
snowandthunder | Snow and thunder | ||
lightsnowshowers | Light snow showers |
0x4C |
0x4D |
lightssnowshowersandthunder | Light snow showers and thunder | ||
snowshowers | Snow showers | ||
snowshowersandthunder | Snow showers and thunder | ||
heavysnowshowers | Heavy snow showers | ||
heavysnowshowersandthunder | Heavy snow showers and thunder | ||
lightsnow | Light snow |
0x4A |
|
lightsnowandthunder | Light snow and thunder | ||
fog | Fog |
0x4F |
|
clearsky | Clear sky |
0x53 |
0x54 |
fair | Fair |
0x55 |
0x56 |
partlycloudy | Partly cloudy |
0x57 |
0x58 |
cloudy | Cloudy |
0x59 |