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, // número de referencia del dispositivo
			"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. Es obligatorio utilizar HTTPS.
  • 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 - Identificador del modelo del dispositivo. Parámetro opcional. Los datos se utilizan para mostrar estadísticas sobre los nuevos dispositivos.
    • 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 18 Feb 2027",
	"expires":1802985506
}
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 2d 6h 36m",
	"expires":1779681277
}
201
{
	"response":201,
	"msg":"Code not found"
}
202
{
	"response":202,
	"msg":"Used on the another device"
}
203
{
	"response":203,
	"msg":"Expiration: 6 May 2026",
	"expires":1778102306
}
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 enough 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

Resumen

La API PayToUse realiza las siguientes funciones:

  1. Comprueba el estado de activación de un código de desbloqueo y lo activa si es necesario.
  2. Recupera los datos de glucemia de la aplicación NightScout.
  3. Obtiene datos meteorológicos actuales para una ubicación determinada.

Toda la información se puede solicitar y recibir en una sola solicitud.

API EndPoints

Puedes utilizar uno de los siguientes puntos de conexión:

  • https://api.pay-to-use.com
  • https://api.p2u.io

Ambos puntos finales admiten solicitudes GET y POST.

Parámetros de la solicitud

  • device: cadena (requerido) — identificador único de dispositivo
  • app: entero (requerido) — tu ID de solicitud
  • model: cadena (opcional) — código de modelo del dispositivo, necesario para recopilar y mostrar estadísticas de los dispositivos que utilizan la aplicación
  • code: cadena (opcional) — código de desbloqueo
  • bg: matriz asociativa (opcional) — datos para solicitar los niveles de glucosa en sangre desde la aplicación NightScout
    • url: cadena (opcional) — dirección de la aplicación NightScout
  • weather: matriz asociativa (opcional) — datos para consultar el tiempo actual
    • appid: cadena (opcional) — clave de acceso a la API meteorológica
    • lat: flotante (opcional) — latitud
    • lon: flotante (opcional) — longitud
    • provider: entero (opcional) — proveedor de información meteorológica

Lista de proveedores de datos meteorológicos compatibles

1. OpenWeatherMap

  • Descripción: OpenWeatherMap ofrece datos meteorológicos a nivel mundial, incluyendo información meteorológica en tiempo real, datos históricos y previsiones a 16 días. Gracias a su amplia cobertura geográfica y a sus frecuentes actualizaciones, OpenWeatherMap es una opción muy popular para aplicaciones que requieren tanto información meteorológica actual como previsiones a largo plazo.
  • Datos facilitados: Temperatura, humedad, velocidad del viento, calidad del aire, probabilidad de precipitaciones y mucho más, todo en tiempo real. Ofrece datos tanto actuales como de previsión, incluyendo datos meteorológicos minuto a minuto para determinadas localidades.
  • Selección de proveedores: Incluye «provider = 1» en la sección meteorológica de tu solicitud para seleccionar OpenWeatherMap como proveedor de datos meteorológicos.
  • Notas de uso: Ofrece planes gratuitos y de pago, y se puede acceder a los datos mediante autenticación con clave API. Los planes de pago incluyen capas de datos avanzadas y funciones premium.
  • Documentación de la API: Disponible aquí.

2. QWeather

  • Descripción: QWeather, también conocida como HeWeather, ofrece datos meteorológicos completos centrados en China, aunque también incluye datos internacionales. Proporciona información detallada, como el tiempo en tiempo real, previsiones, datos sobre la calidad del aire y alertas.
  • Datos facilitados: Temperatura actual, humedad, índice UV, niveles de contaminación, previsiones diarias y por horas, así como avisos de condiciones meteorológicas adversas. Destaca por sus datos detallados sobre la calidad del aire y sus actualizaciones en tiempo real sobre los cambios en las condiciones meteorológicas.
  • Selección de proveedores: Incluye «provider = 2» en la sección meteorológica de tu solicitud para seleccionar QWeather como proveedor de datos meteorológicos.
  • Notas de uso: QWeather ofrece acceso a la API con planes gratuitos y premium. El plan gratuito proporciona datos limitados, mientras que las opciones premium amplían la cobertura para incluir datos y ubicaciones adicionales.
  • Documentación de la API: Disponible aquí.

3. MET Weather (MET Norway)

  • Descripción: La API MET Weather, proporcionada por MET Norway, ofrece acceso a una amplia variedad de datos meteorológicos abiertos, entre los que se incluyen previsiones, datos históricos y datos específicos de Noruega y las regiones nórdicas. Reconocida por su precisión y transparencia, MET Weather es ideal para aplicaciones que requieren datos meteorológicos de gran fiabilidad.
  • Datos facilitados: Condiciones meteorológicas actuales, previsiones, precipitaciones, temperatura, datos sobre el viento e índice UV. MET Weather ofrece datos especializados para las regiones nórdicas, pero también proporciona información meteorológica a nivel mundial.
  • Selección de proveedores: Incluye «provider = 3» en la sección meteorológica de tu solicitud para seleccionar MET Weather como proveedor de datos meteorológicos.
  • Notas de uso: Todos los datos proporcionados por MET Weather pueden utilizarse libremente bajo una licencia Creative Commons, lo que permite su uso tanto con fines no comerciales como comerciales sin coste alguno. MET Norway es reconocida por sus datos medioambientales, lo que la convierte en un proveedor de confianza, especialmente en Europa.
  • Documentación de la API: Disponible aquí.

Solicitud de ejemplo

/source/background.mc
function onTemporalEvent() as Void {
	var ds = System.getDeviceSettings();
	if (!ds.phoneConnected) { // Comprueba que el dispositivo esté conectado al teléfono para enviar la solicitud
		return;
	}

	var id = ds.uniqueIdentifier;
	if (id == null) { // Comprueba que se haya asignado al dispositivo un identificador único
		return;
	}

	var request = {};

	var lockCheck = Application.Storage.getValue("LastCodeCheckTimestamp");
	if (lockCheck == null || lockCheck <= Time.now().value()) { // Envía el código si es necesario
		request.put("code", Application.Properties.getValue("UnlockCode"));
	}

	var ns_url = Application.Properties.getValue("NS");
	if (!ns_url.equals("")) { // Envía la URL de la aplicación NightScout si es necesario
		request.put("bg", { "url" => ns_url });
	}

	var wP = Application.Properties.getValue("Weather");
	if (wP != 0) { // Envía los parámetros de la solicitud meteorológica si es necesario
		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()) {

		// Rellena los parámetros de solicitud necesarios
		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", // Punto final de API
			request,
			{
				:method => 3, // Communications.HTTP_REQUEST_METHOD_POST
				:headers => {
					"Content-Type" => 1 // Communications.REQUEST_CONTENT_TYPE_JSON
				},
				:responseType => 0 // Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
			},
			method(:onReceive)
		);
	}
}

Respuesta API

La API devuelve un objeto JSON con información sobre el estado de desbloqueo, el nivel de glucosa y el tiempo.

Parámetros de respuesta

Resultados de la verificación del código de desbloqueo (si se envió una solicitud):

  • response: entero — código de retorno
  • msg: cadena — mensaje sobre el resultado de la verificación
  • expires: entero — marca de tiempo de caducidad del código en formato UNIXTIMESTAMP
  • qr: array — Código QR para la compra o la verificación del número de serie, si procede

Respuesta de la aplicación NightScout (si se envió una solicitud):

  • bg: matriz asociativa — respuesta formateada desde la aplicación NightScout
    • value: entero — nivel de glucosa en sangre en mg/dL
    • date: entero — marca de tiempo de la fecha de caducidad del código en formato UNIXTIMESTAMP
    • direction: cadena — tendencia en la variación del nivel de glucosa en sangre

Respuesta de la API meteorológica (si se envió una solicitud):

  • weather: matriz asociativa — respuesta formateada de la API meteorológica
    • provider: entero — identificador del proveedor de datos meteorológicos
    • weather: array — condiciones meteorológicas actuales. Puede devolver uno o dos valores; si se devuelven dos valores, representan las condiciones diurnas y nocturnas
    • temp: flotante — temperatura actual en grados Celsius
    • feels_like: flotante — temperatura percibida en grados Celsius
      Внимание! Отсутствует для MET Norway
    • pressure: entero — presión atmosférica en hPa
    • humidity: entero — humedad en %
    • precipitation: entero — probabilidad de precipitaciones en %
      Внимание! Отсутствует для MET Norway
    • wind: entero — dirección del viento en grados
    • wind_speed: flotante — velocidad del viento en m/s
    • temp_low: flotante — la temperatura mínima de hoy en grados Celsius
    • temp_high: flotante — la temperatura máxima de hoy en grados Celsius
    • sunrise_today: entero — la hora de salida del sol de hoy en formato UNIXTIMESTAMP
    • sunset_today: entero — la hora de la puesta de sol de hoy en formato UNIXTIMESTAMP
    • sunrise_tomorrow: entero — la hora del amanecer de mañana en formato UNIXTIMESTAMP
    • sunset_tomorrow: entero — la hora de la puesta de sol de mañana en formato UNIXTIMESTAMP
    • aqi: matriz asociativa — índice de calidad del aire
      • level: entero — nivel del índice de calidad del aire
      • value: entero — valor del índice de calidad del aire

Ejemplo de respuesta

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

Notas

  • Las solicitudes con bg requieren una conexión a la aplicación NightScout.
  • Para cada solicitud que incluya un código, la API comprueba automáticamente el estado del código y lo activa si está inactivo.
  • Tenga en cuenta que los parámetros de la API pueden actualizarse o modificarse con el tiempo para mejorar la funcionalidad, la compatibilidad y la seguridad. Se recomienda revisar periódicamente la documentación de la API para estar al tanto de cualquier cambio que pueda afectar a la integración o al uso.

Garmin

Para obtener una descripción detallada de las funciones y constantes meteorológicas del SDK de Garmin, consulta este enlace. Puedes almacenar los valores obtenidos de la API o los resultados de las funciones meteorológicas del SDK de Garmin, dependiendo del proveedor de datos meteorológicos seleccionado, para garantizar la coherencia en la visualización de los valores en la pantalla.

ID Descripción Día Noche
0 Limpiar
0x53

0x54
40 Justo
23 Mayormente claro
0x55

0x56
1 Parcialmente nublado
0x57

0x58
22 Parcialmente despejado
2 Mayormente nublado
0x59
52 Nubes finas
20 Nublado
0x5A
45 Nublado, con posibilidad de lluvia
31 Llovizna
0x3E
14 Lluvia ligera
0x42
24 Lluvias ligeras
3 Lluvia
0x43
25 Chaparrón
27 Posibilidad de chubascos
0x46
11 Lluvias dispersas
15 Lluvia intensa
26 Lluvias intensas
28 Posibilidad de tormentas eléctricas
0x36

0x37
12 Tormentas eléctricas dispersas
0x38
6 Tormentas eléctricas
0x39
8 Niebla
0x4E
9 Brumoso
29 Niebla
39 Neblina
30 Polvo
0x4F
35 Arena
33 Humo
38 Ceniza volcánica
37 Tormenta de arena
13 Precipitación desconocida
5 Ventoso
0x52
36 Tormenta
48 Ráfagas
32 Tornado
0x50
41 Huracán
42 Tormenta tropical
50 Aguanieve
0x45
7 Mezcla invernal
18 Lluvia ligera y nieve
19 Lluvias intensas y nieve
21 Lluvia y nieve
49 Lluvia helada
44 Posibilidad de lluvia o nieve
47 Nublado, con posibilidad de lluvia o nieve
34 Hielo
51 Hielo y nieve
43 Posibilidad de nieve
0x4C

0x4D
16 Nevada ligera
46 Nublado, con posibilidad de nieve
0x4A
4 Nieve
17 Fuertes nevadas
0x4B
10 Salve
0x3A

Abrir el mapa meteorológico

Echa un vistazo al conjunto de iconos de OpenWeatherMap como ejemplo aquí.

ID Descripción Día Noche
2xx Tormenta
200 Tormenta con lluvia ligera
0x36

0x37
201 Tormenta con lluvia
0x38
202 Tormenta con lluvias intensas
210 Tormenta leve
211 Tormenta
0x39
212 Tormenta eléctrica intensa
0x3B
221 Tormenta eléctrica irregular
230 Tormenta con llovizna ligera
0x3A
231 Tormenta con llovizna
232 Tormenta con llovizna intensa
3xx Llovizna
300 Lluvia fina
0x3C

0x3D
301 Llovizna
0x3E
302 Lluvia fina pero intensa
0x3F
310 Lluvia fina
0x40
311 Llovizna
312 Lluvia de llovizna muy intensa
0x41
313 Lluvia intermitente y chubascos
314 Lluvias intensas y chubascos
321 Lluvia fina
5xx Lluvia
500 Lluvia ligera
0x42
501 Lluvia moderada
0x43
502 Lluvia muy intensa
0x44
503 Lluvia muy intensa
504 Lluvias torrenciales
511 Lluvia helada
0x45
520 Lluvia de lluvia ligera
0x46
521 Lluvia de chaparrones
522 Lluvia torrencial
531 Lluvia irregular
6xx Nieve
600 Nevada ligera
0x4C

0x4D
601 Nieve
0x4A
602 Fuertes nevadas
611 Aguanieve
0x45
612 Lluvia ligera con granizo
613 Agua con granizo
615 Lluvia y nieve ligeras
616 Lluvia y nieve
620 Ligera nevada
0x4B
621 Lluvia de nieve
622 Fuertes chubascos de nieve
7xx Ambiente
701 Niebla
0x4E
711 Humo
0x4F
721 Neblina
731 Remolinos de arena y polvo
741 Niebla
751 Arena
0x4F
761 Polvo
762 Ceniza volcánica
771 Chubascos
0x52
781 Tornado
0x50
800 Limpiar
800 Cielo despejado
0x53

0x54
80x Nubes
801 Pocas nubes (11-25 %)
0x55

0x56
802 Nubosidad variable (25-50 %)
0x57

0x58
803 Nubosidad parcial (51-84 %)
0x59
804 Cielo nublado al 85-100 %
0x5A

QWeather

Puedes ver el conjunto original de iconos meteorológicos haciendo clic aquí

ID Descripción Día Noche
302 Tormenta eléctrica
0x36

0x37
303 Tormenta fuerte
0x38
310 Tormenta
0x39
317 Tormenta a tormenta intensa
304 Salve
0x3A
311 Fuertes lluvias
0x3B
312 Tormenta intensa
318 Tormenta con lluvias intensas o muy intensas
309 Lluvia fina
0x3C

0x3D
404 Aguanieve
0x3E
305 Lluvia ligera
0x42
314 Lluvia ligera a moderada
306 Lluvia moderada
0x43
315 Lluvias de moderadas a intensas
399 Lluvia
308 Lluvias torrenciales
0x44
316 Lluvia intensa a tormenta
313 Lluvia helada
0x45
405 Lluvia y nieve
300 Ducha de lluvia
0x46
301 Lluvia intensa
307 Lluvia intensa
350 Ducha de lluvia
351 Lluvia intensa
400 Ligera nevada
0x4C

0x4D
408 Nieve de ligera a moderada
499 Nieve
401 Nieve moderada
0x4A
402 Fuertes nevadas
409 Nieve de moderada a intensa
410 De nevadas intensas a tormenta de nieve
403 Tormenta de nieve
0x4B
406 Lluvia y nieve
407 Ráfaga de nieve
456 Lluvia y nieve
457 Ráfaga de nieve
503 Arena
0x4E
504 Polvo
507 Tormenta de arena
508 Tormenta de arena
511 Niebla moderada
512 Niebla densa
513 Niebla densa
500 Niebla
0x4F
501 Niebla
502 Neblina
509 Niebla densa
510 Niebla densa
514 Niebla espesa
515 Niebla muy densa
100 Soleado
0x53

0x54
150 Limpiar
101 Nublado
0x55

0x56
151 Nublado
102 Pocas nubes
0x57

0x58
152 Pocas nubes
103 Parcialmente nublado
0x59
153 Parcialmente nublado
104 Overcast
0x5A

MET Weather

Echa un vistazo al conjunto de iconos de MET Weather a modo de ejemplo aquí.

ID Descripción Día Noche
lightrainshowers Lluvias ligeras
0x36

0x37
lightrainshowersandthunder Lluvias ligeras y truenos
rainshowersandthunder Chubascos y truenos
heavyrainshowersandthunder Fuertes chaparrones y truenos
heavyrainandthunder Lluvias intensas y truenos
0x38
rainandthunder Lluvia y truenos
lightrainandthunder Lluvia ligera y truenos
0x39
heavysleetandthunder Granizo intenso y truenos
0x3B
lightsleetandthunder Ligero granizo y truenos
0x3A
lightssleetshowersandthunder Lluvias ligeras de aguanieve y truenos
sleetandthunder Agua granizada y truenos
lightsleetshowers Lluvias de aguanieve ligera
0x3C

0x3D
sleetshowers Chubascos de aguanieve
sleetshowersandthunder Chubascos de aguanieve y truenos
heavysleetshowers Fuertes chubascos de aguanieve
heavysleetshowersandthunder Fuertes chubascos de aguanieve y truenos
lightsleet Ligero granizo
0x3E
sleet Aguanieve
0x3F
heavysleet Granizo intenso
0x45
lightrain Lluvia ligera
0x42
rain Lluvia
0x43
heavyrain Lluvia intensa
0x44
rainshowers Chubascos
0x46
heavyrainshowers Chubascos fuertes
heavysnow Fuertes nevadas
0x4B
heavysnowandthunder Fuertes nevadas y truenos
snow Nieve
snowandthunder Nieve y truenos
lightsnowshowers Lluvias de nieve ligera
0x4C

0x4D
lightssnowshowersandthunder Ligeras nevadas y truenos
snowshowers Nieve
snowshowersandthunder Chubascos de nieve y truenos
heavysnowshowers Chubascos de nieve fuertes
heavysnowshowersandthunder Fuertes nevadas y truenos
lightsnow Nevada ligera
0x4A
lightsnowandthunder Ligeras nevadas y truenos
fog Niebla
0x4F
clearsky Cielo despejado
0x53

0x54
fair Justo
0x55

0x56
partlycloudy Parcialmente nublado
0x57

0x58
cloudy Nublado
0x59