Получить позиции счета за коммерческое потребление
Примечание.
ключевые даты и сценарии миграции
Стратегия перехода версий API предназначена для обеспечения плавной миграции с API версии 1 на API версии 2 с акцентом на поддержание функциональности и целостности данных. Ниже приведено руководство по выбору подходящей версии API для ваших потребностей:
сценарий A: исторические данные (до периода выставления счетов за сентябрь 2022 года):
- Используйте этот API исключительно для всех ваших нужд.
сценарий B: последние периоды выставления счетов (сентябрь 2022 г. – март 2025 г.):
- Продолжить использование этого API до 21 апреля 2025 г., если вы еще не перешли в общедоступную версию API версии 2.
сценарий C: будущие периоды выставления счетов после марта 2025 г. (после 21 апреля 2025 г.):
- Перейти на API v2 GA для извлечения данных всех будущих расчетных периодов.
Переход от API версии 1 к API версии 2 включает подробное планирование и точное выполнение. Чтобы обеспечить плавный переход к новому API, посетите: API ежесуточной сверки тарифицированного и нетарифицированного использования, версия 2 GA.
Мы ценим ваше внимание и привержены поддержке ваших дальнейших успехов с нашими API выставления счетов.
Вы можете использовать следующие методы, чтобы получить коллекцию сведений о строках счетов на коммерческое потребление (также известных как закрытые позиции по ежедневному учету использования) для указанного счета.
Внимание
Данные о ежедневном использовании не включают расходы на эти продукты:
- Резервирование Azure
- Экономичный план Azure
- Офис
- Динамика
- Microsoft Power Apps
- Программное обеспечение с бессрочной лицензией
- Подписка на программное обеспечение
- Продукт SaaS, отличный от Майкрософт или Marketplace
Предварительные требования
Учетные данные, как описано в проверке подлинности партнёрского центра. Этот сценарий поддерживает проверку подлинности с использованием как автономного приложения, так и учетных данных приложения и пользователя.
Идентификатор счета для получения списка строковых элементов.
C#
Чтобы получить элементы коммерческой строки для указанного счета, необходимо получить объект счета:
Вызовите метод ById, чтобы получить интерфейс для операций с указанным счетом-фактурой.
Вызовите метод Get или GetAsync, чтобы получить объект счета. Объект счета содержит все сведения для указанного счета.
Поставщик определяет источник сведений о выставлении счетов (например, один раз). Объект InvoiceLineItemType указывает тип (например, UsageLineItem).
В следующем примере кода используется цикл `foreach` для обработки коллекции строк. Для каждого InvoiceLineItemType извлекается отдельная коллекция строк.
Чтобы получить коллекцию позиций, соответствующих экземпляру InvoiceDetail:
Передайте BillingProvider и InvoiceLineItemType экземпляра методу By.
Вызовите метод Get или GetAsync, чтобы получить связанные элементы строки.
Создайте перечислитель для обхода коллекции, как показано в следующем примере.
// 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);
}
}
}
См. пример:
- Пример: Тестовое консольное приложение
- Проект: примеры пакета SDK центра партнеров
- Класс: GetBilledConsumptionReconLineItemsPaging.cs
Запрос REST
Синтаксис запроса
Используйте первый синтаксис, чтобы вернуть полный список каждого элемента строки для заданного счета. Для больших счетов-фактур используйте второй синтаксис с указанным размером и смещением, начинающимся с 0, чтобы вернуть разбитый на страницы список позиций. Используйте третий синтаксис, чтобы получить следующую страницу рекогносцировочных элементов с помощью seekOperation = "Next"
.
Способ | URI запроса |
---|---|
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 |
ПОЛУЧИТЬ | {baseURL}/v1/invoices/{invoice-id}/lineitems?provider=onetime&invoicelineitemtype=usagelineitems¤cycode={currencycode}&size={size}&seekOperation=Next |
Параметры универсального кода ресурса (URI)
При создании запроса используйте следующие параметры URI и запроса.
Имя. | Тип | Обязательно | Описание |
---|---|---|---|
идентификатор счета | строка | Да | Строка, идентифицирующая счет. |
поставщик | строка | Да | Поставщик: OneTime. |
тип элемента строки счёта | строка | Да | Тип сведений о счете: UsageLineItems. |
код валюты | строка | Да | Код валюты для строк (предметов) счета. |
период | строка | Да | Период сверки счетов. пример: текущий, предыдущий. |
размер | число | Нет | Максимальное количество элементов, которое нужно вернуть. Размер по умолчанию — 2000 |
операция поиска | строка | Нет | Задайте метод seekOperation=Далее, чтобы получить следующую страницу элементов линии рекогносцирования. |
Заголовки запросов
Для получения дополнительной информации см. заголовки REST Центра партнеров.
Текст запроса
Нет.
Ответ REST
При успешном выполнении ответ содержит коллекцию данных по элементам строки.
Для элемента строки ChargeType значение Purchase сопоставляется с New. Значение Возврат сопоставляется с Отмена.
Коды успеха и ошибок ответа
Каждый ответ содержит код состояния HTTP, указывающий на успешность или сбой, а также другие сведения об отладке. Используйте средство трассировки сети для чтения этого кода, типа ошибки и других параметров. Для получения полного списка см. Коды ошибок REST в Центре партнеров.
Примеры REST
Пример "запрос-ответ" 1
Ниже приведены сведения об этом примере запроса REST и ответа.
- Поставщик: OneTime
- InvoiceLineItemType: UsageLineItems
- Период: предыдущий
Пример запроса 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
Внимание
По состоянию на июнь 2023 г. последняя версия пакета SDK для .NET для Центра партнеров 3.4.0 теперь архивируется. Вы можете скачать выпуск SDK с GitHub вместе с файлом readme, содержащим полезные сведения.
Партнерам рекомендуется продолжать использовать REST API Центра партнеров.
Пример ответа 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"
}
}
Пример ответа на запрос 2
Ниже приведены сведения об этом примере запроса REST и ответа.
- Поставщик: OneTime
- InvoiceLineItemType: UsageLineItems
- Период: предыдущий
- SeekOperation: Далее
Пример запроса 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
Пример ответа 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"
}
}