Руководство

Введение

Боковая панель слева содержит ссылки на соответствующие разделы:

  • Имя пользователя - ссылки на личный профиль.
  • Панель управления - просмотр текущего статуса в виде диаграмм и графиков.
  • Приложения - управление приложением.
  • Коды разблокировки - автоматически сгенерированные или загруженные вами коды разблокировки.
  • Платежи - история входящих платежей пользователей.
  • Руководство - текущее руководство пользователя.

Панель управления

Вы можете установить общие фильтры для всех виджетов на панели управления:

  • Валюта - валюта, в которую будут конвертированы входящие и исходящие суммы на панели управления.
  • Период - период времени, за который данные отображаются в диаграммах и таблицах на панели управления. Определяет интервал, в течение которого анализируется и отображается информация и статистика о платежах, приложениях и других параметрах.

Баланс

Баланс включает следующие суммы:

  • Валовая сумма - общая сумма всех пользовательских платежей за выбранный период, за исключением комиссий платежных систем и 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 этапа:

  1. Написание и отправка запроса на проверку кода
  2. Проверки на стороне API
  3. Получение и обработка ответа API
Отправка запроса

Для проверки кода пользователь вашего приложения должен ввести его в поле в настройках приложения.

/resources/settings/properties.xml
<properties>
	<property id="UnlockCode" type="string"></property>
	<property id="UnlockResult" type="string">Checking...</property>
	...
<properties>
/resources/settings/settings.xml
<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:

/source/background.mc
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 Методы расчета Расчет цены в зависимости от срока и Расчет срока в зависимости от цены:
  • Активен навсегда
{
	"response":101,
	"msg":"Active forever",
	"expires":0
}
  • Активен до [даты]
{
	"response":101,
	"msg":"Active until 15 Jun 2025",
	"expires":1749978461
}
Постоянный код:
{
	"response":101,
	"msg":"The code check was successfull",
	"expires":0
}
Пожертвование:
{
	"response":101,
	"msg":"No code check required",
	"expires":0
}
102
{
	"response":102,
	"msg":"Trial period expires in 5h 37m",
	"expires":1732200335
}
201
{
	"response":201,
	"msg":"Code not found"
}
202
{
	"response":202,
	"msg":"Used on the another device"
}
203
{
	"response":203,
	"msg":"Expiration: 5 Oct 2024",
	"expires":1728119261
}
204
{
	"response":204,
	"msg":"Trial period expired"
}
301
{
	"response":301,
	"msg":"Application not found"
}
302
{
	"response":302,
	"msg":"Term undefined"
}
303
{
	"response":303,
	"msg":"Not enought arguments"
}
304
{
	"response":304,
	"msg":"Device is nesessary"
}
401
{
	"response":401,
	"msg":"Error code saving"
}
402
{
	"response":402,
	"msg":"Error device saving"
}
500
{
	"response":500,
	"msg":"Unknown error"
}
Проверка ответа

Затем вам следует проверить ответ от сервера API Pay-to-use:

/source/background.mc
function onReceive(responseHeader, data) as Void {
	if (responseHeader == 200) { Toybox.Background.exit(data); }
}

Вы можете проверить все заголовки и коды, вы можете отображать свои собственные сообщения для удобства пользователя, но в самом простом виде проверка будет выглядеть примерно так:

/source/app.mc
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)

Платежи

При переходе в этот раздел откроется список платежей пользователей.

Для приема платежей используются следующие платежные системы:

Система Описание
Комиссия платежной системы составляет от 2.9% + 0.30 USD за каждое успешное списание с карты. Поддерживаются карты, кошельки и другие способы оплаты. Размер комиссии зависит от способа оплаты и может отличаться от комиссии за оплату картой. Подробную информацию о комиссиях, взимаемых платежной системой, можно найти на сайте платежной системы.
Комиссия платежной системы составляет от 3.4% + 0.30 USD за каждый успешный платеж. Поддерживаются карты и PayPal. Подробную информацию о комиссиях, взимаемых платежной системой, можно найти на сайте платежной системы.
Комиссия платежной системы составляет от 3.9% за каждый успешный платеж. Поддерживаются карты и другие способы оплаты. Размер комиссии зависит от способа оплаты. Подробную информацию о комиссиях, взимаемых платежной системой, можно найти на сайте платежной системы.

После учета комиссии платежной системы PayToUse взимает комиссию в размере 13%. Мы постоянно работаем над снижением комиссий.

Если возникают споры или возвраты средств в системе оплаты, штрафы системы оплаты выписываются разработчику заново. Поэтому следует не допускать таких ситуаций. Комиссия PayToUse не взимается в спорных ситуациях.

Список платежей

Вы можете искать по электронной почте или отправленному коду в верхнем поисковом поле. Найденные платежи будут отображены в списке. Вы можете использовать весь или часть адреса электронной почты или отправленного кода в качестве критерия поиска. Совпадения будут подсвечены цветом. Поиск и фильтры работают одновременно и не исключают друг друга.

Последний использованный фильтр сохраняется для пользователя. То есть, при следующем входе на страницу последний использованный фильтр будет применен автоматически. Для списка платежей доступны следующие фильтры:

  • Колонки - выберите столбцы таблицы для отображения в списке платежей.
  • Приложение - отображение платежей только для выбранных приложений.
  • Система - отображение платежей только из выбранных платежных систем.
  • Статус - отображение платежей только с выбранными статусами.

Список столбцов в таблице платежей:

  • Приложение - ваше приложение. Вы можете перейти по ссылке для редактирования его настроек.
  • # - уникальный порядковый номер платежа. Он присваивается платежу автоматически, когда пользователь переходит от формы оплаты на страницу оплаты в платежной системе. Вы можете нажать на ссылку, чтобы просмотреть детали платежа.
  • Комментарии - сообщение от пользователя, введенное в форме оплаты.
  • Система - платежная система, выбранная пользователем.
  • Статус - статус платежа. (см. Статус платежа)
  • Email - электронная почта пользователя, указанная в форме оплаты.
  • Срок - период действия отправленного кода (указанный в настройках приложения).
  • Создано - дата создания платежа.
  • Сумма счета - сумма платежа, взимаемая с пользователя. Указывается в форме оплаты в зависимости от настроек приложения.
  • Дата платежа - дата платежа.
  • Сумма платежа - сумма платежа, подтвержденная платежной системой.
  • Отправленный код - код, отправленный пользователю.
  • Доступная сумма - доступная сумма для вывода.
  • Сумма выплат - сумма снятых средств для платежа.

Изменения в платеже невозможны.

Статус платежа

В течение своего жизненного цикла платеж проходит через различные стадии, которые можно отслеживать по статусу платежа.

Статус Описание
Неполный Статус назначается платежам, для которых не было выполнено никаких действий. Платеж создается сразу, как только пользователь переходит от формы платежа к форме платежной системы. Платежу присваивается уникальный серийный номер, а также основные атрибуты платежа: сумма, платежная система, дата.
Успешно Статус назначается платежам, которые получили положительный ответ от платежной системы. Следующим шагом является отправка электронного письма пользователю, содержащего сгенерированный код или другие данные в зависимости от настроек приложения. Если платеж остается в этом статусе, следует обратить особое внимание, так как последующие действия не были выполнены.
Ошибка Статус назначается платежам, для которых получен отрицательный ответ от платежной системы. Последующие шаги не выполняются. Необходимо обратить особое внимание на такие платежи, так как статус на стороне платежной системы может быть обработан с задержкой.
Ожидание Статус назначается платежам, для которых получен положительный ответ от платежной системы, и все последующие шаги были успешно завершены. Вывод средств для платежей с этим статусом недоступен. Платежи автоматически переходят в следующий статус через 7 дней.
Доступно Вывод средств доступен для платежей в этом статусе.
Отправка Статус включается для платежей, включенных в следующий вывод. Если вывод отменен или отклонен, статус платежа возвращается в Доступно.
Отправлено Статус активирован для платежей, по которым производится вывод. Ожидается подтверждение получения средств.
Завершено Статус включен для платежей с успешным выводом средств. Вы можете установить статус вручную, подтвердив вывод в соответствующем разделе. Также статус автоматически изменяется через 14 дней после вывода средств.
Возвращено Платежи, для которых был выдан возврат, переводятся в этот статус. При выполнении возврата взимается комиссия за возврат. Комиссия удерживается из суммы вывода.

Вывод средств

При переходе в этот раздел откроется список ваших выводов.

Список выводов средств

Последний использованный фильтр сохраняется для пользователя. Таким образом, при следующем входе на страницу будет автоматически применен последний использованный фильтр. Для списка выводов доступны следующие фильтры:

  • Колонки - отображение только выбранных столбцов в списке выводов.
  • Статус - отображение только выводов, находящихся в выбранных статусах.

Список столбцов в таблице выводов:

  • # - уникальный порядковый номер вывода. Он присваивается выводу автоматически при сохранении. Вы можете щелкнуть по ссылке, чтобы посмотреть подробности вывода.
  • Статус - статус вывода. (см. Статус вывода)
  • Создано - дата запроса вывода.
  • Сумма - сумма вывода.
  • Вывод средств - дата отправки вывода.
  • Кнопки для действий с выводами. Например, подтверждение.

Вы можете подтвердить вывод, когда он находится в статусе Отправлено.

Статус вывода

В течение своего жизненного цикла вывод проходит через различные состояния, которые можно отслеживать по статусу вывода.

Статус Описание
Ожидание Статус назначается выводам при создании, для которых не было выполнено никаких действий.
Отменено Статус назначается отмененным выводам. Отмены могут происходить по различным причинам. Например, метод получения средств не указан. Все платежи из этого вывода переходят в статус Доступно и снова доступны для вывода.
Отправлено Статус устанавливается для вывода средств при его отправке.
Завершено Статус устанавливается для ручного вывода, когда разработчик получает его для подтверждения получения. Или автоматически через 14 дней после отправки.
Отклонено Статус устанавливается для вывода, когда банк или платежная система возвращает средства после отправки. Все платежи из этого вывода переходят в статус Доступно и снова доступны для вывода.

API

Overview

API PayToUse performs the following functions:

  1. Checks the activation status of an unlock code and activates it if necessary.
  2. Retrieves blood glucose data from the NightScout app.
  3. 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

/source/background.mc
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

https://api.p2u.io
{
	"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 Language-Team: Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2); X-Poedit-KeywordsList: _;gettext;gettext_noop X-Poedit-Basepath: ../../.. X-Poedit-SourceCharset: UTF-8 X-Generator: Poedit 3.4.4 X-Poedit-SearchPath-0: . X-Poedit-SearchPathExcluded-0: vendor X-Poedit-SearchPathExcluded-1: www/vendor X-Poedit-SearchPathExcluded-2: mail X-Poedit-SearchPathExcluded-3: api

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 Language-Team: Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2); X-Poedit-KeywordsList: _;gettext;gettext_noop X-Poedit-Basepath: ../../.. X-Poedit-SourceCharset: UTF-8 X-Generator: Poedit 3.4.4 X-Poedit-SearchPath-0: . X-Poedit-SearchPathExcluded-0: vendor X-Poedit-SearchPathExcluded-1: www/vendor X-Poedit-SearchPathExcluded-2: mail X-Poedit-SearchPathExcluded-3: api

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 Language-Team: Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2); X-Poedit-KeywordsList: _;gettext;gettext_noop X-Poedit-Basepath: ../../.. X-Poedit-SourceCharset: UTF-8 X-Generator: Poedit 3.4.4 X-Poedit-SearchPath-0: . X-Poedit-SearchPathExcluded-0: vendor X-Poedit-SearchPathExcluded-1: www/vendor X-Poedit-SearchPathExcluded-2: mail X-Poedit-SearchPathExcluded-3: api

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