Ottenere le voci di utilizzo commerciale fatturate
Nota
Dopo il 21 gennaio 2025, è possibile continuare a usare questa API, ma non per tutti i periodi di fatturazione. Ecco come scegliere la versione corretta in base alle esigenze:
Obiettivo: recuperare le voci di utilizzo valutate giornaliere per i periodi di fatturazione da settembre 2022 a dicembre 2024.
Azione: usare questa API fino al 21 gennaio 2025, a meno che non si sia già passati all'API v2 GA.
Obiettivo: recuperare le voci di utilizzo valutate giornaliere per i periodi di fatturazione precedenti a settembre 2022.
Azione: usare questa API esclusivamente.
Obiettivo: recuperare le voci di utilizzo valutate giornaliere per i periodi di fatturazione da settembre 2022 in poi, ma solo dopo il 21 gennaio 2025.
Azione: usare solo l'API v2 GA.
Per una transizione senza problemi alle nuove API, seguire questo collegamento: API di riconciliazione dell'utilizzo con fatturazione e non fatturata giornaliera v2 (GA).
Grazie per l'attenzione e non vediamo l'ora di continuare il successo con le API di fatturazione.
È possibile utilizzare i metodi seguenti per ottenere una raccolta di dettagli per le voci della fattura a consumo commerciale (note anche come voci di utilizzo giornaliero chiuse) per una fattura specificata.
Importante
I dati di utilizzo valutati giornalieri non includono gli addebiti per questi prodotti:
- Prenotazione di Azure
- Piano di risparmio di Azure
- Office
- Dynamics
- Microsoft Power Apps
- Software perpetuo
- Sottoscrizione software
- Prodotto SaaS non Microsoft o Marketplace
Prerequisiti
Credenziali descritte in Autenticazione del Centro per i partner. Questo scenario supporta l'autenticazione con le credenziali app autonome e App+Utente.
ID fattura per cui ottenere le voci.
C#
Per ottenere le voci commerciali per la fattura specificata, è necessario recuperare l'oggetto fattura:
Chiamare il metodo ById per ottenere un'interfaccia alle operazioni della fattura per la fattura specificata.
Chiamare il metodo Get o GetAsync per recuperare l'oggetto fattura. L'oggetto fattura contiene tutte le informazioni per la fattura specificata.
Il provider identifica l'origine delle informazioni dettagliate fatturate, ad esempio una volta. InvoiceLineItemType specifica il tipo , ad esempio UsageLineItem.
Il codice di esempio seguente usa un ciclo foreach per elaborare la raccolta di elementi di riga. Viene recuperata una raccolta separata di elementi riga per ogni InvoiceLineItemType.
Per ottenere una raccolta di voci che corrispondono a un'istanza invoiceDetail :
Passare l'oggetto BillingProvider e InvoiceLineItemType dell'istanza al metodo By.
Chiamare il metodo Get o GetAsync per recuperare gli elementi di riga associati.
Creare un enumeratore per attraversare la raccolta, come illustrato nell'esempio seguente.
// IAggregatePartner partnerOperations;
// string invoiceId;
// 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(invoiceId).By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Get();
var fetchNext = true;
ConsoleKeyInfo keyInfo;
var itemNumber = 1;
while (fetchNext)
{
Console.Out.WriteLine("\tLine line 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(invoiceId).By("onetime", "usagelineitems", curencyCode, period, pageMaxSizeReconLineItems).Seek(seekBasedResourceCollection.ContinuationToken, SeekOperation.Next);
}
}
}
Vedere un esempio:
- Esempio: App di test della console
- Progetto: Esempi di SDK del Centro per i partner
- Classe: GetBilledConsumptionReconLineItemsPaging.cs
Richiesta REST
Sintassi della richiesta
Usare la prima sintassi per restituire un elenco completo di ogni voce per la fattura specificata. Per le fatture di grandi dimensioni, per recuperare un elenco di voci su più pagine usare la seconda sintassi con una dimensione specifica e un offset basato su 0. Usare la terza sintassi per ottenere la pagina successiva di elementi della riga di riconciliazione usando seekOperation = "Next"
.
metodo | URI della richiesta |
---|---|
GET | {baseURL}/v1/invoices/{invoice-id}/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode} HTTP/1.1 |
GET | {baseURL}/v1/invoices/{invoice-id}/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&size={size} HTTP/1.1 |
GET | {baseURL}/v1/invoices/{invoice-id}/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&size={size}&seekOperation=Next |
Parametri URI
Usare gli URI e i parametri di query seguenti durante la creazione della richiesta.
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
invoice-id | string | Sì | Stringa che identifica la fattura. |
provider | string | Sì | Provider: "OneTime". |
invoice-line-item-type | string | Sì | Tipo di dettaglio fattura: "UsageLineItems". |
currencyCode | string | Sì | Codice di valuta per le voci fatturate. |
period | string | Sì | Periodo per la riconciliazione fatturata. esempio: corrente, precedente. |
size | number | No | Numero massimo di elementi da restituire. Le dimensioni predefinite sono 2000 |
seekOperation | string | No | Impostare seekOperation=Next per ottenere la pagina successiva di elementi di ricognizione. |
Intestazioni delle richieste
Per altre informazioni, vedi Intestazioni REST del Centro per i partner.
Testo della richiesta
Nessuno.
Risposta REST
In caso di esito positivo, la risposta contiene la raccolta di dettagli dell'elemento di riga.
Per l'elemento riga ChargeType, il valore Purchase viene mappato a Nuovo. Il valore Rimborso viene mappato a Annulla.
Codici di errore e di esito della risposta
Ogni risposta viene fornita con un codice di stato HTTP che indica l'esito positivo o negativo e altre informazioni di debug. Usare uno strumento di traccia di rete per leggere questo codice, il tipo di errore e altri parametri. Per l'elenco completo, vedi Codici di errore REST del Centro per i partner.
Esempi REST
Esempio di richiesta-risposta 1
I dettagli per questo esempio di richiesta REST e risposta sono i seguenti:
- Provider: OneTime
- InvoiceLineItemType: UsageLineItems
- Periodo: Precedente
Esempio di richiesta 1
GET https://api.partnercenter.microsoft.com/v1/invoices/T000001234/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
Importante
A partire da giugno 2023, la versione più recente di .NET SDK del Centro per i partner 3.4.0 è ora archiviata. È possibile scaricare la versione dell'SDK da GitHub, insieme a un file leggimi che contiene informazioni utili.
I partner sono invitati a continuare a usare le API REST del Centro per i partner.
Esempio di risposta 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": "2b8940db-5089-539c-e757-520ed1d1bc88",
"partnerName": "",
"customerId": "",
"customerName": "",
"customerDomainName": "",
"invoiceNumber": "T000001234",
"productId": "",
"skuId": "",
"availabilityId": "",
"skuName": "Test Test on Windows 2012 R2 (WebHost)",
"productName": "Test Test on Windows",
"publisherName": "Test",
"publisherId": "28503520",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"subscriptionDescription": "Subscription 10",
"chargeStartDate": "2018-11-01T00:00:00Z",
"chargeEndDate": "2018-12-01T00:00:00Z",
"usageDate": "2018-11-13T00:00:00Z",
"meterType": "1 Compute Hour - 1core",
"meterCategory": "Virtual Machine Licenses",
"meterId": "1core",
"meterSubCategory": "Test Test on Windows",
"meterName": "Test Test on Windows - Test Test on Windows 2012 R2 (WebHost) - 1 Core Hours",
"meterRegion": "",
"unitOfMeasure": "1 Hour",
"resourceLocation": "EASTUS2",
"consumedService": "Microsoft.Compute",
"resourceGroup": "TestWINRG",
"resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/TestWINRG/providers/Microsoft.Compute/virtualMachines/testWinTest",
"tags": "",
"additionalInfo": "{ \"ImageType\": null, \"ServiceType\": \"Standard_B1s\", \"VMName\": null, \"VMProperties\": null, \"UsageType\": \"ComputeHR_SW\"}",
"serviceInfo1": "",
"serviceInfo2": "",
"customerCountry": "",
"mpnId": "1234567",
"resellerMpnId": "",
"chargeType": "new",
"unitPrice": 0.0209496384791679,
"quantity": 23.200004,
"unitType": "1 Hour",
"billingPreTaxTotal": 0.486031696515249,
"billingCurrency": "USD",
"pricingPreTaxTotal": 0.486031696515249,
"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": "2b8940db-5089-539c-e757-520ed1d1bc88",
"partnerName": "",
"customerId": "",
"customerName": "",
"customerDomainName": "",
"invoiceNumber": "T000001234",
"productId": "",
"skuId": "",
"availabilityId": "",
"skuName": "Test Test on Ubuntu 16.04 (WebHost)",
"productName": "Test Test on Linux",
"publisherName": "Test",
"publisherId": "28503520",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"subscriptionDescription": "Subscription 10",
"chargeStartDate": "2018-11-01T00:00:00Z",
"chargeEndDate": "2018-12-01T00:00:00Z",
"usageDate": "2018-11-13T00:00:00Z",
"meterType": "1 Compute Hour - 1core",
"meterCategory": "Virtual Machine Licenses",
"meterId": "1core",
"meterSubCategory": "Test Test on Linux",
"meterName": "Test Test on Linux - Test Test on Ubuntu 16.04 (WebHost) - 1 Core Hours",
"meterRegion": "",
"unitOfMeasure": "1 Hour",
"resourceLocation": "EASTUS",
"consumedService": "Microsoft.Compute",
"resourceGroup": "TESTRG",
"resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/TestRG/providers/Microsoft.Compute/virtualMachines/testUbuntuTest",
"tags": "",
"additionalInfo": "{ \"ImageType\": null, \"ServiceType\": \"Standard_B1s\", \"VMName\": null, \"VMProperties\": null, \"UsageType\": \"ComputeHR_SW\"}",
"serviceInfo1": "",
"serviceInfo2": "",
"customerCountry": "",
"mpnId": "1234567",
"resellerMpnId": "",
"chargeType": "new",
"unitPrice": 0.0209951014286867,
"quantity": 23.350007,
"unitType": "1 Hour",
"billingPreTaxTotal": 0.490235765325545,
"billingCurrency": "USD",
"pricingPreTaxTotal": 0.490235765325545,
"pricingCurrency": "USD",
"entitlementId": "66bada28-271e-4b7a-aaf5-c0ead6312345",
"entitlementDescription": "Partner Subscription",
"pcToBCExchangeRate": 1,
"pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
"effectiveUnitPrice": 0.1999968000511991808131,
"rateOfPartnerEarnedCredit": 0,
"rateOfCredit": 1,
"creditType": "Azure Credit Applied",
"invoiceLineItemType": "usage_line_items",
"billingProvider": "marketplace",
"benefitOrderId": "",
"benefitId": "",
"benefitType": "Charge",
"attributes": {
"objectType": "DailyRatedUsageLineItem"
}
}
],
"links": {
"self": {
"uri": "/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode=usd&period=previous&size=2000",
"method": "GET",
"headers": []
},
"next": {
"uri": "/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode=usd&period=previous&size=2000&seekOperation=Next",
"method": "GET",
"headers": [
{
"key": "MS-ContinuationToken",
"value": "AQAAAA=="
}
]
}
},
"attributes": {
"objectType": "Collection"
}
}
Esempio di richiesta-risposta 2
I dettagli per questo esempio di richiesta REST e risposta sono i seguenti:
- Provider: OneTime
- InvoiceLineItemType: UsageLineItems
- Periodo: Precedente
- SeekOperation: Avanti
Esempio di richiesta 2
GET https://api.partnercenter.microsoft.com/v1/invoices/T000001234/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
Esempio di risposta 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": "2b8940db-5089-539c-e757-520ed1d1bc88",
"partnerName": "",
"customerId": "",
"customerName": "",
"customerDomainName": "",
"invoiceNumber": "T000001234",
"productId": "",
"skuId": "",
"availabilityId": "",
"skuName": "Test Test on Windows 2012 R2 (WebHost)",
"productName": "Test Test on Windows",
"publisherName": "Test",
"publisherId": "28503520",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"subscriptionDescription": "Subscription 10",
"chargeStartDate": "2018-11-01T00:00:00Z",
"chargeEndDate": "2018-12-01T00:00:00Z",
"usageDate": "2018-11-13T00:00:00Z",
"meterType": "1 Compute Hour - 1core",
"meterCategory": "Virtual Machine Licenses",
"meterId": "1core",
"meterSubCategory": "Test Test on Windows",
"meterName": "Test Test on Windows - Test Test on Windows 2012 R2 (WebHost) - 1 Core Hours",
"meterRegion": "",
"unitOfMeasure": "1 Hour",
"resourceLocation": "EASTUS2",
"consumedService": "Microsoft.Compute",
"resourceGroup": "TestWINRG",
"resourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/TestWINRG/providers/Microsoft.Compute/virtualMachines/testWinTest",
"tags": "",
"additionalInfo": "{ \"ImageType\": null, \"ServiceType\": \"Standard_B1s\", \"VMName\": null, \"VMProperties\": null, \"UsageType\": \"ComputeHR_SW\"}",
"serviceInfo1": "",
"serviceInfo2": "",
"customerCountry": "",
"mpnId": "1234567",
"resellerMpnId": "",
"chargeType": "new",
"unitPrice": 0.0209496384791679,
"quantity": 23.200004,
"unitType": "1 Hour",
"billingPreTaxTotal": 0.486031696515249,
"billingCurrency": "USD",
"pricingPreTaxTotal": 0.486031696515249,
"pricingCurrency": "USD",
"entitlementId": "66bada28-271e-4b7a-aaf5-c0ead6312345",
"entitlementDescription": "Partner Subscription",
"pcToBCExchangeRate": 1,
"pcToBCExchangeRateDate": "2019-08-01T00:00:00Z",
"effectiveUnitPrice": 0.1835431430074643112595,
"rateOfPartnerEarnedCredit": 0.15,
"rateOfCredit": 0.15,
"creditType": "Partner Earned Credit Applied",
"benefitOrderId": "",
"benefitId": "",
"benefitType": "Charge",
"attributes": {
"objectType": "DailyRatedUsageLineItem"
}
}
],
"links": {
"self": {
"uri": "/invoices/T000001234/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode=usd&period=previous&size=2000",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Collection"
}
}