Comparteix a través de


API de facturación de uso medido de marketplace

Las API de facturación de uso medido se deben usar cuando el publicador crea dimensiones de medición personalizadas para que una oferta que se va a publicar en el Centro de partners. La integración con las API de facturación de uso medido es necesaria para cualquier oferta comprada que tenga uno o varios planes con dimensiones personalizadas para emitir eventos de uso.

Importante

Debe realizar un seguimiento del uso en su código y enviar solo eventos de uso a Microsoft para el uso que supere la tarifa base.

Para más información sobre cómo crear dimensiones de medición personalizadas para SaaS, vea Facturación de uso medido de SaaS.

Para más información sobre cómo crear dimensiones de medición personalizadas para una oferta de aplicación de Azure con un plan de aplicación gestionado, consulte los detalles de configuración de la oferta de aplicación de Azure .


Aplicación de TLS 1.2 Nota

La versión 1.2 de TLS se aplica como la versión mínima para las comunicaciones HTTPS. Asegúrese de usar esta versión de TLS en el código. La versión 1.0 y 1.1 de TLS están en desuso y se rechazarán los intentos de conexión.

Evento de uso único de facturación de uso medido

El publicador debe llamar a la API de eventos de uso para emitir eventos de uso en un recurso activo (suscrito) para el plan comprado por el cliente específico. El evento de uso se emite por separado para cada dimensión personalizada del plan definido por el publicador al publicar la oferta.

Solo se puede emitir un evento de uso para cada hora de un día natural por recurso y dimensión. Si se consume más de una unidad en una hora, acumula todas las unidades consumidas en la hora y, a continuación, la emite en un solo evento. Los eventos de uso solo se pueden emitir durante las últimas 24 horas. Si emite un evento de uso en cualquier momento entre las 8:00 y las 8:59:59 (y se acepta) y envía un evento adicional para el mismo día entre las 8:00 y las 8:59:59, se rechazará como duplicado.

POST: https://marketplaceapi.microsoft.com/api/usageEvent?api-version=<ApiVersion>

Parámetros de consulta:

Parámetro Recomendación
ApiVersion Use 2018-08-31.

Encabezados de solicitud:

Tipo de contenido Uso de application/json
x-ms-requestid Valor de cadena único para realizar el seguimiento de la solicitud del cliente, preferiblemente un GUID. Si no se proporciona este valor, se generará uno y se proporcionará en los encabezados de respuesta.
x-ms-correlationid Valor de cadena único para la operación en el cliente. Este parámetro correlaciona todos los eventos de la operación de cliente con eventos en el lado servidor. Si no se proporciona este valor, se generará uno y se proporcionará en los encabezados de respuesta.
authorization Token de acceso único que identifica el ISV que realiza esta llamada API. El formato es "Bearer <access_token>" cuando el publicador recupera el valor del token, como se explica para

Ejemplo de cuerpo de la solicitud:

{
  "resourceId": <guid>, // unique identifier of the resource against which usage is emitted. 
  "quantity": 5.0, // how many units were consumed for the date and hour specified in effectiveStartTime, must be greater than 0 or a double integer
  "dimension": "dim1", // custom dimension identifier
  "effectiveStartTime": "2018-12-01T08:30:14", // time in UTC when the usage event occurred, from now and until 24 hours back
  "planId": "plan1", // id of the plan purchased for the offer
}

En el caso de los planes de Aplicaciones Administradas de Azure, resourceId es la aplicación administrada resource group Id. Puede encontrar un script de ejemplo para obtenerlo en mediante el token de identidades administradas de Azure.

En el caso de las ofertas de SaaS, el resourceId es el identificador de suscripción de SaaS. Para obtener más información sobre las suscripciones de SaaS, consulte lista de suscripciones.

Respuestas

Código: 200
De acuerdo. La emisión de uso fue aceptada y registrada por parte de Microsoft para su procesamiento y facturación posterior.

Ejemplo de carga de respuesta:

{
  "usageEventId": <guid>, // unique identifier associated with the usage event in Microsoft records
  "status": "Accepted" // this is the only value in case of single usage event
  "messageTime": "2020-01-12T13:19:35.3458658Z", // time in UTC this event was accepted
  "resourceId": <guid>, // unique identifier of the resource against which usage is emitted. For SaaS it's the subscriptionId.
  "quantity": 5.0, // amount of emitted units as recorded by Microsoft
  "dimension": "dim1", // custom dimension identifier
  "effectiveStartTime": "2018-12-01T08:30:14", // time in UTC when the usage event occurred, as sent by the ISV
  "planId": "plan1", // id of the plan purchased for the offer
}

Código: 400
Solicitud incorrecta.

  • Faltan datos de solicitud o son inválidos.
  • effectiveStartTime es de hace más de 24 horas. El evento ha expirado.
  • La suscripción de SaaS no está en el estado "Suscrito".

Ejemplo de carga de respuesta:

{
  "message": "One or more errors have occurred.",
  "target": "usageEventRequest",
  "details": [
    {
      "message": "The resourceId is required.",
      "target": "ResourceId",
      "code": "BadArgument"
    }
  ],
  "code": "BadArgument"
}

Código: 401 No autorizado. El token de autorización no es válido o ha expirado. La solicitud intenta acceder a una suscripción de SaaS para una oferta publicada con un identificador de aplicación de Microsoft Entra diferente del que se usa para crear el token de autenticación.

Código: 403 Prohibido. El token de autorización no es válido, no se proporcionó o se proporcionó con permisos insuficientes. Asegúrese de proporcionar un token de autorización válido.

Código: 409
Conflicto. Ya se ha notificado correctamente un evento de uso para el identificador de recurso especificado, la fecha de uso efectivo y la hora especificados.

Ejemplo de carga de respuesta:

{
  "additionalInfo": {
    "acceptedMessage": {
      "usageEventId": "<guid>", //unique identifier associated with the usage event in Microsoft records
      "status": "Duplicate",
      "messageTime": "2020-01-12T13:19:35.3458658Z",
      "resourceId": "<guid>", //unique identifier of the resource against which usage is emitted.
      "quantity": 1.0,
      "dimension": "dim1",
      "effectiveStartTime": "2020-01-12T11:03:28.14Z",
      "planId": "plan1"
    }
  },
  "message": "This usage event already exist.",
  "code": "Conflict"
}

Evento de uso por lotes de facturación de uso medido

La API de eventos de uso por lotes permite emitir eventos de uso para más de un recurso comprado a la vez. También permite emitir varios eventos de uso para el mismo recurso, siempre y cuando estén durante diferentes horas naturales. El número máximo de eventos en un solo lote es 25.

POST:https://marketplaceapi.microsoft.com/api/batchUsageEvent?api-version=<ApiVersion>

Parámetros de consulta:

Parámetro Recomendación
ApiVersion Use 2018-08-31.

Encabezados de solicitud:

Tipo de contenido Utilice application/json
x-ms-requestid Valor de cadena único para realizar el seguimiento de la solicitud del cliente, preferiblemente un GUID. Si no se proporciona este valor, se generará uno y se proporcionará en los encabezados de respuesta.
x-ms-correlationid Valor de cadena único para la operación en el cliente. Este parámetro correlaciona todos los eventos de la operación de cliente con eventos en el lado servidor. Si no se proporciona este valor, se generará uno y se proporcionará en los encabezados de respuesta.
authorization Token de acceso único que identifica el ISV que realiza esta llamada API. El formato es Bearer <access_token> cuando el publicador recupera el valor del token, como se explica para

Nota

En el cuerpo de la solicitud, el identificador de recurso tiene significados diferentes para la aplicación SaaS y para la aplicación administrada de Azure que emite un medidor personalizado. El identificador de recursos de la aplicación SaaS es resourceID. El identificador de recursos de los planes de Azure Application Managed Apps es resourceUri. Para más información sobre los identificadores de recursos, consulte Facturación de uso medido de Azure Marketplace: selección del identificador correcto al enviar eventos de uso.

En el caso de las ofertas de SaaS, el resourceId es el identificador de suscripción de SaaS. Para obtener más información sobre las suscripciones de SaaS, consulte lista de suscripciones.

Ejemplo de cuerpo de la solicitud de para aplicaciones SaaS:

{
  "request": [ // list of usage events for the same or different resources of the publisher
    { // first event
      "resourceId": "<guid1>", // Unique identifier of the resource against which usage is emitted. 
      "quantity": 5.0, // how many units were consumed for the date and hour specified in effectiveStartTime, must be greater than 0 or a double integer
      "dimension": "dim1", //Custom dimension identifier
      "effectiveStartTime": "2018-12-01T08:30:14",//Time in UTC when the usage event occurred, from now and until 24 hours back
      "planId": "plan1", // id of the plan purchased for the offer
    },
    { // next event
      "resourceId": "<guid2>", 
      "quantity": 39.0, 
      "dimension": "email", 
      "effectiveStartTime": "2018-11-01T23:33:10
      "planId": "gold", // id of the plan purchased for the offer
    }
  ]
}

En el caso de los planes de aplicaciones administradas de Azure, resourceUri es la aplicación administrada resourceUsageId. Puede encontrar un script de ejemplo para obtenerlo en mediante el token de identidades administradas de Azure.

Ejemplo del cuerpo de la solicitud para aplicaciones administradas de Azure:

{
  "request": [ // list of usage events for the same or different resources of the publisher
    { // first event
      "resourceUri": "<fullyqualifiedname>", // Unique identifier of the resource against which usage is emitted. 
      "quantity": 5.0, // how many units were consumed for the date and hour specified in effectiveStartTime, must be greater than 0 or a double integer
      "dimension": "dim1", //Custom dimension identifier
      "effectiveStartTime": "2018-12-01T08:30:14",//Time in UTC when the usage event occurred, from now and until 24 hours back
      "planId": "plan1", // id of the plan purchased for the offer
    }
  ]
}

Respuestas

Código: 200
De acuerdo. La emisión de uso por lotes se aceptó y registró en Microsoft para su posterior procesamiento y facturación. La lista de respuestas se devuelve con el estado de cada evento individual del lote. Debe iterar por la carga de respuesta para comprender las respuestas de cada evento de uso individual enviado como parte del evento por lotes.

Ejemplo de carga de respuesta:

{
  "count": 2, // number of records in the response
  "result": [
    { // first response
      "usageEventId": "<guid>", // unique identifier associated with the usage event in Microsoft records
      "status": "Accepted" // see list of possible statuses below,
      "messageTime": "2020-01-12T13:19:35.3458658Z", // Time in UTC this event was accepted by Microsoft,
      "resourceId": "<guid1>", // unique identifier of the resource against which usage is emitted.
      "quantity": 5.0, // amount of emitted units as recorded by Microsoft 
      "dimension": "dim1", // custom dimension identifier
      "effectiveStartTime": "2018-12-01T08:30:14",// time in UTC when the usage event occurred, as sent by the ISV
      "planId": "plan1", // id of the plan purchased for the offer
    },
    { // second response
      "status": "Duplicate",
      "messageTime": "0001-01-01T00:00:00",
      "error": {
        "additionalInfo": {
          "acceptedMessage": {
            "usageEventId": "<guid>",
            "status": "Duplicate",
            "messageTime": "2020-01-12T13:19:35.3458658Z",
            "resourceId": "<guid2>",
            "quantity": 1.0,
            "dimension": "email",
            "effectiveStartTime": "2020-01-12T11:03:28.14Z",
            "planId": "gold"
          }
        },
        "message": "This usage event already exist.",
        "code": "Conflict"
      },
      "resourceId": "<guid2>",
      "quantity": 1.0,
      "dimension": "email",
      "effectiveStartTime": "2020-01-12T11:03:28.14Z",
      "planId": "gold"
    }
  ]
}

Descripción del código de estado mencionado en la respuesta de la API BatchUsageEvent.

Código de estado Descripción
Accepted Aceptado.
Expired Uso expirado.
Duplicate Se ha proporcionado un uso duplicado.
Error Código de error.
ResourceNotFound El recurso de uso proporcionado no es válido.
ResourceNotAuthorized No está autorizado a proporcionar el uso de este recurso.
ResourceNotActive El recurso se suspende o nunca se ha activado.
InvalidDimension La dimensión para la que se ha proporcionado el uso no es válida para esta oferta o plan.
InvalidQuantity La cantidad pasada es menor o igual a 0.
BadArgument Falta la entrada o tiene un formato incorrecto.

Código: 400
Solicitud incorrecta. El lote contenía más de 25 eventos de uso.

Código: 401 No autorizado. El token de autorización no es válido o ha expirado. La solicitud intenta acceder a una suscripción de SaaS para una oferta publicada con un identificador de aplicación de Microsoft Entra diferente del que se usa para crear el token de autenticación.

Código: 403 Prohibido. El token de autorización no es válido, no se proporcionó o se proporcionó con permisos insuficientes. Asegúrese de proporcionar un token de autorización válido.

Eventos de uso de recuperación de facturación de uso medido

Puede llamar a la API de eventos de uso para obtener la lista de eventos de uso. Los ISV pueden usar esta API para ver los eventos de uso que se han publicado durante una determinada duración configurable de tiempo y qué estado están en el momento de llamar a la API.

GET: https://marketplaceapi.microsoft.com/api/usageEvents

Parámetros de consulta:

Parámetro Recomendación
ApiVersion Use 2018-08-31.
usageStartDate DateTime en formato ISO8601. Por ejemplo, 2020-12-03T15:00 o 2020-12-03
UsageEndDate (opcional) DateTime en formato ISO8601. Valor predeterminado = fecha actual
offerId (opcional) Valor predeterminado = todo disponible
planId (opcional) Valor predeterminado = todo disponible
dimensión (opcional) Valor predeterminado = todo disponible
azureSubscriptionId (opcional) Valor predeterminado = todo disponible
reconStatus (opcional) Valor predeterminado = todo disponible

Valores posibles de reconStatus:

ReconStatus Descripción
Presentado Aún no procesado por PC Analytics
Aceptado Coincide con PC Analytics
Rechazado Rechazado en la canalización. Póngase en contacto con el soporte técnico de Microsoft para investigar la causa.
Desajuste Las cantidades de MarketplaceAPI y Partner Center Analytics no son cero, pero no coinciden.

Encabezados de solicitud:

Tipo de contenido Uso de application/json
x-ms-requestid Valor de cadena único (preferiblemente un GUID) para realizar el seguimiento de la solicitud desde el cliente. Si no se proporciona este valor, se generará uno y se proporcionará en los encabezados de respuesta.
x-ms-correlationid Valor de cadena único para la operación en el cliente. Este parámetro correlaciona todos los eventos de la operación de cliente con eventos en el lado servidor. Si no se proporciona este valor, se generará uno y se proporcionará en los encabezados de respuesta.
autorización Token de acceso único que identifica el ISV que realiza esta llamada API. El formato es Bearer <access_token> cuando el publicador recupera el valor del token. Para obtener más información, consulte:

Respuestas

Ejemplos de carga de respuesta:

Aceptado*

[
  {
    "usageDate": "2020-11-30T00:00:00Z",
    "usageResourceId": "11111111-2222-3333-4444-555555555555",
    "dimension": "tokens",
    "planId": "silver",
   "planName": "Silver",
    "offerId": "mycooloffer",
    "offerName": "My Cool Offer",
    "offerType": "SaaS",
    "azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
    "reconStatus": "Accepted",
    "submittedQuantity": 17.0,
    "processedQuantity": 17.0,
    "submittedCount": 17
  }
]

Enviado

[
  {
    "usageDate": "2020-11-30T00:00:00Z",
    "usageResourceId": "11111111-2222-3333-4444-555555555555",
    "dimension": "tokens",
    "planId": "silver",
    "planName": "",
    "offerId": "mycooloffer",
    "offerName": "",
    "offerType": "SaaS",
    "azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
    "reconStatus": "Submitted",
    "submittedQuantity": 17.0,
    "processedQuantity": 0.0,
    "submittedCount": 17
  }
]

Error de coincidencia

[
  {
    "usageDate": "2020-11-30T00:00:00Z",
    "usageResourceId": "11111111-2222-3333-4444-555555555555",
    "dimension": "tokens",
    "planId": "silver",
    "planName": "Silver",
    "offerId": "mycooloffer",
    "offerName": "My Cool Offer",
    "offerType": "SaaS",
    "azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
    "reconStatus": "Mismatch",
    "submittedQuantity": 17.0,
    "processedQuantity": 16.0,
    "submittedCount": 17
  }
]

Rechazado

[
  {
    "usageDate": "2020-11-30T00:00:00Z",
    "usageResourceId": "11111111-2222-3333-4444-555555555555",
    "dimension": "tokens",
    "planId": "silver",
    "planName": "",
    "offerId": "mycooloffer",
    "offerName": "",
    "offerType": "SaaS",
    "azureSubscriptionId": "12345678-9012-3456-7890-123456789012",
    "reconStatus": "Rejected",
    "submittedQuantity": 17.0,
    "processedQuantity": 0.0,
    "submittedCount": 17
  }
]

Códigos de estado

Código: 401 No autorizado. El token de autorización no es válido o ha expirado. La solicitud intenta acceder a una suscripción de SaaS para una oferta publicada con un identificador de aplicación de Microsoft Entra diferente del que se usa para crear el token de autenticación.

Código: 403 Prohibido. El token de autorización no es válido, no se proporcionó o se proporcionó con permisos insuficientes. Asegúrese de proporcionar un token de autorización válido.

Procedimientos recomendados de desarrollo y pruebas

Para probar la emisión de medidores personalizados, implemente la integración con la API de medición, cree un plan para la oferta de SaaS publicada con dimensiones personalizadas definidas en ella con un precio cero por unidad. Y publique esta oferta como versión preliminar para que solo los usuarios limitados puedan acceder y probar la integración.

También puede usar un plan privado para una oferta activa existente a fin de limitar el acceso a este plan durante las pruebas a un público limitado.

Obtener soporte técnico

Siga las instrucciones de Soporte técnico para el programa marketplace comercial del Centro de partners para comprender las opciones de soporte técnico del publicador y abrir una incidencia de soporte técnico con Microsoft.

Para más información sobre las API del servicio de medición, consulte Preguntas Frecuentes sobre las API del servicio de medición de Marketplace.