Manual

Introducción

La barra lateral izquierda contiene enlaces a la sección correspondiente:

  • Nombre de usuario - enlaces al perfil personal.
  • Tablero - ver el estado actual en forma de gráficos y diagramas.
  • Aplicaciones - gestión de aplicaciones.
  • Códigos de desbloqueo - códigos de desbloqueo generados automáticamente o descargados por usted.
  • Pagos - historial de pagos recibidos de los usuarios.
  • Manual - el manual de usuario actual.

Tablero

Puede establecer filtros comunes para todos los widgets en el panel de control:

  • Moneda - la moneda en la que se convertirán los montos entrantes y salientes en el panel de control.
  • Período - es el período de tiempo durante el cual se muestra los datos en los gráficos y tablas del panel de control. Determina el intervalo durante el cual se analizan y muestran la información y las estadísticas sobre pagos, aplicaciones y otros parámetros.

Saldo

El saldo incluye los siguientes montos:

  • Cantidad bruta - el monto total de todos los pagos de usuarios para el período seleccionado excluyendo las tarifas de los sistemas de pago y PayToUse.
  • Cantidad neta - el monto total de todos los pagos para el período seleccionado menos las tarifas de los sistemas de pago y PayToUse.
  • Cantidad pendiente - el monto total de todos los pagos para el período especificado menos las tarifas de los sistemas de pago y PayToUse pendientes de retiro a la cuenta del desarrollador. El pago estará disponible para retiro 7 días después del pago.
  • Cantidad disponible - el monto total de todos los pagos de todos los tiempos menos las tarifas de los sistemas de pago y PayToUse, disponibles para retiro a la cuenta del desarrollador.

Pagos

El widget de Pagos incluye una tabla de pagos agrupados por aplicación para el período seleccionado.

Campos de la tabla:

  • Aplicación - aplicación. Solo se muestran las aplicaciones para las que se han realizado pagos durante el período seleccionado en la tabla.
  • Pagos - número de pagos.
  • Cantidad bruta - el monto total de todos los pagos de usuarios para el período seleccionado excluyendo las tarifas de los sistemas de pago y PayToUse.
  • Cantidad neta - el monto total de todos los pagos para el período seleccionado menos las tarifas de los sistemas de pago y PayToUse.

El gráfico muestra la dinámica de los valores Cantidad neta y Cantidad bruta por día.

Nuevos usuarios

El gráfico de nuevos usuarios muestra dos valores en dinámica por día:

  • Nuevos usuarios - el número de nuevas llamadas a la API. Los accesos a la API se registran solo si se pasa el parámetro device, un identificador único de dispositivo, al enviar una solicitud a la API. Este parámetro debe ser realmente único para el dispositivo. (ver Envío de una solicitud)
  • Pagos - el número de pagos para el mismo período por día.

Conversión

La métrica de Conversión se refiere a la evaluación de la eficiencia de sus ventas para convertir Nuevos usuarios en Pagos.

El gráfico muestra la proporción del número de Pagos al número de Nuevos usuarios, en porcentaje.

Aplicaciones

Al ir a esta sección, se abre una lista de tus aplicaciones.

La lista de columnas en la tabla de aplicaciones:

  • # - identificador único de la aplicación. Se utiliza al verificar el código de la aplicación o al mostrar el formulario de pago.
  • Nombre - nombre de la aplicación. El nombre se muestra solo para ti en los informes y el tablero. Al hacer clic en el nombre de la aplicación se abre la página de edición de la aplicación.
  • Estado: el estado actual de la aplicación. Puede ser:
    • Creado - La aplicación acaba de ser creada, aún no está configurada.
    • Publicado - la aplicación está en ejecución.
  • Creado - la fecha de creación de la aplicación.
  • Botones de control adicionales:
    • Eliminar - para eliminar la aplicación de la lista.

Creación o edición de una aplicación

Para aceptar pagos, debes completar de manera consistente todos los datos necesarios de la aplicación y activar la aplicación.

El botón para crear una nueva aplicación se encuentra en la barra de título de la lista de aplicaciones.

Aplicación

Campos disponibles al crear una aplicación:

  • Nombre - el nombre de la aplicación que solo tú puedes ver en informes o en el tablero. El nombre se mostrará en el encabezado de la página de la aplicación guardada. Mientras la aplicación no se guarde, se mostrará "Nueva aplicación" en lugar del nombre. Es obligatorio introducir este campo.
  • Correo electrónico de contacto - la dirección de correo electrónico a la que se enviarán copias de los mensajes enviados a los usuarios. Esta dirección también se especifica en el campo "Responder a" y se utiliza para responder al usuario al correo electrónico recibido con el código. Es obligatorio introducir este campo. De forma predeterminada, el campo se rellena con el valor del perfil del desarrollador. El valor se puede cambiar a otro valor.
  • Tipo de aplicación - tipo de aplicación. Si selecciona un tipo de aplicación de grupo, se mostrará una lista de aplicaciones para agrupar. Solo están disponibles en la lista aplicaciones individuales para las cuales se generan códigos de desbloqueo.
  • Permitir comentarios sobre el pago - agrega un campo al formulario de pago para que los usuarios ingresen texto libre. Los comentarios se agregan a la copia del correo electrónico del desarrollador. Los comentarios también se pueden ver en los detalles del pago.

Empiece a escribir los valores que cambian y aparecerá el botón Guardar. El botón Guardar le permite guardar sus cambios sin ir a la siguiente página. El botón Siguiente guarda los cambios y pasa a la siguiente página. Siempre puede volver para hacer cambios más tarde.

En el encabezado de la página, solo están disponibles las páginas de aplicaciones guardadas para la navegación. Puede hacer clic en Siguiente o ir a la sección en el encabezado de la página.

Descripción

Seleccione un idioma de la lista y haga clic en Añadir.

Aparecerá una pestaña con textos de aplicación localizados para el idioma seleccionado.

Idiomas disponibles:

  • Alemán
  • Inglés
  • Francés
  • Español
  • Ruso
  • Chino simplificado

Los campos en la descripción se utilizan para mostrar información en el formulario de pago y en el mensaje de respuesta al usuario:

  • Nombre - el nombre de la aplicación para el idioma seleccionado. Se muestra en el formulario de pago y en el correo electrónico de notificación de pago. De forma predeterminada, al agregar un idioma, se inserta el nombre de la aplicación. Puede establecer un nombre diferente para cada idioma. Campo obligatorio.
  • Descripción - una breve descripción de la aplicación. Se muestra en el formulario de pago debajo del nombre de la aplicación. Campo opcional. Puede dejarlo vacío si no desea que se muestre ninguna descripción.
  • Responder - información adicional que se enviará al usuario en el correo electrónico tras un pago exitoso. El texto de respuesta se agrega al final del correo electrónico después de la respuesta estándar.

Debe agregar al menos un idioma para guardar y pasar a la siguiente página.

El idioma que se muestra en el formulario de pago se determina automáticamente en función de las preferencias del usuario especificadas en la configuración de su navegador. Puede guardar el idioma de la aplicación para la aplicación.

Empiece a escribir o cambiar los valores y aparecerá el botón Guardar. El botón Guardar le permite guardar sus cambios sin pasar a la siguiente página. El botón Siguiente guarda los cambios y pasa a la siguiente página. Siempre puede regresar para realizar cambios más tarde.

En el encabezado de la página, solo están disponibles las páginas de aplicaciones guardadas para la navegación. Puede hacer clic en Siguiente o ir a la sección en el encabezado de la página.

Precio

La página contiene una lista de precios y campos relacionados con el pago:

  • Periodo de prueba - la duración del período de prueba.
  • Unidad de tiempo - la unidad de tiempo del período de prueba. Por ejemplo, si especifica 7 días, significa que después de 7 días después de la primera llamada a la API de la aplicación, devolverá una respuesta que el período de prueba ha caducado. Se guarda la hora de la primera llamada del dispositivo.
  • Método de cálculo de precio - El método de cálculo del precio de la lista:
    • Cálculo del precio según el término - En el formulario de pago, el usuario especifica el período de activación del código, y el precio se calcula automáticamente según la tabla siguiente. El usuario recibe un código de desbloqueo generado automáticamente en el correo electrónico de respuesta.
    • Cálculo del término según el precio - En el formulario de pago, el usuario selecciona un precio de la lista o ingresa su propio valor de precio, y el período se calcula automáticamente según la tabla siguiente. El usuario recibe un código generado automáticamente en el mensaje de respuesta.
    • Código permanente - En el formulario de pago, el usuario selecciona un precio de la lista o ingresa su propio valor de precio. Después del pago, reciben un código de la lista siguiente, correspondiente al precio seleccionado, en el correo electrónico de respuesta.
    • Donación - En el formulario de pago, el usuario selecciona un precio de la lista o ingresa su propio valor de precio. Para las aplicaciones de tipo Donación, no se genera un código de desbloqueo.

El precio se establece en dólares estadounidenses. El precio mínimo es 1 dólar estadounidense.

Empiece a escribir o cambiar los valores y aparecerá el botón Guardar. El botón Guardar le permite guardar sus cambios sin pasar a la siguiente página. El botón Siguiente guarda los cambios y pasa a la siguiente página. Siempre puede regresar para realizar cambios más tarde.

En el encabezado de la página, solo están disponibles las páginas de aplicaciones guardadas para la navegación. Puede hacer clic en Siguiente o ir a la sección en el encabezado de la página.

Vista previa

Esta página establece los valores:

  • Longitud del código - la longitud del código generado, si corresponde.
  • Conjunto de caracteres del código - el conjunto de caracteres a partir del cual se genera el código:
    • Código numérico - el código se genera utilizando solo los dígitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Los ceros iniciales pueden estar incluidos en el código. Los ceros iniciales son significativos al verificar el código.
    • Código alfanumérico - el código se genera utilizando los caracteres 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. El código se genera y envía al usuario utilizando caracteres en mayúscula. La mayúscula de los caracteres no importa al verificar el código.
  • Enlace para verificar el código - un enlace de ejemplo para ser utilizado para la verificación del código.
  • Enlace para pagar - enlace de pago. Puedes copiar el enlace y pegarlo en la descripción de la aplicación en el sitio web donde se publica la aplicación. Parámetros a pasar:
    • app - el identificador único de la aplicación. Parámetro requerido.
    • amount - la cantidad que se especificará en el campo de precio al comprar. El precio predeterminado se ignora. Sin embargo, la cantidad no puede ser menor que el precio mínimo y no puede ser inferior al precio mínimo establecido para la aplicación. Parámetro opcional.

Para comenzar a aceptar pagos, debes activar la aplicación con el botón Lanzar. Antes de activar la aplicación, asegúrate de que todos los datos ingresados sean correctos. Las claves generadas por la aplicación no se pueden cambiar.

Verificación de código

La verificación del código de desbloqueo de la aplicación se realiza en 3 pasos:

  1. Escribir y enviar una solicitud de verificación de código
  2. Comprobaciones en el lado de la API
  3. Recepción y procesamiento de la respuesta de la API
Envío de una solicitud

Para verificar el código, el usuario de tu aplicación debe ingresarlo en el campo en la configuración de la aplicación.

/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>

Luego necesitas enviar una solicitud al servidor de la API de Pago por uso:

/source/background.mc
function onTemporalEvent() as Void {
	var ds = System.getDeviceSettings();
	return Toybox.Communications.makeWebRequest(
		"https://api.pay-to-use.com", // URL de la API
		{
			"device" => ds.uniqueIdentifier, // identificador único del dispositivo
			"app" => "6", // ID de tu aplicación
			"model" => ds.partNumber, // device part number
			"code" => Application.Properties.getValue("UnlockCode") // valor del código de desbloqueo en tu aplicación
		},
		{
			:method => Communications.HTTP_REQUEST_METHOD_POST,
			:headers => { "Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON },
			:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
		},
		method(:onReceive)
	);
}

Parámetros de solicitud de API:

  • url - https://api.pay-to-use.com. Using HTTPS is mandatory.
  • El cuerpo de la solicitud (los valores pasados). Un diccionario de claves y valores:
    • device - identificador único del dispositivo.
    • app - identificador único de tu aplicación.
    • model - device model identifier. Optional parameter. Data is used to display statistics for new devices.
    • code - código de desbloqueo introducido por el usuario en la configuración de tu aplicación.
  • Opciones de solicitud:
    • :method - la API admite los métodos de solicitud GET y POST.
    • :headers - para el método POST, los parámetros deben pasarse en formato JSON.
    • :responseType - la respuesta se devuelve en formato JSON.
  • responseCallback - un enlace al método de devolución de llamada, que debería aceptar dos argumentos:
    • responseCode - el código de encabezado de respuesta del servidor.
    • data - el contenido si la solicitud fue exitosa, o nulo.
Comprobaciones en el lado de la API

Si no se pasan parámetros a la API, la API devuelve un encabezado HTTP/1.1 404 No encontrado.

Si se pasa al menos un parámetro a la API, la API devuelve el encabezado HTTP/1.1 200 OK.

La respuesta del servidor consiste en:

  • response - código de respuesta
  • msg - descripción textual de la respuesta
  • expires - sello de tiempo UNIXTIME (si corresponde)

Se realiza una verificación para asegurarse de que el identificador de la aplicación pasado sea correcto. La aplicación debe estar en estado Publicado al momento del pago. En caso de error, se devuelve el código de respuesta 301.

Si se transmite un identificador de dispositivo único, se busca y almacena el ID de dispositivo. Si se producen errores al verificar o guardar, se devuelve el código de error 402. Si se encuentra tal código de retorno, escriba inmediatamente al soporte a [email protected]

Si se pasa el código, se realizan los siguientes pasos para las aplicaciones con los métodos de cálculo Cálculo del precio según el término y Cálculo del término según el precio:

  • Si se transmite un código vacío, se desvincula del identificador de dispositivo único definido en los pasos anteriores.
  • Si se transmite un código no vacío y no está activado, el código se activa dependiendo de las condiciones del precio especificado cuando se compró el código, independientemente de la fecha de activación.
  • Si no se ha transmitido ningún código o si el código transmitido no se encuentra, se devuelve el código de error 201.
  • El código activado se verifica con el dispositivo y, si se transmitió un identificador de dispositivo único diferente al almacenado durante la activación, se devuelve un código de error 202.
  • Si el código transmitido no tiene fecha de vencimiento y todas las comprobaciones anteriores han pasado, se devuelve el código 101.
  • Si el código tiene límite de tiempo, se realiza una verificación. Si la clave no ha caducado, se devuelve el código 101. Si el código ha caducado, se devuelve el código de error 203.
  • Este tipo de aplicación requiere que el código esté vinculado al dispositivo. Si no se ha transmitido el identificador de dispositivo único, se devuelve el código de error 304.

Para una aplicación con un Código permanente, solo se verifica la disponibilidad del código en el momento de la compra. Si se encuentra un código, se devuelve el código 101. Si no se encuentra ningún código, se devuelve el código de error 201.

Para una aplicación con el método de cálculo Donación, no se verifica el código. Siempre se devuelve el código 101.

Si las comprobaciones anteriores no se han superado, se verifica el período de prueba. Si ha transcurrido más tiempo desde que el dispositivo se puso en contacto por primera vez que la configuración actual de la aplicación, se devuelve el código de error 204. Si el período de prueba aún no ha expirado, se devuelve el código de error 102.

Si solo se transmite el ID de la aplicación y no se transmite ni el código de desbloqueo ni el ID de dispositivo único, se devuelve el código de error 303.

Si la respuesta devuelta es 500, debe escribir al soporte en [email protected]

A continuación se muestra una tabla de todos los códigos devueltos:

Devolver Mensaje
101 Métodos de cálculo Cálculo del precio según el término y Cálculo del término según el precio:
  • Activo para siempre
{
	"response":101,
	"msg":"Active forever",
	"expires":0
}
  • Activo hasta [fecha]
{
	"response":101,
	"msg":"Active until 23 Sep 2025",
	"expires":1758640026
}
Código permanente:
{
	"response":101,
	"msg":"The code check was successfull",
	"expires":0
}
Donación:
{
	"response":101,
	"msg":"No code check required",
	"expires":0
}
102
{
	"response":102,
	"msg":"Trial period expires in 7h 43m",
	"expires":1745707808
}
201
{
	"response":201,
	"msg":"Code not found"
}
202
{
	"response":202,
	"msg":"Used on the another device"
}
203
{
	"response":203,
	"msg":"Expiration: 18 Mar 2025",
	"expires":1742310426
}
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"
}
Comprobando la respuesta

Luego debe verificar la respuesta del servidor de la API Pay-to-use:

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

Puede verificar todos los encabezados y códigos, puede mostrar sus propios mensajes para la comodidad del usuario, pero en la forma más simple la verificación se verá algo como esto:

/source/app.mc
function onBackgroundData(data) as Void {
	if (data.hasKey("response")) {
		if (data.hasKey("msg")) {
			// Puede mostrar data["msg"] en el campo de propiedades con el nombre "ResultadoDesbloqueo".
			Application.Properties.setValue("UnlockResult", data["msg"]);
		}
		if (data["response"].toString().substring(0, 1).equals("2")) {
			// La verificación del código falló
			// Las funciones pagas NO están disponibles
			...
		} else {
			// La verificación del código fue exitosa o el error es su culpa o la culpa de la API
			// Las funciones pagas están disponibles
			...
		}
	}
}

Códigos de desbloqueo

Cuando vaya a esta sección, se abrirá una lista de códigos de desbloqueo.

Lista de códigos de desbloqueo

Puede buscar el campo de correo electrónico o el código en la barra de búsqueda superior. Los códigos encontrados se mostrarán en la lista. Puede utilizar todo o parte del correo electrónico o el código como criterio de búsqueda. Las coincidencias se resaltarán en color. La búsqueda y los filtros funcionan simultáneamente y no se excluyen mutuamente.

El último filtro utilizado se guarda para el usuario. Es decir, la próxima vez que entre a la página, el último filtro utilizado se aplicará automáticamente. Los filtros están disponibles para la lista de códigos de desbloqueo:

  • Columnas - seleccione las columnas de la tabla para mostrar en la lista de códigos de desbloqueo.
  • Aplicación - mostrar solo los códigos de desbloqueo para las aplicaciones seleccionadas.
  • Estado - mostrar solo los códigos de desbloqueo que están en los estados seleccionados.

La lista de columnas en la tabla de códigos de desbloqueo:

  • Aplicación - su aplicación. Puede seguir el enlace para editar su configuración.
  • Código - el código de desbloqueo.
  • Correo electrónico - la dirección de correo electrónico asociada con el registro del código de desbloqueo. Esta dirección se utiliza para buscar códigos de desbloqueo de clientes en la sección Mis compras del sitio web. Esta sección es accesible para los usuarios.
  • Término - el período de validez del código enviado (especificado en la configuración de la aplicación). Se establece un período de validez para el código, correspondiente a las condiciones de la configuración de la aplicación en el momento de su creación.
  • Estado - el estado del código de desbloqueo. (ver Estado del código de desbloqueo)
  • Creado - la fecha de creación del código de desbloqueo.
  • Activado - la fecha de activación del código. Se establece en el momento en que este dispositivo de usuario en particular contacta por primera vez el servicio de API de PayToUse y envía este código. El estado del código cambia a Activado. Solo se puede activar un código inactivo. Si se envía un código activo por un dispositivo con un ID diferente, la API devuelve el error 202. Solo un dispositivo puede estar vinculado a un solo código.
  • Caducidad - la fecha en que vence la activación del código. Establecido para los códigos que tienen un período de validez limitado en la activación del código. Para los códigos con fecha de vencimiento ilimitada, permanece en blanco.
  • Eliminado - la fecha de eliminación del código. Al eliminarlo, el estado del código se establece en Desconocido.
  • Pago # - número de secuencia único del pago. Puede hacer clic en el enlace para ver los detalles del pago.
  • Botones para acciones con códigos de desbloqueo. Por ejemplo, eliminación.

Estado del código de desbloqueo

Durante su ciclo de vida, el código de desbloqueo pasa por diferentes estados, que pueden ser rastreados por el estado del código.

Estado Descripción
Disponible Se asigna el estado a un código de desbloqueo para el cual no se han realizado acciones o si se restablece el vínculo del dispositivo para el código.
Activado Se establece el estado para un código con una fecha de activación establecida. La fecha de activación se establece cuando el dispositivo accede con éxito al servicio de API de PayToUse por primera vez. Además, al activar el código, se establece la fecha de vencimiento del código.
Expirado El estado se establece para un código vencido. Desvincular el código del dispositivo no restablece la fecha de vencimiento del código. Verificar el código con este estado devolverá el error 203. (ver Comprobaciones en el lado de la API)
Desconocido El estado se establece cuando se elimina el código. Verificar el código con este estado devolverá el error 201. (ver Comprobaciones en el lado de la API)

Pagos

Cuando acceda a esta sección, se abrirá una lista de pagos de usuarios.

Se utilizan los siguientes sistemas de pago para recibir pagos:

Sistema Descripción
La tarifa del sistema de pago es desde el 2.9% + 0.30 USD por cada cobro exitoso con tarjeta. Se admiten tarjetas, billeteras y otras opciones de pago. La tarifa depende del método de pago y puede diferir de la tarifa de pago con tarjeta. Puede encontrar información detallada sobre las tarifas cobradas por el sistema de pago en el sitio web del sistema de pago.
La tarifa del sistema de pago es desde el 3.4% + 0.30 USD por cada pago exitoso. Se admiten tarjetas y PayPal. Puede encontrar información detallada sobre las tarifas cobradas por el sistema de pago en el sitio web del sistema de pago.
La tarifa del sistema de pago es desde el 3.9% por cada pago exitoso. Se admiten tarjetas y otras opciones de pago. La tarifa depende del método de pago. Puede encontrar información detallada sobre las tarifas cobradas por el sistema de pago en el sitio web del sistema de pago.

Después de las tarifas del sistema de pago, PayToUse cobrará una tarifa del 13%. Estamos trabajando constantemente para reducir las tarifas.

Si surgen disputas o reembolsos en el sistema de pago, las penalizaciones del sistema de pago se reembolsan al desarrollador. Por lo tanto, no debería permitir que ocurran tales situaciones. No se cobra la tarifa de PayToUse en situaciones controvertidas.

Lista de pagos

Puede buscar en el campo de correo electrónico o el código enviado en la barra de búsqueda superior. Los pagos encontrados se mostrarán en la lista. Puede utilizar todo o parte del correo electrónico o el código enviado como criterio de búsqueda. Las coincidencias se resaltarán en color. La búsqueda y los filtros funcionan simultáneamente y no se excluyen entre sí.

El último filtro utilizado se guarda para el usuario. Es decir, la próxima vez que entre en la página, el último filtro utilizado se aplicará automáticamente. Los filtros están disponibles para la lista de pagos:

  • Columnas - seleccione las columnas de la tabla para mostrar en la lista de pagos.
  • Aplicación - mostrar pagos solo de aplicaciones seleccionadas.
  • Sistema - mostrar pagos solo de los sistemas de pago seleccionados.
  • Estado - mostrar pagos solo con estados seleccionados.

La lista de columnas en la tabla de pagos:

  • Aplicación - su aplicación. Puede seguir el enlace para editar su configuración.
  • # - número de secuencia único del pago. Se asigna automáticamente al pago cuando el usuario pasa del formulario de pago a la página de pago en el sistema de pago. Puede hacer clic en el enlace para ver los detalles del pago.
  • Comentarios - mensaje del usuario ingresado en el formulario de pago.
  • Sistema - el sistema de pago seleccionado por el usuario.
  • Estado - el estado del pago. (ver Estado del pago)
  • Correo electrónico - correo electrónico del usuario indicado en el formulario de pago.
  • Término - el período de validez del código enviado (especificado en la configuración de la aplicación).
  • Creado - la fecha de creación del pago.
  • Monto de la factura - el monto del pago cobrado al usuario. Especificado en el formulario de pago dependiendo de la configuración de la aplicación.
  • Fecha de pago - la fecha de pago.
  • Monto del pago - el monto del pago confirmado por el sistema de pagos.
  • Código enviado - código enviado al usuario.
  • Cantidad disponible - monto de retiro disponible.
  • Monto del pago - el monto de los fondos retirados para el pago.

No es posible realizar cambios en el pago.

Estado del pago

Durante su ciclo de vida, el pago pasa a diferentes estados, que se pueden rastrear por el estado del pago.

Estado Descripción
Incompleto El estado se asigna a los pagos para los cuales no se han realizado acciones. El pago se crea tan pronto como el usuario cambia del formulario de pago al formulario del sistema de pagos. Al pago se le asigna un número de serie único, así como los atributos básicos del pago: monto, sistema de pago, fecha.
Exitoso El estado se asigna a los pagos que recibieron una respuesta positiva del sistema de pago. El siguiente paso es enviar un correo electrónico al usuario contendiendo el código generado u otros datos dependiendo de la configuración de la aplicación. Si el pago ha permanecido en este estado, es necesario prestarle especial atención, ya que las acciones posteriores no se han realizado.
Error El estado se asigna a los pagos para los cuales se recibe una respuesta negativa del sistema de pago. Los pasos posteriores no se realizan. Es necesario prestar especial atención a tales pagos, ya que el estado en el lado del sistema de pago puede procesarse con un retraso.
Pendiente El estado se asigna a los pagos para los cuales se recibe una respuesta positiva del sistema de pago, todos los pasos posteriores se han completado exitosamente. El retiro para pagos con este estado no está disponible. Los pagos pasan al siguiente estado automáticamente en 7 días.
Disponible El retiro está disponible para pagos en este estado.
Enviando El estado está habilitado para los pagos incluidos en el próximo retiro. Si el retiro es cancelado o rechazado, el estado del pago se devuelve a Disponible.
Enviado El estado está habilitado para pagos para los cuales se ha realizado el retiro. Se está esperando la confirmación de la recepción de los fondos.
Completado El estado está habilitado para pagos con retiros exitosos. Puedes establecer manualmente el estado confirmando el retiro en la sección correspondiente. El estado también se cambia automáticamente 14 días después del retiro del pago.
Reembolsado Los pagos para los cuales se ha emitido un reembolso se transfieren a este estado. Al emitir un reembolso, se cobra una tarifa de reembolso. La tarifa se deduce del monto del retiro.

Retiros

Cuando vayas a esta sección, se abrirá una lista de tus retiros.

Lista de retiros

El último filtro utilizado se guarda para el usuario. Es decir, la próxima vez que ingreses a la página, se aplicará automáticamente el último filtro utilizado. Los filtros están disponibles para la lista de retiros:

  • Columnas - mostrar solo las columnas seleccionadas en la lista de retiros.
  • Estado - mostrar solo los retiros que están en los estados seleccionados.

La lista de columnas en la tabla de retiros:

  • # - número de secuencia único del retiro. Se asigna al retiro automáticamente cuando se guarda el retiro. Puedes hacer clic en el enlace para ver los detalles del retiro.
  • Estado - el estado del retiro. (ver Estado del retiro)
  • Creado - la fecha de la solicitud de retiro.
  • Cantidad - la cantidad del retiro.
  • Retiro - la fecha en que se envió el retiro.
  • Botones para acciones con retiros. Por ejemplo, confirmación.

Puedes confirmar el retiro cuando esté en el estado Enviado.

Estado del retiro

Durante su ciclo de vida, el retiro pasa por diferentes estados, los cuales pueden ser rastreados por el estado del retiro.

Estado Descripción
Pendiente El estado se asigna a los retiros al momento de su creación, para los cuales no se realizaron acciones.
Cancelado El estado se asigna a los retiros cancelados. Las cancelaciones se pueden realizar por diversas razones. Por ejemplo, no se especificó el método de recepción de fondos. Todos los pagos de este retiro pasan al estado Disponible y están disponibles para retiro nuevamente.
Enviado El estado se establece para el retiro de fondos cuando se envía.
Completado El estado se establece para el retiro manual cuando lo recibe el desarrollador para confirmar la recepción. O automáticamente 14 días después del envío.
Rechazado El estado se establece para el retiro cuando el banco o el sistema de pagos devuelve los fondos después del envío. Todos los pagos de este retiro pasan al estado Disponible y están disponibles para retiro nuevamente.

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

  • Descripción: 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

  • Descripción: 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)

  • Descripción: 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); // ID de tu aplicación
		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
      Внимание! Отсутствует для MET Norway
    • pressure: integer — atmospheric pressure in hPa
    • humidity: integer — humidity in %
    • precipitation: integer — precipitation probability in %
      Внимание! Отсутствует для MET Norway
    • 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

For a detailed description of Garmin SDK weather functions and constants, refer to this link. You may store values obtained from the API or results from Garmin SDK weather functions, depending on the selected weather provider, to ensure consistency in displaying values on the screen.

ID Descripción Day Night
0 Limpiar
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

Check out the icon set for OpenWeatherMap as an example here.

ID Descripción 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 Limpiar
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 Descripción 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 Limpiar
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

Check out the icon set for MET Weather as an example here.

ID Descripción 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