Obtenir une collection de factures
S’applique à : Espace partenaires | Espace partenaires géré par 21Vianet | Espace partenaires de Microsoft Cloud for US Government
Comment récupérer une collection des factures du partenaire.
Prérequis
- Informations d’identification, comme décrit dans Authentification auprès de l’Espace partenaires. Ce scénario prend en charge l’authentification avec les informations d’identification d’application et d’application+utilisateur autonomes.
C#
Pour obtenir une collection de toutes les factures disponibles, utilisez la propriété Invoices pour obtenir une interface pour les opérations de facture, puis appelez la méthode Get ou GetAsync pour récupérer le regroupement.
Pour obtenir une collection paginée de factures, appelez d’abord la méthode BuildIndexedQuery et transmettez-la à la taille de page pour créer un objet IQuery. Ensuite, utilisez la propriété Invoices pour obtenir une interface pour les opérations de facture, puis passez l’objet IQuery à la méthode Query ou QueryAsync pour envoyer la requête et obtenir la première page.
Ensuite, utilisez la propriété Énumérateurs pour obtenir une interface vers la collection d’énumérateurs de collection de ressources pris en charge, puis appelez Invoices.Create pour créer un énumérateur pour parcourir la collection de factures. Enfin, utilisez l’énumérateur pour récupérer et utiliser chaque page de factures, comme indiqué dans l’exemple de code suivant. Chaque appel à la méthode Next envoie une demande pour la page suivante des factures en fonction de la taille de la page.
// 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();
}
Pour obtenir un exemple légèrement différent, consultez l’exemple d’application de test console. Projet : Classe d’exemples sdk de l’Espace partenaires : GetPagedInvoices.cs
Remarque
La même API est utilisée pour tous les achats commerciaux modernes ainsi que pour les licences 145p et Office. La taille et le décalage ne sont pris en compte que pour les factures héritées. Pour tous les achats commerciaux modernes, pagesize &offset sera ignoré.
Demande REST
Syntaxe de la requête
Méthode | URI de demande |
---|---|
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 |
Paramètres d’URI
Utilisez les paramètres de requête suivants lors de la création de la requête.
Nom | Type | Requise | Description |
---|---|---|---|
size | int | Non | Nombre de ressources de facture à retourner dans la réponse. Ce paramètre est facultatif. |
offset | int | Non | Index de base zéro de la première facture à retourner. |
filter | string | Non | Critères de filtre personnalisés basés sur du texte pour réduire les ressources de facture dans la réponse. Utilisez cette condition pour empêcher l’erreur de délai d’expiration. Découvrez comment utiliser la condition de filtre |
Comment utiliser la condition de filtre
Exemple de la condition de filtre :
/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"}
Les critères de filtre se composent de trois parties :
LeftFilter : première construction de filtre, où vous spécifiez le champ, la valeur et l’opérateur pour le côté gauche de l’expression de filtre.
Champ : attribut à utiliser pour filtrer. Valeur : valeur de l’attribut
Par exemple, « LeftFilter » : {"Field » :"InvoiceDate »,"Value » :"01/01/2023 »,"Operator » :"greater_than_or_equals"} signifie que vous souhaitez filtrer les factures qui ont une date de facture le 1er janvier 2023 ou après le 1er janvier 2023.
RightFilter : deuxième construction de filtre, où vous spécifiez le champ, la valeur et l’opérateur pour le côté droit de l’expression de filtre.
Par exemple, « RightFilter » :{"Field » :"InvoiceDate »,"Value » :"12/31/2023 »,"Operator » :"less_than_or_equals"} signifie que vous souhaitez filtrer les factures qui ont une date de facture le 31 décembre 2023.
Opérateur : opérateur logique qui connecte les filtres gauche et droit. Vous pouvez utiliser « et » ou « ou » comme opérateur.
Par exemple, « Opérateur » : « et » signifie que vous souhaitez filtrer les factures qui répondent aux critères de filtre gauche et droit.
Pour utiliser un seul filtre, entrez simplement le nom de champ, la valeur et l’opérateur. Il n’est pas nécessaire de construire « LeftFilter » ou « RightFilter ».
En-têtes de requête
Pour plus d’informations, consultez En-têtes REST de l’Espace Partenaires.
Corps de demande
Aucune
Exemple de requête
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
Depuis juin 2023, la dernière version du Kit de développement logiciel (SDK) .NET de l’Espace partenaires version 3.4.0 est désormais archivée. Vous pouvez télécharger la version du SDK à partir de GitHub, ainsi qu’un fichier lisezmoi contenant des informations utiles.
Les partenaires sont encouragés à continuer à utiliser les API REST de l’Espace partenaires.
Réponse REST
Si elle réussit, le corps de la réponse contient la collection de ressources Invoice .
Codes d’erreur et de réussite de la réponse
Chaque réponse est fournie avec un code d’état HTTP qui indique la réussite ou l’échec et d’autres informations de débogage. Utilisez un outil de suivi réseau pour lire ce code, le type d’erreur et d’autres paramètres. Pour obtenir la liste complète, consultez Codes d’erreur REST de l’Espace partenaires.
Exemple de réponse
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"
}
}