Obtener una colección de facturas
Se aplica a: Centro de partners | Centro de partners operado por 21Vianet | Centro de partners para Microsoft Cloud for US Government
Cómo recuperar una colección de las facturas del asociado.
Requisitos previos
- Credenciales tal como se describen en el artículo Autenticación del Centro de partners. Este escenario admite la autenticación con credenciales de aplicación independiente y app+usuario.
C#
Para obtener una colección de todas las facturas disponibles, use la propiedad Invoices para obtener una interfaz para las operaciones de factura y, a continuación, llame al método Get o GetAsync para recuperar la colección.
Para obtener una colección paginada de facturas, primero llame al método BuildIndexedQuery y páselo el tamaño de página para crear un objeto IQuery. A continuación, use la propiedad Invoices para obtener una interfaz para las operaciones de factura y, a continuación, pase el objeto IQuery al método Query o QueryAsync para enviar la solicitud y obtener la primera página.
A continuación, use la propiedad Enumerators para obtener una interfaz a la colección de enumeradores de recopilación de recursos admitidos y, a continuación, llame a Invoices.Create para crear un enumerador para recorrer la colección de facturas. Por último, use el enumerador para recuperar y trabajar con cada página de facturas, como se muestra en el ejemplo de código siguiente. Cada llamada al método Next envía una solicitud para la página siguiente de facturas en función del tamaño de página.
// 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();
}
Para obtener un ejemplo ligeramente diferente, consulte Ejemplo: Aplicación de prueba de consola. Project: Clase de ejemplos del SDK del Centro de partners: GetPagedInvoices.cs
Nota:
La misma API se usa para todas las compras comerciales modernas, así como para las licencias de 145p y Office. El tamaño y el desplazamiento solo se consideran para las facturas heredadas. Para todas las compras comerciales modernas, se omitirá pagesize & offset.
Solicitud REST
Sintaxis de la solicitud
Método | URI de solicitud |
---|---|
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 |
Parámetros de URI
Use los siguientes parámetros de consulta al crear la solicitud.
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
size | int | No | Número de recursos de factura que se van a devolver en la respuesta. Este parámetro es opcional. |
offset | int | No | Índice de base cero de la primera factura que se va a devolver. |
filter | string | No | Criterios de filtro personalizados basados en texto para reducir los recursos de factura en la respuesta. Use esta condición para evitar el error de tiempo de espera. Consulte cómo usar la condición de filtro. |
Uso de la condición de filtro
Ejemplo de la condición de filtro:
/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"}
Los criterios de filtro constan de tres partes:
LeftFilter: la primera construcción de filtro, donde se especifica el campo, el valor y el operador del lado izquierdo de la expresión de filtro.
Campo: atributo que se va a usar para filtrar. Valor: valor del atributo
Por ejemplo, "LeftFilter": {"Field":"InvoiceDate","Value":"01/01/2023","Operator":"greater_than_or_equals"} significa que desea filtrar las facturas que tienen una fecha de factura el 1 de enero de 2023 o después.
RightFilter: segunda construcción de filtro, donde se especifica el campo, el valor y el operador para el lado derecho de la expresión de filtro.
Por ejemplo, "RightFilter":{"Field":"InvoiceDate","Value":"12/31/2023","Operator":"less_than_or_equals"} significa que desea filtrar las facturas que tienen una fecha de factura el 31 de diciembre de 2023 o antes.
Operador: operador lógico que conecta los filtros izquierdo y derecho. Puede usar "and" o "or" como operador.
Por ejemplo, "Operador": "y" significa que desea filtrar las facturas que cumplen los criterios de filtro izquierdo y derecho.
Para usar un solo filtro, solo tiene que escribir el nombre, el valor y el operador del campo. No es necesario la construcción "LeftFilter" o "RightFilter".
Encabezados de solicitud
Para obtener más información, consulta Encabezados REST del Centro de partners.
Cuerpo de la solicitud
None
Ejemplo de solicitud
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
Importante
A partir de junio de 2023, la versión 3.4.0 más reciente del SDK de .NET del Centro de partners ahora está archivada. Puede descargar esta versión del SDK de GitHub, junto con un archivo Léame que contiene información útil.
Se recomienda a los partners seguir usando las API REST del Centro de partners.
Respuesta REST
Si se ejecuta correctamente, el cuerpo de la respuesta contiene la colección de recursos de factura .
Códigos de error y de respuesta correctos
Cada respuesta incluye un código de estado HTTP que indica éxito o error y otra información de depuración. Use una herramienta de seguimiento de red para leer este código, tipo de error y otros parámetros. Para obtener la lista completa, consulta Códigos de error de REST del Centro de partners.
Ejemplo de respuesta
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"
}
}