청구서 컬렉션 가져오기
적용 대상: 파트너 센터 | 21Vianet에서 운영되는 파트너 센터 | Microsoft Cloud for US Government 파트너 센터
파트너의 청구서 컬렉션을 검색하는 방법입니다.
필수 조건
- 자격 증명(파트너 센터 인증에서 설명). 이 시나리오는 독립 실행형 앱과 App+사용자 자격 증명을 모두 사용하여 인증을 지원합니다.
C#
사용 가능한 모든 청구서의 컬렉션을 얻으려면 Invoices 속성을 사용하여 청구서 작업에 대한 인터페이스를 가져와서 Get 또는 GetAsync 메서드를 호출하여 컬렉션을 검색합니다.
페이징된 청구서 컬렉션을 얻으려면 먼저 BuildIndexedQuery 메서드를 호출하고 페이지 크기를 전달하여 IQuery 개체를 만듭니다. 다음으로 Invoices 속성을 사용하여 송장 작업에 대한 인터페이스를 구한 다음, IQuery 개체를 Query 또는 QueryAsync 메서드에 전달하여 요청을 보내고 첫 번째 페이지를 가져옵니다.
다음으로, Enumerators 속성을 사용하여 지원되는 리소스 컬렉션 열거자 컬렉션에 대한 인터페이스를 가져옵니다. 그런 다음 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();
}
약간 다른 예제는 샘플: 콘솔 테스트 앱을 참조하세요. 프로젝트: 파트너 센터 SDK 샘플 클래스: GetPagedInvoices.cs
참고 항목
동일한 API는 145p 및 Office 라이선스뿐만 아니라 모든 최신 상용 구매에 사용됩니다. 크기 및 오프셋은 레거시 청구서에 대해서만 고려됩니다. 모든 최신 상용 구매의 경우 페이지 크기 조정 및 오프셋은 무시됩니다.
REST 요청
요청 구문
메서드 | 요청 URI |
---|---|
GET | {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 매개 변수
요청을 만들 때 다음 쿼리 매개 변수를 사용합니다.
필터 조건을 사용하는 방법
필터 조건의 예:
/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"}는 2023년 1월 1일 또는 그 이후에 청구서 날짜가 있는 청구서를 필터링하려는 경우를 의미합니다.
RightFilter: 필터 식의 오른쪽에 필드, 값 및 연산자를 지정하는 두 번째 필터 구문입니다.
예를 들어 "RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"}는 2023년 12월 31일 또는 그 이전에 청구서 날짜가 있는 청구서를 필터링하려는 것을 의미합니다.
연산자: 왼쪽 및 오른쪽 필터를 연결하는 논리 연산자입니다. "and" 또는 "or"를 연산자로 사용할 수 있습니다.
예를 들어 "Operator": "and"는 왼쪽 및 오른쪽 필터 조건을 모두 충족하는 청구서를 필터링하려는 것을 의미합니다.
단일 필터를 사용하려면 필드 이름, 값 및 연산자를 입력하기만 하면됩니다. "LeftFilter" 또는 "RightFilter" 구문이 필요하지 않습니다.
요청 헤더
자세한 내용은 파트너 센터 REST 헤더를 참조하세요.
요청 본문
None
요청 예시
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: de894e18-f027-4ac0-8b5a-34f0c222af0c
X-Locale: en-US
MS-PartnerCenter-Application: Partner Center .NET SDK Samples
Host: api.partnercenter.microsoft.com
Important
2023년 6월 현재 최신 파트너 센터 .NET SDK 릴리스 3.4.0이 보관됩니다. 유용한 정보가 포함된 추가 정보 파일과 함께 GitHub에서 SDK 릴리스를 다운로드할 수 있습니다.
파트너는 파트너 센터 REST API를 계속 사용하는 것이 좋습니다.
REST 응답
성공하면 응답 본문에 청구서 리소스 컬렉션이 포함됩니다.
응답 성공 및 오류 코드
각 응답에는 성공 또는 실패 및 기타 디버깅 정보를 나타내는 HTTP 상태 코드가 함께 제공됩니다. 네트워크 추적 도구를 사용하여 이 코드, 오류 유형 및 기타 매개 변수를 읽습니다. 전체 목록은 파트너 센터 REST 오류 코드를 참조하세요.
응답 예제
HTTP/1.1 200 OK
Content-Length: 256
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 57eb2ca7-755f-450f-9187-eae1e75a0114
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"
}
}