Udostępnij za pośrednictwem


Interfejs API uzgadniania faktur rozliczanych w wersji 2 (GA)

Dotyczy: Centrum partnerskie (niedostępne w suwerennej chmurze)

Nasz nowy asynchroniczny interfejs API oferuje szybszy i bardziej wydajny sposób uzyskiwania dostępu do danych rozliczeń i uzgodnień za pośrednictwem obiektów blob platformy Azure. Zamiast utrzymywać połączenie otwarte przez wiele godzin lub przetwarzać partie 2000 wierszy, możesz teraz usprawnić przepływ pracy.

Nowy interfejs API uzgodnień faktur rozliczanych za pomocą nowego handlu korzysta z zaawansowanych technik, takich jak klucz valet i asynchroniczne wzorce żądań i odpowiedzi . Ten interfejs API udostępnia token sygnatury dostępu współdzielonego (SAS), którego można użyć do uzyskiwania dostępu do wszystkich atrybutów lub podzestawu rozliczanych danych uzgodnień faktur.

Nasz interfejs API używa zoptymalizowanych technik w celu zwiększenia wydajności, dzięki czemu można osiągnąć szybsze wyniki przy mniejszym nakładzie pracy. Przyjmij ten interfejs API, aby uprościć dostęp do danych i zwiększyć ogólną wydajność.

Uwaga

Nowy interfejs API nie jest hostowany na hoście interfejsu API Centrum partnerskiego. Zamiast tego można go znaleźć w programie MS Graph na stronie Używanie interfejsu API programu Microsoft Graph do eksportowania danych rozliczeń partnerów — Microsoft Graph w wersji 1.0. Aby uzyskać dostęp do tego interfejsu API, zapoznaj się z poniższymi szczegółami.

Ważne

Aby zezwolić aplikacji na dostęp do danych rozliczeniowych partnerów, postępuj zgodnie z tym linkiem i zapoznaj się z podstawami uwierzytelniania i autoryzacji dla programu Microsoft Graph.

Możesz przypisać uprawnienie "PartnerBilling.Read.All" przy użyciu witryny Azure Portal lub Centrum administracyjnego firmy Entra. Oto, jak to zrobić:

  • Zarejestruj aplikację na stronie głównej Microsoft Entra w sekcji Rejestracje aplikacji.
  • Aby udzielić niezbędnych uprawnień, przejdź do strony Microsoft Entra App w sekcji Uprawnienia interfejsu API. Wybierz pozycję "Dodaj uprawnienie" i wybierz zakres "PartnerBilling.Read.All".

Wykonując te kroki, upewnij się, że aplikacja ma wymagany dostęp do danych rozliczeniowych partnerów.

Przegląd interfejsu API

Aby ułatwić asynchroniczne pobieranie rozliczanych elementów wiersza faktur handlowych , oferujemy dwa kluczowe punkty końcowe interfejsu API. Oto usprawniony przewodnik, aby rozpocząć pracę:

Punkt końcowy uzgadniania faktur rozliczanych

Najpierw użyj tego interfejsu API, aby pobrać nowe pozycje wierszy rozliczeń faktur rozliczanych w handlu . Po wysłaniu żądania otrzymasz stan HTTP 202 i nagłówek lokalizacji z adresem URL. Regularnie sonduj ten adres URL do momentu uzyskania stanu powodzenia i adresu URL manifestu.

Punkt końcowy stanu operacji

Następnie należy sprawdzić stan operacji, wywołując ten interfejs API w regularnych odstępach czasu. Jeśli dane nie są gotowe, odpowiedź zawiera nagłówek Ponów próbę po zakończeniu wskazujący, jak długo czekać przed ponowną próbą. Po zakończeniu operacji otrzymasz zasób manifestu z linkiem folderu magazynu, aby pobrać dane użycia. Odpowiedź segmentuje pliki w celu zwiększenia przepływności i umożliwienia równoległości we/wy.

Wykonując te kroki, możesz efektywnie zarządzać procesem uzgadniania faktur.

Diagramów sekwencji

Oto diagram sekwencji przedstawiający kroki pobierania nowych danych uzgodnień faktur handlowych.

Diagram przedstawiający kroki pobierania danych uzgodnień.

Sekwencja akcji użytkownika

Aby pobrać rozliczane dane uzgodnień faktur, wykonaj następujące kroki:

Krok 1. Przesyłanie żądania

Prześlij żądanie POST do punktu końcowego interfejsu API.

Pobieranie rozliczanych elementów wierszy uzgodnień faktur

Żądanie interfejsu 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"

}

Parametry zapytań

Nie dotyczy

Treść żądania

Atrybut Wymagania Type Opis
attributeSet Fałsz String Wybierz pozycję "full" dla wszystkich atrybutów lub "basic" dla ograniczonego zestawu. Jeśli nie zostanie określony, "full" jest wartością domyślną. Sprawdź listę atrybutów w tej sekcji. Opcjonalne.
invoiceId Prawda String Unikatowy identyfikator każdej faktury. Wymagany.

Nagłówki żądań

Zażądaj nagłówków dla interfejsu API, wykonując kroki wymienione w artykule Najlepsze rozwiązania dotyczące korzystania z programu Microsoft Graph. Postępując zgodnie z tymi wytycznymi, upewnij się, że niezawodność i obsługa aplikacji. Uwagę na szczegóły w tym kroku ma kluczowe znaczenie dla bezproblemowej integracji i optymalnej wydajności.

Odpowiedź interfejsu API

HTTP/1.1 202 Accepted  
Location: <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>

Interfejs API zwykle odpowiada stanem HTTP 202. Możesz również napotkać inne stany w zależności od żądań. Te stany są wyświetlane w sekcji Stan odpowiedzi interfejsu API w warstwie Standardowa.

Kod opis
202 — zaakceptowane Twoje żądanie zostało zaakceptowane. Aby sprawdzić stan żądania, wykonaj zapytanie o adres URL podany w nagłówku lokalizacji.

Krok 2. Sprawdzanie stanu żądania

Aby śledzić stan żądania, upewnij się, że otrzymasz odpowiedź HTTP 200 wskazującą "powodzenie" lub "niepowodzenie". W przypadku pomyślnego znalezienia adresu URL manifestu w atrybucie "resourceLocation". Ten atrybut zapewnia punkt końcowy umożliwiający uzyskanie dostępu do wymaganych informacji.

Uzyskiwanie stanu operacji

Pobiera stan żądania.

Żądanie interfejsu API

GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>

Parametry żądania

Nazwisko Uwzględnij w Wymagania Type Opis
operationId Identyfikator URI żądania Prawda String Unikatowy identyfikator sprawdzania stanu żądania. Wymagany.

Nagłówek żądania

Zażądaj nagłówków dla interfejsu API, wykonując kroki wymienione w artykule Najlepsze rozwiązania dotyczące korzystania z programu Microsoft Graph. Postępując zgodnie z tymi wytycznymi, upewnij się, że niezawodność i obsługa aplikacji. Uwagę na szczegóły w tym kroku ma kluczowe znaczenie dla bezproblemowej integracji i optymalnej wydajności.

Treść żądania

Nie dotyczy.

Stan odpowiedzi

Oprócz standardowych stanów HTTP wymienionych w stanach odpowiedzi interfejsu API w warstwie Standardowa interfejs API może również zwrócić następujący stan HTTP:

Kod opis
410 – Zniknął Link manifestu wygasa po upływie określonego czasu. Aby ponownie uzyskać link manifestu, wyślij nowe żądanie.

Ładunek odpowiedzi

Ładunek odpowiedzi interfejsu API zawiera następujące atrybuty:

Atrybut Wymagania Opis
identyfikator Prawda Unikatowy identyfikator każdej odpowiedzi
Wymagany.
status Prawda Wartości i akcje: wymagane.
notstarted: Poczekaj na czas określony w nagłówku "Ponów próbę po", a następnie wykonaj kolejne wywołanie, aby sprawdzić stan.
running: Zaczekaj na czas określony w nagłówku "Ponów próbę po", a następnie wykonaj kolejne wywołanie, aby sprawdzić stan.
powodzenie: dane są gotowe. Pobierz ładunek manifestu przy użyciu identyfikatora URI określonego w obszarze resourceLocation.
niepowodzenie: operacja nie powiodła się trwale. Uruchom go ponownie.
createdDateTime Prawda Czas wysłania żądania.
Wymagany.
lastActionDateTime Prawda Czas ostatniej zmiany stanu.
Wymagany.
resourceLocation Fałsz Identyfikator URI ładunku manifestu.
Opcjonalne.
error Fałsz Szczegółowe informacje o wszelkich błędach podanych w formacie JSON.
Opcjonalne.
Uwzględnione atrybuty:
message: Opis błędu.
code: typ błędu.

Obiekt lokalizacji zasobu

Atrybut Opis
identyfikator Unikatowy identyfikator manifestu.
schemaVersion Wersja schematu manifestu.
dataFormat Format pliku danych rozliczeniowych.
compressedJSON: format danych, w którym każdy obiekt blob jest skompresowanym plikiem zawierającym dane w formacie wierszy JSON . Aby pobrać dane z każdego obiektu blob, zdekompresuj je.
createdDateTime Data i godzina utworzenia pliku manifestu.
eTag Wersja danych manifestu. Nowa wartość jest generowana za każdym razem, gdy nastąpi zmiana informacji rozliczeniowych.
partnerTenantId Microsoft Entra ID dzierżawy partnera.
rootDirectory Katalog główny pliku.
sasToken Token sygnatury dostępu współdzielonego (sygnatura dostępu współdzielonego), który umożliwia odczytywanie wszystkich plików w katalogu.
partitionType Dzieli dane na wiele obiektów blob na podstawie atrybutu partitionValue . System dzieli partycje, które przekraczają obsługiwaną liczbę. Domyślnie dane są partycjonowane na podstawie liczby elementów wiersza w pliku. Nie ustawiaj stałej liczby elementów wiersza ani rozmiaru pliku w kodzie, ponieważ te wartości mogą ulec zmianie.
BlobCount Łączna liczba plików dla tego identyfikatora dzierżawy partnera.
obiekty blob Tablica JSON obiektów "blob", które zawierają szczegóły pliku dla identyfikatora dzierżawy partnera.
Obiekt blob Obiekt zawierający następujące szczegóły:
name and partitionValue
name Nazwa obiektu blob.
partitionValue Partycja zawierająca plik. Partycja zawierająca plik. Duże partycje są podzielone na wiele plików, z których każda zawiera tę samą wartość "partitionValue".

Żądanie interfejsu API

GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>

Odpowiedź interfejsu API

Odpowiedź zaleca oczekiwanie na 10 sekund przed ponowną próbą, gdy dane są nadal przetwarzane.

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

Żądanie interfejsu API

(10 sekund po poprzednim żądaniu...)

GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>

Odpowiedź interfejsu API

Interfejs API zwraca stan "powodzenie" i identyfikator URI dla "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"

            }

        \]

    }

}

Krok 3. Pobieranie rozliczanych elementów wierszy uzgodnień faktur z usługi Azure Blob Storage

Najpierw należy uzyskać token sygnatury dostępu współdzielonego (SAS) i lokalizację magazynu obiektów blob. Te szczegóły można znaleźć we właściwościach "sasToken" i "rootDirectory" odpowiedzi interfejsu API ładunku manifestu. Następnie, aby pobrać i rozpakuć plik obiektu blob, użyj zestawu SDK/narzędzia usługi Azure Storage. Jest on w formacie JSONLines .

Napiwek

Pamiętaj, aby zapoznać się z naszym przykładowym kodem. Pokazano w nim, jak pobrać i rozpakować plik obiektu blob platformy Azure do lokalnej bazy danych.

Stany odpowiedzi interfejsu API w warstwie Standardowa

Możesz uzyskać następujące stany HTTP z odpowiedzi interfejsu API:

Kod opis
400 — nieprawidłowe żądanie Brak żądania lub zawiera nieprawidłowe dane. Sprawdź treść odpowiedzi, aby uzyskać szczegółowe informacje o błędzie.
401 — Brak autoryzacji Uwierzytelnianie jest wymagane przed wykonaniem pierwszego wywołania. Uwierzytelnianie za pomocą usługi interfejsu API partnera.
403 — Zabronione Nie masz niezbędnej autoryzacji, aby wysłać żądanie.
404 — nie znaleziono Żądane zasoby nie są dostępne z podanymi parametrami wejściowymi.
410 – Zniknął Link manifestu nie jest już prawidłowy ani aktywny. Prześlij nowe żądanie.
500 — wewnętrzny błąd serwera Interfejs API lub jego zależności nie mogą teraz spełnić żądania. Spróbuj ponownie później.
5000 — brak dostępnych danych System nie ma danych dla podanych parametrów wejściowych.

Atrybuty elementu wiersza uzgadniania faktur rozliczanych

Aby porównać atrybuty zwracane przez interfejs API uzgadniania faktur rozliczanych dla "pełnych" lub "podstawowych" zestawów atrybutów, zapoznaj się z poniższą tabelą. Aby dowiedzieć się więcej o tych atrybutach, zobacz Using the recon file (Używanie pliku recon).

Atrybut Pełny Podstawowy
PartnerId tak tak
Identyfikator klienta tak tak
CustomerName tak tak
Nazwadomeny klienta tak nie
CustomerCountry tak nie
Numer faktury tak tak
Identyfikator mpn tak nie
Tier2MpnId tak tak
OrderId (Identyfikator zamówienia) tak tak
OrderDate (Data zamówienia) tak tak
Identyfikator produktu tak tak
Identyfikator sku tak tak
Identyfikator dostępności tak tak
SkuName tak nie
ProductName tak tak
ChargeType tak tak
UnitPrice tak tak
Ilość tak nie
Suma częściowa tak tak
TaxTotal tak tak
Łącznie tak tak
Waluta tak tak
PriceAdjustmentDescription tak tak
PublisherName tak tak
Identyfikator wydawcy tak nie
SubscriptionDescription tak nie
SubscriptionId tak tak
ChargeStartDate tak tak
ChargeEndDate tak tak
TerminAndBillingCycle tak tak
EffectiveUnitPrice tak tak
Typ jednostki tak nie
Identyfikator alternatywny tak nie
BillableQuantity tak tak
RozliczeniaFrequency tak nie
PricingCurrency tak tak
PCToBCExchangeRate tak tak
PCToBCExchangeRateDate tak nie
MeterDescription tak nie
ReservationOrderId tak tak
CreditReasonCode tak tak
Data rozpoczęcia subskrypcji tak tak
Data subskrypcji tak tak
Identyfikator odwołania tak tak
ProductQualifiers tak nie
Identyfikator promocji tak tak
ProductCategory tak tak

Przykładowy kod

Aby użyć tego interfejsu API, zobacz następujący link, który zawiera przykładowy kod języka C#.

Partner-Center-Billing-Recon-Samples: Samples for API for Getting Billing recon data from Partner Center (github.com): Samples for API for Billing recon-data from Partner Center (github.com).