Teilen über


Abrufen einer Auflistung von Rechnungen

Gilt für: Partner Center | Partner Center-Betrieb durch 21Vianet | Partner Center für Microsoft Cloud for US Government

So rufen Sie eine Sammlung der Rechnungen des Partners ab.

Voraussetzungen

  • Anmeldeinformationen, wie unter Partner Center-Authentifizierung beschrieben. Dieses Szenario unterstützt die Authentifizierung mit eigenständigen App- und App+Benutzeranmeldeinformationen.

C#

Um eine Sammlung aller verfügbaren Rechnungen abzurufen, verwenden Sie die Invoices-Eigenschaft, um eine Schnittstelle zu Rechnungsvorgängen abzurufen, und rufen Sie dann die Get- oder GetAsync-Methode auf, um die Sammlung abzurufen.

Rufen Sie zuerst die BuildIndexedQuery-Methode auf, und übergeben Sie die Seitengröße, um eine seitenseitige Sammlung von Rechnungen zu erstellen. Verwenden Sie als Nächstes die Invoices-Eigenschaft, um eine Schnittstelle zu Rechnungsvorgängen abzurufen, und übergeben Sie dann das IQuery-Objekt an die Query- oder QueryAsync-Methode, um die Anforderung zu senden und die erste Seite abzurufen.

Verwenden Sie als Nächstes die Enumerators-Eigenschaft, um eine Schnittstelle zur Sammlung der unterstützten Ressourcenauflistungs-Enumerationen abzurufen, und rufen Sie dann Invoices.Create auf, um eine Enumeration zum Durchlaufen der Sammlung von Rechnungen zu erstellen. Verwenden Sie schließlich den Enumerator zum Abrufen und Arbeiten mit jeder Seite von Rechnungen, wie im folgenden Codebeispiel gezeigt. Jeder Aufruf der Next-Methode sendet eine Anforderung für die nächste Seite von Rechnungen basierend auf der Seitengröße.

// 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();
}

Ein etwas anderes Beispiel finden Sie unter Beispiel: Konsolentest-App. Projekt: Partner Center SDK Samples Class: GetPagedInvoices.cs

Hinweis

Die gleiche API wird für alle modernen kommerziellen Einkäufe sowie 145p- und Office-Lizenzen verwendet. Größe und Offset werden nur bei älteren Rechnungen berücksichtigt. Bei allen modernen kommerziellen Käufen werden Seitengröße und Offset ignoriert.

REST-Anforderung

Anforderungssyntax

Methode Anforderungs-URI
GET {baseURL}/v1/invoices?size={size}&offset={offset} HTTP/1.1
GET {baseURL}/v1/invoices?size={size}&offset={offset}&filter={"LeftFilter":{"Field":{field},"Value":{value},"Operator":{operator}},"RightFilter":{"Field":{field},"Value":{value},"Operator":{operator}},"Operator":{operator}} HTTP/1.1

URI-Parameter

Verwenden Sie beim Erstellen der Anforderung die folgenden Abfrageparameter.

Name Type Erforderlich Beschreibung
size int No Die Anzahl der Rechnungsressourcen, die in der Antwort zurückgegeben werden sollen. Dieser Parameter ist optional.
offset int No Der nullbasierte Index der ersten Rechnung, die zurückgegeben werden soll.
filter Zeichenfolge No Textbasierte benutzerdefinierte Filterkriterien, um die Rechnungsressourcen in der Antwort zu reduzieren. Verwenden Sie diese Bedingung, um Timeoutfehler zu verhindern. Erfahren Sie , wie Sie die Filterbedingung verwenden.

Verwenden der Filterbedingung

Beispiel für die Filterbedingung:

/v1/rechnungen?size=10&offset=0&filter={"LeftFilter":{"Field":"InvoiceDate","Value":"01/01/2023","Operator":"greater_than_or_equals"},"RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"},"Operator":"And"}

Die Filterkriterien bestehen aus drei Teilen:

  • LeftFilter: Das erste Filterkonstrukt, in dem Sie das Feld, den Wert und den Operator für die linke Seite des Filterausdrucks angeben.

    Feld: Attribut, das zum Filtern verwendet werden soll. Wert: Wert des Attributs

    Beispielsweise bedeutet "LeftFilter": {"Field":"InvoiceDate","Value":"01/01/2023","Operator":"greater_than_or_equals"}, dass Sie Rechnungen filtern möchten, die ein Rechnungsdatum am oder nach dem 1. Januar 2023 haben.

  • RightFilter: Das zweite Filterkonstrukt, in dem Sie das Feld, den Wert und den Operator für die rechte Seite des Filterausdrucks angeben.

    Beispielsweise bedeutet "RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"}, dass Sie Rechnungen mit einem Rechnungsdatum am oder vor dem 31. Dezember 2023 filtern möchten.

  • Operator: Der logische Operator, der die linken und rechten Filter verbindet. Sie können entweder "und" oder "oder" als Operator verwenden.

    "Operator": "and" bedeutet beispielsweise, dass Sie Rechnungen filtern möchten, die sowohl den Kriterien für den linken als auch den rechten Filter entsprechen.

Um einen einzelnen Filter zu verwenden, geben Sie einfach den Feldnamen, den Wert und den Operator ein. Für das Konstrukt "LeftFilter" oder "RightFilter" ist kein Bedarf erforderlich.

Anforderungsheader

Weitere Informationen finden Sie unter Partner Center-REST-Header.

Anforderungstext

Keine

Anforderungsbeispiel

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

Wichtig

Ab Juni 2023 ist jetzt die neueste Partner Center .NET SDK-Version 3.4.0 archiviert. Sie können das SDK-Release von GitHub zusammen mit einer Infodatei herunterladen, die nützliche Informationen enthält.

Partnern wird empfohlen, weiterhin die Partner Center-REST-APIs zu verwenden.

REST-Antwort

Bei erfolgreicher Ausführung enthält der Antworttext die Sammlung von Rechnungsressourcen .

Erfolgs- und Fehlercodes der Antwort

Jede Antwort enthält einen HTTP-Statuscode, der Erfolg oder Fehler und andere Debuginformationen angibt. Verwenden Sie ein Netzwerkablaufverfolgungstool, um diesen Code, fehlertyp und andere Parameter zu lesen. Die vollständige Liste finden Sie unter Partner Center-REST-Fehlercodes.

Beispielantwort

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