Obter uma coleção de faturasGet a collection of invoices

Aplica-se aApplies To

  • Partner CenterPartner Center
  • Partner Center operado pela 21VianetPartner Center operated by 21Vianet
  • Partner Center do Microsoft Cloud GermanyPartner Center for Microsoft Cloud Germany
  • Partner Center do Microsoft Cloud for US GovernmentPartner Center for Microsoft Cloud for US Government

Como recuperar uma coleção de faturas do parceiro.How to retrieve a collection of the partner's invoices.

Pré-requisitosPrerequisites

  • Credenciais, conforme descrito em Autenticação do Partner Center.Credentials as described in Partner Center authentication. Esse cenário dá suporte à autenticação com aplicativos autônomos e aplicativos + credenciais de usuário.This scenario supports authentication with both standalone App and App+User credentials.

C#C#

Para obter uma coleção de todas as notas fiscais disponíveis, use a propriedade faturas para obter uma interface para operações de fatura e, em seguida, chame o método Get ou getasync para recuperar a coleção.To get a collection of all available invoices, use the Invoices property to get an interface to invoice operations, and then call the Get or GetAsync method to retrieve the collection.

Para obter uma coleção paginável de faturas, primeiro chame o método BuildIndexedQuery e passe o tamanho da página para criar um objeto IQUERY .To get a paged collection of invoices, first call the BuildIndexedQuery method and pass it the page size to create an IQuery object. Em seguida, use a propriedade faturas para obter uma interface para operações de fatura e, em seguida, passe o objeto IQUERY para a consulta ou método QueryAsync para enviar a solicitação e obter a primeira página.Next, use the Invoices property to get an interface to invoice operations, and then pass the IQuery object to the Query or QueryAsync method to send the request and get the first page.

Em seguida, use a propriedade enumeradores para obter uma interface para a coleção de enumeradores de coleção de recursos com suporte e, em seguida, chamar notas fiscais. Create para criar um enumerador para percorrer a coleção de faturas.Next, use the Enumerators property to get an interface to the collection of supported resource collection enumerators, and then call Invoices.Create to create an enumerator for traversing the collection of invoices. Por fim, use o enumerador para recuperar e trabalhar com cada página de faturas, conforme mostrado no exemplo de código a seguir.Finally, use the enumerator to retrieve and work with each page of invoices as shown in the following code example. Cada chamada para o próximo método envia uma solicitação para a próxima página de faturas com base no tamanho da página.Each call to the Next method sends a request for the next page of invoices based on the page size.

// IAggregatePartner partnerOperations;
// int invoicePageSize;

// Is this an unpaged or paged request?
bool isUnpaged = (this.invoicePageSize <= 0);

// If the scenario is unpaged, get all the invoices, otherwise get the first page.
var invoicesPage = (isUnpaged)
                 ? partnerOperations.Invoices.Get()
                 : partnerOperations.Invoices.Query(QueryFactory.Instance.BuildIndexedQuery(this.invoicePageSize));

// Create an invoice enumerator for traversing the invoice pages.
var invoicesEnumerator = partnerOperations.Enumerators.Invoices.Create(invoicesPage);
int lineCounter = 1;

while (invoicesEnumerator.HasValue)
{
    // Print the current invoice results page.
    var invoices = invoicesEnumerator.Current.Items;

    foreach (var i in invoices)
    {
        Console.WriteLine(String.Format("{0,3}. {1}  {2}  {3,16:C2}",
            lineCounter++,
            i.Id,
            i.InvoiceDate.ToString("yyyy&#39;-&#39;MM&#39;-&#39;dd&#39;T&#39;HH&#39;:&#39;mm&#39;:&#39;ss&#39;Z&#39;"),
            i.TotalCharges));
    }

    Console.WriteLine();
    Console.Write("Press any key to retrieve the next invoices page");
    Console.ReadKey();

    // Get the next page of invoices.
    invoicesEnumerator.Next();
}

Para um exemplo ligeiramente diferente, consulte exemplo: aplicativo de teste de console.For a slightly different example, see Sample: Console test app. Projeto: classede exemplos do SDK do Partner Center: GetPagedInvoices.csProject: Partner Center SDK Samples Class: GetPagedInvoices.cs

Observação

A mesma API é usada para todas as compras comerciais modernas, bem como para as licenças 145p e Office.The same API is used for all modern commercial purchases as well as 145p and Office licenses. O tamanho e o deslocamento são considerados apenas para notas fiscais herdadas.Size and offset are only considered for legacy invoices. Para todas as compras comerciais modernas, PageSize & deslocamento será ignorado.For all modern commercial purchases, pagesize & offset will be ignored.

Solicitação RESTREST request

Sintaxe da solicitaçãoRequest syntax

MétodoMethod URI da solicitaçãoRequest URI
GETGET {baseURL}/v1/invoices? tamanho = {tamanho} &deslocamento = {offset} http/1.1{baseURL}/v1/invoices?size={size}&offset={offset} HTTP/1.1

Parâmetros do URIURI parameters

Use os parâmetros de consulta a seguir ao criar a solicitação.Use the following query parameters when creating the request.

NomeName TipoType ObrigatórioRequired DescriçãoDescription
tamanhosize intint NãoNo O número de recursos de fatura a serem retornados na resposta.The number of invoice resources to return in the response. Esse parâmetro é opcional.This parameter is optional.
deslocamentooffset intint NãoNo O índice de base zero da primeira fatura a ser retornada.The zero-based index of the first invoice to return.

Cabeçalhos de solicitaçãoRequest headers

Para obter mais informações, confira Cabeçalhos REST do Partner Center.For more information, see Partner Center REST headers.

Corpo da solicitaçãoRequest body

NenhumNone

Exemplo de solicitaçãoRequest example

GET https://api.partnercenter.microsoft.com/v1/invoices?size=200&offset=0 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: e88d014d-ab70-41de-90a0-f7fd1797267d
MS-CorrelationId: de894e18-f027-4ac0-8b5a-34f0c222af0c
X-Locale: en-US
MS-PartnerCenter-Application: Partner Center .NET SDK Samples
Host: api.partnercenter.microsoft.com

Resposta RESTREST response

Se for bem-sucedido, o corpo da resposta conterá a coleção de recursos de fatura .If successful, the response body contains the collection of Invoice resources.

Códigos de êxito e de erro de respostaResponse success and error codes

Cada resposta vem com um código de status HTTP que indica êxito ou falha e informações de depuração adicionais.Each response comes with an HTTP status code that indicates success or failure and additional debugging information. Use uma ferramenta de rastreamento de rede para ler esse código, o tipo de erro e os parâmetros adicionais.Use a network trace tool to read this code, error type, and additional parameters. Para obter a lista completa, confira Códigos de erro REST do Partner Center.For the full list, see Partner Center REST error codes.

Exemplo de respostaResponse example

HTTP/1.1 200 OK
Content-Length: 256
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 57eb2ca7-755f-450f-9187-eae1e75a0114
MS-RequestId: a45e6643-1caf-4429-8f90-07c03d85bc2b
Date: Thu, 24 Mar 2016 05:21:01 GMT
{
    "totalCount": 2,
    "items": [
        {
            "id": "D02005YFHI",
            "invoiceDate": "2017-01-21T00:00:00Z",
            "totalCharges": 24606.35,
            "paidAmount": 1000,
            "currencyCode": "GBP",
            "currencySymbol": "£",
            "pdfDownloadLink": "/invoices/D02005YFHI/documents/statement",
            "taxReceipts": [
                {
                    "id": "123456",
                    "taxReceiptPdfDownloadLink": "/invoices/D02005YFHI/receipts/123456/documents/statement"
                }
            ],
            "invoiceDetails": [
                {
                    "invoiceLineItemType": "billing_line_items",
                    "billingProvider": "office",
                    "links": {
                        "self": {
                            "uri": "/invoices/Recurring-D02005YFHI/lineitems/Office/BillingLineItems",
                            "method": "GET",
                            "headers": []
                        }
                    },
                    "attributes": {
                        "objectType": "InvoiceDetail"
                    }
                }
            ],
            "documentType": "invoice",
            "invoiceType": "Recurring",
            "links": {
                "self": {
                    "uri": "/invoices/Recurring-D02005YFHI",
                    "method": "GET",
                    "headers": []
                }
            },
            "attributes": {
                "objectType": "Invoice"
            }
        },
        {
            "id": "G000024130",
            "invoiceDate": "2018-02-08T01:22:47.603895Z",
            "totalCharges": 586366,
            "paidAmount": 0,
            "currencyCode": "CHF",
            "currencySymbol": "CHF",
            "pdfDownloadLink": "/invoices/G000024130/documents/statement",
            "taxReceipts": [
                {
                    "id": "234567",
                    "taxReceiptPdfDownloadLink": "/invoices/G000024130/receipts/234567/documents/statement"
                }
            ],
            "invoiceDetails": [
                {
                    "invoiceLineItemType": "billing_line_items",
                    "billingProvider": "one_time",
                    "links": {
                        "self": {
                            "uri": "/invoices/OneTime-G000024130/lineitems/OneTime/BillingLineItems",
                            "method": "GET",
                            "headers": []
                        }
                    },
                    "attributes": {
                        "objectType": "InvoiceDetail"
                    }
                }
            ],
            "amendments": [
                {
                    "id": "G000024131",
                    "invoiceDate": "2018-02-08T18:44:37.5381456Z",
                    "totalCharges": 107661.12,
                    "paidAmount": 0,
                    "currencyCode": "CHF",
                    "currencySymbol": "CHF",
                    "invoiceDetails": [
                        {
                            "invoiceLineItemType": "billing_line_items",
                            "billingProvider": "one_time",
                            "attributes": {
                                "objectType": "InvoiceDetail"
                            }
                        }
                    ],
                    "documentType": "adjustment_note",
                    "amendsOf": "G000024130",
                    "invoiceType": "OneTime",
                    "attributes": {
                        "objectType": "Invoice"
                    }
                }
            ],
            "documentType": "void_note",
            "invoiceType": "OneTime",
            "links": {
                "self": {
                    "uri": "/invoices/OneTime-G000024130",
                    "method": "GET",
                    "headers": []
                }
            },
            "attributes": {
                "objectType": "Invoice"
            }
        }
    ],
    "links": {
        "self": {
            "uri": "/invoices?size=2&offset=0",
            "method": "GET",
            "headers": []
        },
        "next": {
            "uri": "/invoices?size=2&offset=2",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}