Pobieranie elementów wiersza komercyjnego użycia nierozliczonego na fakturze

Uwaga

Od 21 stycznia 2025 r. ten interfejs API będzie przestarzały. Zaplanuj przejście, aby zapewnić ciągłość.

  • Cel: Pobierz niezaliczone dzienne elementy wierszy użycia dla bieżących i poprzednich okresów rozliczeniowych przed 21 stycznia 2025 r.

  • Akcja: użyj tego interfejsu API przed 21 stycznia 2025 r. lub przejdź do interfejsu API w wersji 2 (ogólna dostępność) wcześniej.

  • Cel: Pobierz niezaliczone dzienne elementy wierszy użycia dla bieżących i poprzednich okresów rozliczeniowych od 21 stycznia 2025 r.

  • Akcja: użyj tylko interfejsu API w wersji 2 (ogólna dostępność).

Aby bezproblemowo przejść do nowych interfejsów API, postępuj zgodnie z tym linkiem: Rozliczane i nienaliczone codziennie interfejs API uzgodnień użycia w wersji 2 (GA).

Dziękujemy za twoją uwagę i czekamy na twój ciągły sukces z naszymi interfejsami API rozliczeń.

Jak uzyskać kolekcję nierozliczonych szczegółów elementu wiersza użycia komercyjnego.

Za pomocą poniższych metod można programowo pobrać kolekcję nienaliczonych elementów wiersza użycia komercyjnego (nazywanych również otwartymi elementami wiersza użycia).

Ważne

Dane dziennego użycia nie obejmują opłat za te produkty:

  • Rezerwacja platformy Azure
  • Plan oszczędnościowy Azure
  • Office
  • Dynamics
  • Microsoft Power Apps
  • Oprogramowanie bezterminowe
  • Subskrypcja oprogramowania
  • Produkt SaaS firmy innej niż Microsoft lub platforma handlowa

Uwaga

Dostęp do nienaliczonych elementów wierszy dziennego użycia można uzyskać za pośrednictwem interfejsu API lub portalu Centrum partnerskiego. Aby zapewnić dokładne dane, poczekaj do 24 godzin na dostępność. W zależności od lokalizacji i momentu raportowania użycia mierników mogą wystąpić dalsze opóźnienia.

Priorytetem jest terminowe dostarczanie rozliczanych danych dziennego użycia. Od czasu do czasu dane dotyczące użycia rozliczanego w poprzednim miesiącu mogą nie być widoczne dla najnowszych nienaliczonych danych dziennego użycia. Po otrzymaniu rozliczanych danych użycia możesz pobrać wszystkie zaktualizowane niezliczone dane użycia od początku miesiąca.

Zrozumienie i cierpliwość są doceniane, ponieważ staramy się dostarczać najdokładniejsze i terminowe informacje.

Wymagania wstępne

  • Poświadczenia zgodnie z opisem w temacie Uwierzytelnianie w Centrum partnerskim. Ten scenariusz obsługuje uwierzytelnianie zarówno przy użyciu autonomicznych poświadczeń aplikacji, jak i aplikacji i użytkownika.

C#

Aby pobrać elementy wiersza dla określonej faktury:

  1. Wywołaj metodę ById , aby pobrać interfejs do operacji na fakturze dla określonej faktury.
  2. Wywołaj metodę Get lub GetAsync, aby pobrać obiekt faktury.

Obiekt faktury zawiera wszystkie informacje dotyczące określonej faktury. Dostawca identyfikuje źródło nierozliczonych informacji szczegółowych (na przykład OneTime). Parametr InvoiceLineItemType określa typ (na przykład UsageLineItem).

Poniższy przykładowy kod używa pętli foreach do przetwarzania kolekcji InvoiceLineItems . Dla każdego elementu InvoiceLineItemType jest pobierana oddzielna kolekcja elementów wiersza.

Aby uzyskać kolekcję elementów wiersza odpowiadających wystąpieniu InvoiceDetail :

  1. Przekaż element BillingProvider i InvoiceLineItemType wystąpienia do metody By.
  2. Wywołaj metodę Get lub GetAsync, aby pobrać skojarzone elementy wiersza.
  3. Utwórz moduł wyliczający, aby przejść przez kolekcję, jak pokazano w poniższym przykładzie.
// IAggregatePartner partnerOperations;
// string curencyCode;
// string period;
// int pageMaxSizeReconLineItems = 2000;

// all the operations executed on this partner operation instance will share the same correlation Id but will differ in request Id
IPartner scopedPartnerOperations = partnerOperations.With(RequestContextFactory.Instance.Create(Guid.NewGuid()));

var seekBasedResourceCollection = scopedPartnerOperations.Invoices.ById("unbilled").By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Get();

var fetchNext = true;

ConsoleKeyInfo keyInfo;

var itemNumber = 1;
while (fetchNext)
{
    Console.Out.WriteLine("\tLine items count: " + seekBasedResourceCollection.Items.Count());

    seekBasedResourceCollection.Items.ToList().ForEach(item =>
    {
        // Instance of type DailyRatedUsageLineItem
        if (item is DailyRatedUsageLineItem)
        {
            Type t = typeof(DailyRatedUsageLineItem);
            PropertyInfo[] properties = t.GetProperties();

            foreach (PropertyInfo property in properties)
            {
                // Insert code here to work with the line item properties
            }
        }
        itemNumber++;
    });

    Console.Out.WriteLine("\tPress any key to fetch next data. Press the Escape (Esc) key to quit: \n");
    keyInfo = Console.ReadKey();

    if (keyInfo.Key == ConsoleKey.Escape)
    {
        break;
    }

    fetchNext = !string.IsNullOrWhiteSpace(seekBasedResourceCollection.ContinuationToken);

    if (fetchNext)
    {
        if (seekBasedResourceCollection.Links.Next.Headers != null && seekBasedResourceCollection.Links.Next.Headers.Any())
        {
            seekBasedResourceCollection = scopedPartnerOperations.Invoices.ById("unbilled").By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Seek(seekBasedResourceCollection.ContinuationToken, SeekOperation.Next);
        }
    }
}

Aby zapoznać się z podobnym przykładem, zobacz:

  • Przykład: aplikacja testowa konsoli
  • Projekt: Przykłady zestawu SDK Centrum partnerskiego
  • Klasa: GetUnBilledConsumptionReconLineItemsPaging.cs

Żądanie REST

Składnia żądania

W zależności od przypadku użycia można użyć następujących składni dla żądania REST. Aby uzyskać więcej informacji, zobacz opisy każdej składni.

Method Identyfikator URI żądania Opis przypadku użycia składni
GET {baseURL}/v1/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&period={period} HTTP/1.1 Użyj tej składni, aby zwrócić pełną listę każdego elementu wiersza dla danej faktury.
GET {baseURL}/v1/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&period={period}&size={size} HTTP/1.1 Użyj tej składni dla dużych faktur. Użyj tej składni z określonym rozmiarem i przesunięciem opartym na 0, aby zwrócić stronicową listę elementów wiersza.
GET {baseURL}/v1/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&period={period}&size={size}&seekOperation=Next Użyj tej składni, aby uzyskać następną stronę elementów wiersza uzgodnień przy użyciu polecenia seekOperation = "Next".

Parametry identyfikatora URI

Podczas tworzenia żądania użyj następującego identyfikatora URI i parametrów zapytania.

Nazwisko Type Wymagania opis
dostawca string Tak Dostawca: "OneTime".
typ elementu faktury string Tak Typ szczegółów faktury: "UsageLineItems", "UsageLineItems".
currencyCode string Tak Kod waluty dla niezaliczonych elementów wiersza.
okres string Tak Okres dla nierozliczonych recon (na przykład: current, previous). Załóżmy, że w styczniu musisz wykonać zapytanie dotyczące niezbilonych danych użycia cyklu rozliczeniowego (01/01/2020 – 01/31/2020) w styczniu wybierz okres jako "Bieżący" , w przeciwnym razie "Poprzedni".
size numer Nie. Maksymalna liczba elementów do zwrócenia. Domyślny rozmiar to 2000.
seekOperation string Nie Ustaw seekOperation=Next pozycję , aby pobrać następną stronę elementów wiersza uzgodnień.

Nagłówki żądań

Aby uzyskać więcej informacji, zobacz Nagłówki REST Centrum partnerskiego.

Treść żądania

Brak.

Odpowiedź REST

W przypadku powodzenia odpowiedź zawiera kolekcję szczegółów elementu wiersza.

W przypadku elementu wiersza ChargeType wartość Zakup jest mapowana na nowy , a wartość Zwrot jest mapowany na Anuluj.

Kody powodzenia i błędów odpowiedzi

Każda odpowiedź zawiera kod stanu HTTP, który wskazuje powodzenie lub niepowodzenie i inne informacje o debugowaniu. Użyj narzędzia do śledzenia sieci, aby odczytać ten kod, typ błędu i inne parametry. Aby uzyskać pełną listę, zobacz Kody błędów REST Centrum partnerskiego.

Przykłady odpowiedzi na żądanie

Przykład odpowiedzi na żądanie 1

Poniższe szczegóły dotyczą tego przykładu:

  • Dostawca: OneTime
  • InvoiceLineItemType: UsageLineItems
  • Okres: poprzedni

Przykład żądania 1

GET https://api.partnercenter.microsoft.com/v1//invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CorrelationId: 5e612512-4345-4bb0-866e-47aeda031234
X-Locale: en-US
MS-PartnerCenter-Application: Partner Center .NET SDK Samples
Host: api.partnercenter.microsoft.com

Ważne

Od czerwca 2023 r. najnowsza wersja zestawu .NET SDK Centrum partnerskiego 3.4.0 jest teraz archiwizowana. Możesz pobrać wersję zestawu SDK z usługi GitHub wraz z plikiem readme zawierającym przydatne informacje.

Zachęcamy partnerów do dalszego korzystania z interfejsów API REST Centrum partnerskiego.

Przykład odpowiedzi 1

HTTP/1.1 200 OK
Content-Length: 2484
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 5e612512-4345-4bb0-866e-47aeda031234
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CV: bpqyomePDUqrSSYC.0
MS-ServerId: 202010406
Date: Wed, 20 Feb 2019 19:59:27 GMT

{
    "totalCount": 2,
    "items": [
        {
            "partnerId": "00083575-bbd0-54de-b2ad-0f5b0e927d71",
            "partnerName": "MTBC",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "VM-Series Next-Generation Firewall (Bundle 2 PAYG)",
            "productName": "VM-Series Next Generation Firewall",
            "publisherName": "Test Alto Networks, Inc.",
            "publisherId": "",
            "subscriptionId": "12345678-04d9-421c-baf8-e3b8dd62ddba",
            "subscriptionDescription": "Pay-As-You-Go",
            "chargeStartDate": "2019-01-01T00:00:00Z",
            "chargeEndDate": "2019-02-01T00:00:00Z",
            "usageDate": "2019-01-01T00:00:00Z",
            "meterType": "1 Compute Hour - 4core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "4core",
            "meterSubCategory": "VM-Series Next Generation Firewall",
            "meterName": "VM-Series Next Generation Firewall - VM-Series Next-Generation Firewall (Bundle 2 PAYG) - 4 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "ECH-PAN-RG",
            "resourceUri": "/subscriptions/12345678-04d9-421c-baf8-e3b8dd62ddba/resourceGroups/ECH-PAN-RG/providers/Microsoft.Compute/virtualMachines/echpanfw",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_D3_v2\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "",
            "unitPrice": 1.2799888920023,
            "quantity": 24.0,
            "unitType": "",
            "billingPreTaxTotal": 30.7197334080551,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 30.7197334080551,
            "pricingCurrency": "USD",
            "entitlementId": "3f47bcf1-965d-40a1-a2bc-3d5db3653250",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0,
            "rateOfPartnerEarnedCredit": 0,
            "rateOfCredit": 0,
            "creditType": "Credit Not Applied",
            "invoiceLineItemType": "usage_line_items",
            "billingProvider": "marketplace",
        "benefitOrderId": "5ea053d6-4a0d-46ef-bc82-15065b475d01",
        "benefitId": "28ddab06-2c5b-479e-88bb-7b7bfda4e7fd",
        "benefitType": "SavingsPlan",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
         },
         {
            "partnerId": "00083575-bbd0-54de-b2ad-0f5b0e927d71",
            "partnerName": "MTBC",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "VM-Series Next-Generation Firewall (Bundle 2 PAYG)",
            "productName": "VM-Series Next Generation Firewall",
            "publisherName": "Test Alto Networks, Inc.",
            "publisherId": "",
            "subscriptionId": "12345678-04d9-421c-baf8-e3b8dd62ddba",
            "subscriptionDescription": "Pay-As-You-Go",
            "chargeStartDate": "2019-01-01T00:00:00Z",
            "chargeEndDate": "2019-02-01T00:00:00Z",
            "usageDate": "2019-01-02T00:00:00Z",
            "meterType": "1 Compute Hour - 4core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "4core",
            "meterSubCategory": "VM-Series Next Generation Firewall",
            "meterName": "VM-Series Next Generation Firewall - VM-Series Next-Generation Firewall (Bundle 2 PAYG) - 4 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "ECH-PAN-RG",
            "resourceUri": "/subscriptions/12345678-04d9-421c-baf8-e3b8dd62ddba/resourceGroups/ECH-PAN-RG/providers/Microsoft.Compute/virtualMachines/echpanfw",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_D3_v2\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "",
            "unitPrice": 1.2799888920023,
            "quantity": 24.0,
            "unitType": "",
            "billingPreTaxTotal": 30.7197334080551,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 30.7197334080551,
            "pricingCurrency": "USD",
            "entitlementId": "31cdf47f-b249-4edd-9319-637862d12345",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0,
            "rateOfPartnerEarnedCredit": 0,
            "rateOfCredit": 1,
            "creditType": "Azure Credit Applied",
            "invoiceLineItemTypce": "usage_line_items",
            "billingProvider": "marketplace",
        "benefitOrderId": "",
            "benefitId": "",
            "benefitType": "Charge",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
        }
    ],
    "links": {
        "self": {
            "uri": "/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000",
            "method": "GET",
            "headers": []
        },
        "next": {
            "uri": "/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000&seekOperation=Next",
            "method": "GET",
            "headers": [
                {
                    "key": "MS-ContinuationToken",
                    "value": "AQAAAA=="
                }
            ]
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}

Przykład odpowiedzi na żądanie 2

Poniższe szczegóły dotyczą tego przykładu:

  • Dostawca: OneTime
  • InvoiceLineItemType: UsageLineItems
  • Okres: poprzedni
  • SeekOperation: Dalej

Przykład żądania 2

GET https://api.partnercenter.microsoft.com/v1/invoices/unbilled/lineitems?provider=onetime&invoiceLineItemType=usagelineitems&currencyCode=usd&period=previous&size=2000&seekoperation=next HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-ContinuationToken: d19617b8-fbe5-4684-a5d8-0230972fb0cf,0705c4a9-39f7-4261-ba6d-53e24a9ce47d_a4ayc/80/OGda4BO/1o/V0etpOqiLx1JwB5S3beHW0s=,0d81c700-98b4-4b13-9129-ffd5620f72e7
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CorrelationId: 5e612512-4345-4bb0-866e-47aeda031234
X-Locale: en-US
MS-PartnerCenter-Application: Partner Center .NET SDK Samples
Host: api.partnercenter.microsoft.com

Przykład odpowiedzi 2

HTTP/1.1 200 OK
Content-Length: 2484
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 5e612512-4345-4bb0-866e-47aeda031234
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CV: bpqyomePDUqrSSYC.0
MS-ServerId: 202010406
Date: Wed, 20 Feb 2019 19:59:27 GMT

{
    "totalCount": 1,
    "items": [
        {
            "partnerId": "00083575-bbd0-54de-b2ad-0f5b0e927d71",
            "partnerName": "MTBC",
            "customerId": "",
            "customerName": "",
            "customerDomainName": "",
            "invoiceNumber": "",
            "productId": "",
            "skuId": "",
            "availabilityId": "",
            "skuName": "VM-Series Next-Generation Firewall (Bundle 2 PAYG)",
            "productName": "VM-Series Next Generation Firewall",
            "publisherName": "Test Alto Networks, Inc.",
            "publisherId": "",
            "subscriptionId": "12345678-04d9-421c-baf8-e3b8dd62ddba",
            "subscriptionDescription": "Pay-As-You-Go",
            "chargeStartDate": "2019-01-01T00:00:00Z",
            "chargeEndDate": "2019-02-01T00:00:00Z",
            "usageDate": "2019-01-02T00:00:00Z",
            "meterType": "1 Compute Hour - 4core",
            "meterCategory": "Virtual Machine Licenses",
            "meterId": "4core",
            "meterSubCategory": "VM-Series Next Generation Firewall",
            "meterName": "VM-Series Next Generation Firewall - VM-Series Next-Generation Firewall (Bundle 2 PAYG) - 4 Core Hours",
            "meterRegion": "",
            "unitOfMeasure": "1 Hour",
            "resourceLocation": "EASTUS",
            "consumedService": "Microsoft.Compute",
            "resourceGroup": "ECH-PAN-RG",
            "resourceUri": "/subscriptions/12345678-04d9-421c-baf8-e3b8dd62ddba/resourceGroups/ECH-PAN-RG/providers/Microsoft.Compute/virtualMachines/echpanfw",
            "tags": "",
            "additionalInfo": "{  \"ImageType\": null,  \"ServiceType\": \"Standard_D3_v2\",  \"VMName\": null,  \"VMProperties\": null,  \"UsageType\": \"ComputeHR_SW\"}",
            "serviceInfo1": "",
            "serviceInfo2": "",
            "customerCountry": "",
            "mpnId": "1234567",
            "resellerMpnId": "",
            "chargeType": "",
            "unitPrice": 1.2799888920023,
            "quantity": 24.0,
            "unitType": "",
            "billingPreTaxTotal": 30.7197334080551,
            "billingCurrency": "USD",
            "pricingPreTaxTotal": 30.7197334080551,
            "pricingCurrency": "USD",
            "entitlementId": "31cdf47f-b249-4edd-9319-637862d8c0b4",
            "entitlementDescription": "Partner Subscription",
            "pcToBCExchangeRate": 1,
            "pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
            "effectiveUnitPrice": 0,
            "rateOfPartnerEarnedCredit": 0.15,
            "rateOfCredit": 0.15,
            "creditType": "Partner Earned Credit Applied",
            "invoiceLineItemType": "usage_line_items",
            "billingProvider": "marketplace",
        "benefitOrderId": "",
            "benefitId": "",
            "benefitType": "Charge",
            "attributes": {
                "objectType": "DailyRatedUsageLineItem"
            }
        }
    ],
    "links": {
        "self": {
             "uri": "/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems&currencycode=usd&period=previous&size=2000",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Collection"
    }
}