Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Kluczowe daty i scenariusze migracji
Strategia przejścia wersji interfejsu API została zaprojektowana w celu zapewnienia bezproblemowej migracji z interfejsu API w wersji 1 do interfejsu API w wersji 2, koncentrując się na utrzymywaniu funkcjonalności i integralności danych. Oto przewodnik ułatwiając wybór odpowiedniej wersji interfejsu API dla Twoich potrzeb:
Scenariusz 1: Bieżące lub poprzednie okresy rozliczeniowe (przed 21 kwietnia 2025 r.)::
- Kontynuuj korzystanie z tego interfejsu API do 21 kwietnia 2025 r., chyba że już przeszedłeś na wersję API v2 GA.
Scenariusz B: Bieżące lub poprzednie okresy rozliczeniowe (po 21 kwietnia 2025 r.):
- Przełącz się na API w wersji 2 GA dla wszystkich przyszłych pobrań danych z okresu rozliczeniowego.
Przejście z interfejsu API w wersji 1 do interfejsu API w wersji 2 obejmuje szczegółowe planowanie i dokładne wykonywanie. Aby zapewnić bezproblemowe przejście do nowego interfejsu API, odwiedź stronę: API do uzgadniania codziennie rozliczanego i nienaliczonego użycia w wersji 2 (GA).
Doceniamy Państwa zainteresowanie i jesteśmy zobowiązani do wspierania Państwa dalszego sukcesu naszymi API rozliczeniowymi.
Scenariusz C: Starsze dane handlowe (wszystkie okresy rozliczeniowe): użyj tego interfejsu API wyłącznie dla wszystkich Twoich potrzeb.
Jak uzyskać zbiór nierozliczonych elementów 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
- Dynamika
- Microsoft Power Apps - platforma do tworzenia aplikacji
- Oprogramowanie bezterminowe
- Subskrypcja oprogramowania
- Produkt SaaS firmy innej niż Microsoft lub Microsoft Marketplace
Uwaga
Możesz uzyskać dostęp do niezafakturowanych pozycji dziennego użycia za pośrednictwem interfejsu API lub portalu Centrum partnerskiego. Aby zapewnić dokładność danych, 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. Czasami najnowsze nienaliczone dane dotyczące dziennego użycia rozliczanego mogą nie być widoczne, dopóki dane rozliczane w poprzednim miesiącu nie będą dostępne. Po otrzymaniu danych rozliczeniowych możesz następnie uzyskać dostęp do wszystkich zaktualizowanych danych dotyczących niezafakturowanego użycia od początku miesiąca.
Kluczowe punkty:
- Poczekaj do 24 godzin na dostępność danych.
- W zależności od lokalizacji i czasu raportowania mierników mogą występować dalsze opóźnienia.
- Naliczane dane dotyczące dziennego użycia mają pierwszeństwo przed danymi, które nie zostały jeszcze naliczone.
Zrozumienie i cierpliwość są doceniane, ponieważ staramy się dostarczać najdokładniejsze i terminowe informacje.
Wymagania wstępne
- Poświadczenia, jak opisano w Uwierzytelnianie w Centrum partnerskim. Ten scenariusz obsługuje uwierzytelnianie zarówno przy użyciu samodzielnych poświadczeń aplikacji, jak i poświadczeń aplikacji i użytkownika.
C#
Aby pobrać elementy wiersza dla określonej faktury:
- Wywołaj metodę ById, aby uzyskać interfejs do operacji związanych z fakturą dla tej faktury.
- 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 :
- Przekaż wystąpienie BillingProvider i InvoiceLineItemType do metody By.
- Wywołaj metodę Get lubGetAsync , aby pobrać skojarzone elementy wiersza.
- 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.
| Metoda | Identyfikator URI żądania | Opis przypadku użycia składni |
|---|---|---|
| POBIERZ | Użyj tej składni, aby zwrócić pełną listę każdego elementu wiersza dla danej faktury. | |
| POBIERZ | {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. |
| POBIERZ | {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ń, korzystając z seekOperation = "Next". |
Parametry identyfikatora URI
Podczas tworzenia żądania użyj następującego identyfikatora URI i parametrów zapytania.
| Nazwisko | Typ | Wymagane | opis |
|---|---|---|---|
| dostawca | ciąg | Tak | Dostawca: "OneTime". |
| typ pozycji faktury | ciąg | Tak | Typ szczegółów faktury: "UsageLineItems", "UsageLineItems". |
| kod waluty | ciąg | Tak | Kod waluty dla niezafakturowanych pozycji. |
| okres | ciąg | Tak | Okres dla nierozliczonych recon (na przykład: current, previous). Załóżmy, że w styczniu musisz wykonać zapytanie dotyczące niezafakturowanych danych użycia z cyklu rozliczeniowego (01/01/2020 – 31/01/2020), wybierz okres jako „Bieżący”, w przeciwnym razie „Poprzedni”. |
| rozmiar | liczba | Nie. | Maksymalna liczba elementów do zwrócenia. Domyślny rozmiar to 2000. |
| operacja szukania | ciąg | Nie. | Ustaw seekOperation=Next pozycję, aby pobrać następną stronę elementów wiersza uzgodnień. |
Nagłówki żądań
Więcej informacji można znaleźć w Nagłówkach REST centrum partnerskiego.
Treść żądania
Brak.
Odpowiedź REST
W przypadku powodzenia odpowiedź zawiera kolekcję szczegółów pozycji w wierszu.
W przypadku elementu wiersza ChargeType wartość Zakup jest mapowana na nowy , a wartość Zwrot jest mapowany na Anuluj.
Kody sukcesu 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¤cycode=usd&period=previous&size=2000 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 1234ecb8-37af-45f4-a1a1-358de3ca2b9e
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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ę wydania SDK z GitHub, wraz z plikiem readme zawierającym przydatne informacje.
Zachęcamy partnerów do dalszego korzystania z Partner Center REST APIs.
Przykład odpowiedzi 1
HTTP/1.1 200 OK
Content-Length: 2484
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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¤cycode=usd&period=previous&size=2000",
"method": "GET",
"headers": []
},
"next": {
"uri": "/invoices/unbilled/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode=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¤cyCode=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: aaaa0000-bb11-2222-33cc-444444dddddd
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: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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¤cycode=usd&period=previous&size=2000",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Collection"
}
}