Partager via


Annuler des achats de logiciel

Vous pouvez utiliser les API de l’Espace partenaires pour annuler les abonnements logiciels et les achats de logiciels perpétuels (tant que ces achats ont été effectués dans la fenêtre d’annulation à partir de la date d’achat). Vous n’avez pas besoin de créer un ticket de support pour effectuer ces annulations et pouvez utiliser les méthodes en libre-service suivantes à la place.

Vous pouvez également annuler des abonnements logiciels (sans inclure de logiciels perpétuels) à l’aide de l’API Mettre à jour un abonnement par ID .

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 annuler une commande logicielle,

  1. Transmettez les informations d’identification de votre compte à la méthode CreatePartnerOperations pour obtenir une interface IPartner pour obtenir des opérations de partenaire.

  2. Sélectionnez une commande particulière que vous souhaitez annuler. Appelez la méthode Customers.ById() avec l’identificateur du client, suivie de Orders.ById() avec l’identificateur de commande.

  3. Appelez la méthode Get ou GetAsync pour récupérer l’ordre.

  4. Définissez la propriété Order.Status sur cancelled.

  5. (Facultatif) Si vous souhaitez spécifier certains éléments de ligne pour l’annulation, définissez order.LineItems sur la liste des éléments de ligne que vous souhaitez annuler.

  6. Utilisez la méthode Patch() pour mettre à jour l’ordre.

// IPartnerCredentials accountCredentials;
// string customerTenantId;

IPartner accountPartnerOperations = PartnerService.Instance.CreatePartnerOperations(accountCredentials);

// Cancel order
var order = accountPartnerOperations.Customers.ById(customerTenantId).Orders.ById(orderId).Get();
order.Status = "cancelled";
order.LineItems = new List<OrderLineItem> {
    order.LineItems.First()
};
order = accountPartnerOperations.Customers.ById(customerTenantId).Orders.ById(orderId).Patch(order);

Demande REST

Syntaxe de la requête

Méthode URI de demande
PATCH {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

Paramètres URI

Utilisez les paramètres de requête suivants pour annuler une commande logicielle.

Nom Type Requis Description
id-locataire-client guid O La valeur est un identificateur de locataire client au format GUID qui permet au revendeur de filtrer les résultats d’un client donné qui appartient au revendeur.
order-id string O La valeur est une chaîne qui indique l’identificateur de l’ordre que vous souhaitez annuler.

En-têtes de requête

Pour plus d’informations, consultez En-têtes REST de l’Espace Partenaires.

Corps de la demande

{
    "id": "c403d91b21d2",
    status": "cancelled",
    "lineItems": [
        {
            "lineItemNumber": 0,
            "offerId": "DG7GMGF0FKZV:0003:DG7GMGF0DWMS"
        }
    ]
}

Exemple de requête

PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id>/orders/<order-id> HTTP/1.1
Accept: application/json
MS-RequestId: 655890ba-4d2b-4d09-a95f-4ea1348686a5
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd

{
    "id": "c403d91b21d2",
    "status": "cancelled",
    "lineItems": [
        {
            "lineItemNumber": 0,
            "offerId": "DG7GMGF0FKZV:0003:DG7GMGF0DWMS"
        }
    ]
}

Réponse REST

Si elle réussit, cette méthode retourne la commande avec des éléments de ligne annulés.

L’état de la commande est marqué comme annulé si tous les éléments de ligne de la commande sont annulés ou terminés si tous les éléments de ligne de la commande ne sont pas annulés.

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 les paramètres. Pour obtenir la liste complète, consultez Codes d’erreur REST de l’Espace partenaires.

Exemple de réponse

Dans l’exemple de réponse suivant, vous pouvez voir que la quantité d’élément de ligne est devenue zéro (0). Cette modification signifie que l’élément de ligne marqué pour annulation a été annulé avec succès. L’exemple de commande contient d’autres éléments de ligne qui n’ont pas été annulés, ce qui signifie que l’état de la commande globale sera marqué comme terminé, pas annulé.

HTTP/1.1 200 OK
Content-Length: 866
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 655890ba-4d2b-4d09-a95f-4ea1348686a5

{
    "id": "c403d91b21d2",
    "alternateId": "c403d91b21d2",
    "referenceCustomerId": "45411344-b09d-47e7-9653-542006bf9766",
    "billingCycle": "one_time",
    "currencyCode": "USD",
    "currencySymbol": "$",
    "lineItems": [
        {
            "lineItemNumber": 0,
            "offerId": "DG7GMGF0FKZV:0003:DG7GMGF0DWMS",
            "termDuration": "P3Y",
            "transactionType": "New",
            "friendlyName": "SQL Server Enterprise - 2 Core License Pack - 3 year",
            "quantity": 0,
            "links": {
                "product": {
                    "uri": "/products/DG7GMGF0FKZV?country=US",
                    "method": "GET",
                    "headers": []
                },
                "sku": {
                    "uri": "/products/DG7GMGF0FKZV/skus/0003?country=US",
                    "method": "GET",
                    "headers": []
                },
                "availability": {
                    "uri": "/products/DG7GMGF0FKZV/skus/0003/availabilities/DG7GMGF0DWMS?country=US",
                    "method": "GET",
                    "headers": []
                }
            }
        },
        {
            "lineItemNumber": 1,
            "offerId": "DG7GMGF0DVT7:000C:DG7GMGF0FVZM",
            "termDuration": "P3Y",
            "transactionType": "New",
            "friendlyName": "Windows Server CAL - 1 Device CAL - 3 year",
            "quantity": 1,
            "links": {
                "product": {
                    "uri": "/products/DG7GMGF0DVT7?country=US",
                    "method": "GET",
                    "headers": []
                },
                "sku": {
                    "uri": "/products/DG7GMGF0DVT7/skus/000C?country=US",
                    "method": "GET",
                    "headers": []
                },
                "availability": {
                    "uri": "/products/DG7GMGF0DVT7/skus/000C/availabilities/DG7GMGF0FVZM?country=US",
                    "method": "GET",
                    "headers": []
                }
            }
        }
    ],
    "creationDate": "2019-12-12T17:33:56.1306495Z",
    "status": "completed",
    "transactionType": "UserPurchase",
    "links": {
        "self": {
            "uri": "/customers/45411344-b09d-47e7-9653-542006bf9766/orders/c403d91b21d2",
            "method": "GET",
            "headers": []
        },
        "provisioningStatus": {
            "uri": "/customers/45411344-b09d-47e7-9653-542006bf9766/orders/c403d91b21d2/provisioningstatus",
            "method": "GET",
            "headers": []
        },
        "patchOperation": {
            "uri": "/customers/45411344-b09d-47e7-9653-542006bf9766/orders/c403d91b21d2",
            "method": "PATCH",
            "headers": []
        }
    },
    "client": {
        "marketplaceCountry": "US",
        "deviceFamily": "UniversalStore-PartnerCenter",
        "name": "Partner Center API"
    },
    "attributes": {
        "objectType": "Order"
    }
}