Соберите набор счетов
применимо к: Центр партнеров | Центр партнеров, управляемый 21Vianet | Центр партнеров для Microsoft Cloud для государственных организаций США
Как получить коллекцию счетов партнера.
Необходимые условия
- Учетные данные, как описано в аутентификации Партнёрского центра. Этот сценарий поддерживает аутентификацию как с помощью автономных учетных данных приложения, так и учетных данных приложения и пользователя.
C#
Чтобы получить коллекцию всех доступных счетов, используйте свойство Invoices для получения интерфейса для операций с счетами, а затем вызовите метод Get или GetAsync, чтобы получить коллекцию.
Чтобы получить страничные коллекции счетов, сначала вызовите метод BuildIndexedQuery и передайте его размер страницы для создания объекта IQuery. Затем используйте свойство счетов, чтобы получить интерфейс для выполнения операций со счетами, а затем передайте объект IQuery в метод Query или QueryAsync, чтобы отправить запрос и получить первую страницу.
Затем используйте свойство перечислителей, чтобы получить интерфейс к коллекции перечислителей поддерживаемых ресурсов, а затем вызовите Invoices.Create, чтобы создать перечислитель для итерации по коллекции счетов. Наконец, используйте перечислитель для получения и работы с каждой страницей счетов, как показано в следующем примере кода. Каждый вызов метода Next отправляет запрос на следующую страницу счетов-фактур в соответствии с размером страницы.
// IAggregatePartner partnerOperations;
// int invoicePageSize;
// Is this an unpaged or paged request?
bool isUnpaged = (this.invoicePageSize <= 0);
// If the scenario is unpaged, get all the invoices, otherwise get the first page.
var invoicesPage = (isUnpaged)
? partnerOperations.Invoices.Get()
: partnerOperations.Invoices.Query(QueryFactory.Instance.BuildIndexedQuery(this.invoicePageSize));
// Create an invoice enumerator for traversing the invoice pages.
var invoicesEnumerator = partnerOperations.Enumerators.Invoices.Create(invoicesPage);
int lineCounter = 1;
while (invoicesEnumerator.HasValue)
{
// Print the current invoice results page.
var invoices = invoicesEnumerator.Current.Items;
foreach (var i in invoices)
{
Console.WriteLine(String.Format("{0,3}. {1} {2} {3,16:C2}",
lineCounter++,
i.Id,
i.InvoiceDate.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"),
i.TotalCharges));
}
Console.WriteLine();
Console.Write("Press any key to retrieve the next invoices page");
Console.ReadKey();
// Get the next page of invoices.
invoicesEnumerator.Next();
}
Для немного другого примера см. Пример: консольное тестовое приложение. Project: SDK-примеры Центра партнеров класс: GetPagedInvoices.cs
Заметка
Тот же API используется для всех современных коммерческих покупок, а также лицензий 145p и Office. Размер и смещение учитываются только для устаревших счетов. Во всех современных коммерческих покупках размер страницы & смещения игнорируется.
запрос REST
Синтаксис запроса
Метод | URI запроса |
---|---|
ПОЛУЧИТЬ | {baseURL}/v1/invoices?size={size}&offset={offset} HTTP/1.1 |
GET | {baseURL}/v1/invoices?size={size}&offset={offset}&filter={"LeftFilter":{"Field":{field},"Value":{value},"Operator":{operator}},"RightFilter":{"Field":{field},"Value":{value},"Operator":{operator}},"Operator":{operator}} HTTP/1.1 |
Параметры URI
При создании запроса используйте следующие параметры запроса.
Имя | Тип | Обязательно | Описание |
---|---|---|---|
размер | int | Нет | Количество ресурсов счета, возвращаемых в ответе. Этот параметр является необязательным. |
смещение | int | Нет | Индекс первого счета, отсчитываемый от нуля, для возврата. |
фильтр | струна | Нет | Текстовые критерии настраиваемого фильтра для сокращения ресурсов счетов в ответе. Используйте это условие, чтобы избежать ошибки времени ожидания. См. , как использовать условие фильтра |
Как использовать условие фильтра
Пример условия фильтра:
/v1/invoices?size=10&offset=0&filter={"LeftFilter":{"Field":"InvoiceDate","Value":"01/01/2023","Operator":"greater_than_or_equals"},"RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"},"Operator":"and"}
Чтобы эффективно отфильтровать данные, ознакомьтесь с тремя основными компонентами критериев фильтра:
- LeftFilter: Укажите поле, значение и оператор для левой части выражения фильтра, чтобы задать начальное условие.
- Поле: атрибут, используемый для фильтрации
- Значение: значение атрибута
Например, "LeftFilter": {"Field":"InvoiceDate","Value":"01/01/2023","Operator":"greater_than_or_equals"}
фильтрует счета на или после 1 января 2023 года.
- RightFilter: Определить поле, значение и оператор в правой части выражения фильтра, чтобы завершить условие.
Например, "RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"}
фильтрует счета до 31 декабря 2023 г.
- оператор : Подсоединить фильтры слева и справа логическим оператором. Используйте "и" или "или" для объединения критериев.
Например, "Operator": "and"
гарантирует, что фильтр содержит счета, соответствующие обоим условиям.
Для одного фильтра введите имя поля, значение и оператор, не нуждаясь в конструкциях LeftFilter или RightFilter.
Этот подход помогает фильтровать данные точно и эффективно.
Заголовки запросов
Дополнительные сведения см. в разделе Заголовки REST Центра партнеров.
Текст запроса
Никакой
Пример запроса
GET https://api.partnercenter.microsoft.com/v1/invoices?size=200&offset=0 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: e88d014d-ab70-41de-90a0-f7fd1797267d
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вместе с файлом чтения, который содержит полезные сведения.
Партнерам рекомендуется продолжать использовать REST API Партнёрского центра .
Ответ REST
В случае успешного выполнения текст ответа содержит коллекцию ресурсов Invoice.
Коды успешных и ошибочных ответов
Каждый ответ содержит код состояния HTTP, указывающий на успешность или сбой, а также другие сведения об отладке. Используйте средство трассировки сети для чтения этого кода, типа ошибки и других параметров. Полный список см. в разделе Коды ошибок REST Центра партнеров.
Пример ответа
HTTP/1.1 200 OK
Content-Length: 256
Content-Type: application/json; charset=utf-8
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: a45e6643-1caf-4429-8f90-07c03d85bc2b
Date: Thu, 24 Mar 2016 05:21:01 GMT
{
"totalCount": 2,
"items": [
{
"id": "D02005YFHI",
"invoiceDate": "2017-01-21T00:00:00Z",
"totalCharges": 24606.35,
"paidAmount": 1000,
"currencyCode": "GBP",
"currencySymbol": "£",
"pdfDownloadLink": "/invoices/D02005YFHI/documents/statement",
"taxReceipts": [
{
"id": "123456",
"taxReceiptPdfDownloadLink": "/invoices/D02005YFHI/receipts/123456/documents/statement"
}
],
"invoiceDetails": [
{
"invoiceLineItemType": "billing_line_items",
"billingProvider": "office",
"links": {
"self": {
"uri": "/invoices/Recurring-D02005YFHI/lineitems/Office/BillingLineItems",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "InvoiceDetail"
}
}
],
"documentType": "invoice",
"invoiceType": "Recurring",
"links": {
"self": {
"uri": "/invoices/Recurring-D02005YFHI",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Invoice"
}
},
{
"id": "G000024130",
"invoiceDate": "2018-02-08T01:22:47.603895Z",
"totalCharges": 586366,
"paidAmount": 0,
"currencyCode": "CHF",
"currencySymbol": "CHF",
"pdfDownloadLink": "/invoices/G000024130/documents/statement",
"taxReceipts": [
{
"id": "234567",
"taxReceiptPdfDownloadLink": "/invoices/G000024130/receipts/234567/documents/statement"
}
],
"invoiceDetails": [
{
"invoiceLineItemType": "billing_line_items",
"billingProvider": "one_time",
"links": {
"self": {
"uri": "/invoices/OneTime-G000024130/lineitems/OneTime/BillingLineItems",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "InvoiceDetail"
}
}
],
"amendments": [
{
"id": "G000024131",
"invoiceDate": "2018-02-08T18:44:37.5381456Z",
"totalCharges": 107661.12,
"paidAmount": 0,
"currencyCode": "CHF",
"currencySymbol": "CHF",
"invoiceDetails": [
{
"invoiceLineItemType": "billing_line_items",
"billingProvider": "one_time",
"attributes": {
"objectType": "InvoiceDetail"
}
}
],
"documentType": "adjustment_note",
"amendsOf": "G000024130",
"invoiceType": "OneTime",
"attributes": {
"objectType": "Invoice"
}
}
],
"documentType": "void_note",
"invoiceType": "OneTime",
"links": {
"self": {
"uri": "/invoices/OneTime-G000024130",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Invoice"
}
}
],
"links": {
"self": {
"uri": "/invoices?size=2&offset=0",
"method": "GET",
"headers": []
},
"next": {
"uri": "/invoices?size=2&offset=2",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Collection"
}
}