API de reconciliação de fatura faturada v2 (GA)
Aplica-se a: Partner Center (indisponível na nuvem soberana)
Nossa nova API assíncrona oferece uma maneira mais rápida e eficiente de acessar seus dados de cobrança e reconciliação por meio de blobs do Azure. Em vez de manter uma conexão aberta por horas ou processar lotes de 2.000 itens de linha, agora você pode simplificar seu fluxo de trabalho.
A nova API de reconciliação de fatura faturada de comércio usa técnicas avançadas, como chave de manobrista e padrões assíncronos de solicitação-resposta . Essa API fornece um token de assinatura de acesso compartilhado (SAS) que você pode usar para acessar todos os atributos ou um subconjunto dos dados de reconciliação de fatura faturada.
Nossa API usa técnicas otimizadas para aumentar sua eficiência, para que você possa obter resultados mais rápidos com menos esforço. Adote essa API para simplificar o acesso aos dados e melhorar sua eficiência geral.
Observação
A nova API não está hospedada no host da API do Partner Center. Em vez disso, você pode encontrá-lo no MS Graph em Usar a API do Microsoft Graph para exportar dados de cobrança de parceiros – Microsoft Graph v1.0. Para acessar essa API, consulte os detalhes a seguir.
Importante
Para permitir que seu aplicativo acesse os dados de cobrança do parceiro, siga este link e familiarize-se com os conceitos básicos de autenticação e autorização do Microsoft Graph.
Você pode atribuir a permissão "PartnerBilling.Read.All" usando o portal do Azure ou o Centro de administração do Entra. Este é o procedimento:
- Registre seu aplicativo na home page do Microsoft Entra na seção Registros de aplicativo.
- Para conceder a permissão necessária, acesse a página do aplicativo Microsoft Entra na seção de permissões da API. Selecione "Adicionar uma permissão" e escolha o escopo "PartnerBilling.Read.All".
Ao concluir essas etapas, você garante que seu aplicativo tenha o acesso necessário aos dados de faturamento do parceiro.
Visão geral da API
Para ajudar você a recuperar itens de linha de reconciliação de fatura de novo comércio faturados de forma assíncrona, oferecemos dois endpoints principais de API. Aqui está um guia simplificado para você começar:
Ponto de extremidade de reconciliação de fatura faturada
Primeiro, use essa API para buscar novos itens de linha de reconciliação de fatura faturada pelo comércio . Ao fazer uma solicitação, você recebe um status HTTP 202 e um cabeçalho de localização com uma URL. Sonde essa URL regularmente até obter um status de êxito e uma URL de manifesto.
Ponto de extremidade de status da operação
Em seguida, continue verificando o status da operação chamando essa API em intervalos regulares. Se os dados não estiverem prontos, a resposta incluirá um cabeçalho Retry-After indicando quanto tempo esperar antes de tentar novamente. Depois que a operação for concluída, você receberá um recurso de manifesto com um link de pasta de armazenamento para baixar os dados de uso. A resposta segmenta os arquivos para melhorar a taxa de transferência e permitir o paralelismo de E/S.
Seguindo estas etapas, você pode gerenciar com eficiência seu processo de reconciliação de faturas.
Diagrama de sequência
Aqui está um diagrama de sequência que mostra as etapas para baixar novos dados de reconciliação de fatura comercial.
Sequência de ação do usuário
Para recuperar dados de reconciliação de faturas faturadas, siga estas etapas:
Etapa 1: enviar solicitação
Envie uma solicitação POST para o endpoint da API.
Obter itens de linha de reconciliação de fatura faturada
Solicitação de API
POST https://graph.microsoft.com/v1.0/reports/partners/billing/reconciliation/billed/export
Accept: application/json
Content-Type: application/json
{
"invoiceId": "G016907411",
"attributeSet": "basic"
}
Parâmetros de consulta
N/D
Corpo da solicitação
Atributo | Obrigatório | Type | Descrição |
---|---|---|---|
conjunto de atributos | Falso | String | Escolha "completo" para todos os atributos ou "básico" para um conjunto limitado. Se não for especificado, "full" é o valor padrão. Verifique a lista de atributos nesta seção. Opcional. |
invoiceId | True | String | Um identificador exclusivo para cada fatura. Obrigatório. |
Cabeçalhos da solicitação
Solicite cabeçalhos para a API usando as etapas listadas em Práticas recomendadas para usar o Microsoft Graph. Seguindo essas diretrizes, você garante confiabilidade e suporte para sua aplicação. Sua atenção aos detalhes nesta etapa é crucial para uma integração perfeita e um desempenho ideal.
Resposta da API
HTTP/1.1 202 Accepted
Location: <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
A API geralmente responde com um status HTTP 202. Você também pode encontrar outros status, dependendo de suas solicitações. Esses status são listados na seção Status de resposta da API padrão.
Código | Descrição |
---|---|
202 – Aceito | Seu pedido foi aceito. Para verificar o status da sua solicitação, consulte a URL fornecida no cabeçalho do local. |
Etapa 2: verificar o status da solicitação
Para acompanhar o status de uma solicitação, certifique-se de receber uma resposta HTTP 200 indicando "bem-sucedido" ou "falha". Se for bem-sucedido, você encontrará o URL do manifesto no atributo "resourceLocation". Esse atributo fornece um ponto de extremidade para acessar as informações necessárias.
Obter status da operação
Recupera o status de uma solicitação.
Solicitação de API
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Parâmetros da solicitação
Nome | Incluir em | Obrigatório | Type | Descrição |
---|---|---|---|---|
operationId | URI da solicitação | True | String | Uma ID exclusiva para verificar o status da solicitação. Obrigatória. |
Cabeçalho da solicitação
Solicite cabeçalhos para a API usando as etapas listadas em Práticas recomendadas para usar o Microsoft Graph. Seguindo essas diretrizes, você garante confiabilidade e suporte para sua aplicação. Sua atenção aos detalhes nesta etapa é crucial para uma integração perfeita e um desempenho ideal.
Corpo da solicitação
N/D
Status da resposta
Além dos status HTTP padrão listados em Status de resposta da API padrão, a API também pode retornar o seguinte status HTTP:
Código | Descrição |
---|---|
410 - Desaparecido | O link do manifesto expira após um tempo definido. Para obter o link do manifesto novamente, envie uma nova solicitação. |
Payload de resposta
A carga de resposta da API inclui os seguintes atributos:
Atributo | Obrigatório | Descrição |
---|---|---|
id | Verdadeiro | Um identificador exclusivo para cada resposta Obrigatório. |
status | Verdadeiro | Valores e ações: obrigatório. notstarted: aguarde o tempo especificado no cabeçalho "Retry-After" e faça outra chamada para verificar o status. running: aguarde o tempo especificado no cabeçalho "Retry-After" e faça outra chamada para verificar o status. succeeded: os dados estão prontos. Recupere a carga do manifesto usando o URI especificado em resourceLocation. failed: a operação falhou permanentemente. Reinicie-o. |
createdDateTime | Verdadeiro | A hora em que a solicitação foi feita. Obrigatório. |
lastActionDateTime | Verdadeiro | A última vez que o status foi alterado. Obrigatório. |
resourceLocation | Falso | O URI para a carga do manifesto. Opcional. |
erro | Falso | Detalhes sobre quaisquer erros, fornecidos no formato JSON. Opcional. Os atributos incluíram: message: Descrição do erro. code: O tipo de erro. |
Objeto de localização do recurso
Atributo | Descrição |
---|---|
ID | Um identificador exclusivo para o manifesto. |
schemaVersion | Versão do esquema de manifesto. |
dataFormat | Formato do arquivo de dados de faturamento. compressedJSON: formato de dados em que cada blob é um arquivo compactado que contém dados no formato de linhas JSON . Para recuperar os dados de cada blob, descompacte-os. |
createdDateTime | Data e hora em que o arquivo de manifesto foi criado. |
eTag | Versão dos dados do manifesto. Um novo valor é gerado sempre que há uma alteração nas informações de cobrança. |
partnerTenantId | ID do Microsoft Entra do locatário do parceiro. |
diretório raiz | Diretório raiz do arquivo. |
sasToken | Token SAS (assinatura de acesso compartilhado) que permite ler todos os arquivos no diretório. |
partitionType | Divide os dados em vários blobs com base no atributo partitionValue . O sistema divide as partições que excedem o número suportado. Por padrão, os dados são particionados com base no número de itens de linha no arquivo. Não defina um número fixo de itens de linha ou tamanho de arquivo no código, pois esses valores podem ser alterados. |
blobCount | Número total de arquivos para essa ID de locatário de parceiro. |
blobs | Uma matriz JSON de objetos "blob" que contêm os detalhes do arquivo para a ID do locatário do parceiro. |
objeto blob | Um objeto que contém os seguintes detalhes: nome e partiçãoValor |
name | O nome do blob. |
partitionValue | Partição que contém o arquivo. Partição que contém o arquivo. Partições grandes são divididas em vários arquivos, cada um contendo o mesmo "partitionValue". |
Solicitação de API
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Resposta da API
A resposta recomenda aguardar 10 segundos antes de tentar novamente quando os dados ainda estiverem sendo processados.
HTTP/1.1 200 OK
Retry-After: 10
{
"id": "9ab9cb54-d07f-4f52-9ea6-a09d7de52c14",
"createdDateTime": "2022-06-1T10-01-03.4Z",
"lastActionDateTime": "2022-06-1T10-01-05Z",
"status": "running"
}
Solicitação de API
(10 segundos após a solicitação anterior...)
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Resposta da API
A API retorna o status "bem-sucedido" e o URI para "resourceLocation".
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/\$metadata#reports/partners/billing/operations/\$entity",
"@odata.type": "#microsoft.graph.partners.billing.exportSuccessOperation",
"id": "f2170b13-6a8e-47d6-b481-6988490dc0cb",
"createdDateTime": "2023-12-05T21:17:29Z",
"lastActionDateTime": "2023-12-05T21:18:00.8897902Z",
"status": "succeeded",
"resourceLocation": {
"id": "44e8500b-ab92-490e-8ac3-90500a1d3427",
"createdDateTime": "2023-11-06T19:58:47.513Z",
"schemaVersion": "2",
"dataFormat": "compressedJSON",
"partitionType": "default",
"eTag": "RwDrn7fbiTXy6UULE",
"partnerTenantId": "0e195b37-4574-4539-bc42-0e539b9684c0",
"rootDirectory": "https://adlsreconbuprodeastus201.blob.core.windows.net/path_id",
"sasToken": "{token}",
"blobCount": 1,
"blobs": \[
{
"name": "part-00123-5a93fa5d-749f-48bc-a372-9b021d93c3fa.c000.json.gz",
"partitionValue": "default"
}
\]
}
}
Etapa 3: Baixar itens de linha de reconciliação de fatura faturada do armazenamento de blobs do Azure
Primeiro, você precisa obter o token SAS (assinatura de acesso compartilhado) e o local de armazenamento de blobs. Você pode encontrar esses detalhes nas propriedades "sasToken" e "rootDirectory" da resposta da API de carga útil do manifesto. Em seguida, para baixar e descompactar o arquivo de blob, use o SDK/ferramenta do Armazenamento do Azure. Está no formato JSONLines .
Dica
Certifique-se de verificar nosso código de amostra. Ele mostra como baixar e descompactar o arquivo de blob do Azure em seu banco de dados local.
Status de resposta padrão da API
Você pode obter estes status HTTP da resposta da API:
Código | Descrição |
---|---|
400 – Solicitação incorreta | A solicitação está ausente ou contém dados incorretos. Verifique o corpo da resposta para obter detalhes do erro. |
401 - Não autorizado | A autenticação é necessária antes de fazer a primeira chamada. Autentique com o serviço de API do parceiro. |
403 - Proibido | Você não tem a autorização necessária para fazer a solicitação. |
404 - Não encontrado | Os recursos solicitados não estão disponíveis com os parâmetros de entrada fornecidos. |
410 - Desaparecido | O link do manifesto não é mais válido ou ativo. Envie uma nova solicitação. |
500 – Erro de servidor interno | A API ou suas dependências não podem atender à solicitação no momento. Tente novamente depois. |
5000 - Nenhum dado disponível | O sistema não possui dados para os parâmetros de entrada fornecidos. |
Atributos de item de linha de reconciliação de fatura faturada
Para comparar os atributos retornados pela API de reconciliação de fatura faturada para os conjuntos de atributos "completos" ou "básicos", consulte a tabela a seguir. Para saber mais sobre esses atributos, consulte Usando o arquivo de reconhecimento.
Atributo | Completo | Basic |
---|---|---|
PartnerId | sim | sim |
CustomerId | sim | sim |
CustomerName | sim | sim |
CustomerDomainName | sim | não |
CustomerCountry | sim | não |
InvoiceNumber | sim | sim |
MpnId | sim | não |
Tier2MpnId | sim | sim |
OrderId | sim | sim |
OrderDate | sim | sim |
ProductId | sim | sim |
SkuId | sim | sim |
AvailabilityId | sim | sim |
SkuName | sim | não |
ProductName | sim | sim |
ChargeType | sim | sim |
UnitPrice | sim | sim |
Quantidade | sim | não |
Subtotal | sim | sim |
TaxTotal | sim | sim |
Total | sim | sim |
Moeda | sim | sim |
PriceAdjustmentDescription | sim | sim |
PublisherName | sim | sim |
PublisherId | sim | não |
SubscriptionDescription | sim | não |
SubscriptionId | sim | sim |
ChargeStartDate | sim | sim |
ChargeEndDate | sim | sim |
TermAndBillingCycle | sim | sim |
EffectiveUnitPrice | sim | sim |
UnitType | sim | não |
AlternateId | sim | não |
BillableQuantity | sim | sim |
BillingFrequency | sim | não |
PricingCurrency | sim | sim |
PCToBCExchangeRate | sim | sim |
PCToBCExchangeRateDate | sim | não |
MeterDescription | sim | não |
ReservationOrderId | sim | sim |
CreditReasonCode | sim | sim |
SubscriptionStartDate | sim | sim |
SubscriptionEndDate | sim | sim |
ReferenceId | sim | sim |
ProductQualifiers | sim | não |
PromotionId | sim | sim |
ProductCategory | sim | sim |
Código de exemplo
Para usar essa API, consulte o link a seguir, que inclui o código de exemplo C#.