Cancelar compras de software

Puede usar las API del Centro de partners para cancelar las suscripciones de software y las compras perpetuas de software (siempre y cuando esas compras se hayan realizado dentro de la ventana de cancelación desde la fecha de compra). No es necesario crear una incidencia de soporte técnico para realizar estas cancelaciones y, en su lugar, puede usar los siguientes métodos de autoservicio.

También puede cancelar suscripciones de software (no incluido el software perpetuo) mediante la API Actualizar una suscripción por identificador .

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 cancelar un pedido de software,

  1. Pase las credenciales de la cuenta al método CreatePartnerOperations para obtener una interfaz IPartner para obtener operaciones de asociados.

  2. Seleccione un pedido determinado que desee cancelar. Llame al método Customers.ById() con el identificador de cliente, seguido de Orders.ById() con el identificador de pedido.

  3. Llame al método Get o GetAsync para recuperar el pedido.

  4. Establezca la propiedad Order.Status en cancelled.

  5. (Opcional) Si desea especificar determinados elementos de línea para la cancelación, establezca Order.LineItems en la lista de elementos de línea que desea cancelar.

  6. Use el método Patch() para actualizar el pedido.

// 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);

Solicitud REST

Sintaxis de la solicitud

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

Parámetros del identificador URI

Use los parámetros de consulta siguientes para cancelar un pedido de software.

Nombre Tipo Obligatorio Descripción
customer-tenant-id guid Y El valor es un identificador de inquilino de cliente con formato GUID que permite al revendedor filtrar los resultados de un cliente determinado que pertenece al revendedor.
order-id string Y El valor es una cadena que denota el identificador del orden que desea cancelar.

Encabezados de solicitud

Para obtener más información, consulta Encabezados REST del Centro de partners.

Cuerpo de la solicitud

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

Ejemplo de solicitud

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: 1438ea3d-b515-45c7-9ec1-27ee0cc8e6bd

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

Respuesta REST

Si se ejecuta correctamente, este método devuelve el pedido con elementos de línea cancelados.

El estado del pedido se marcará como cancelado si se cancelan todos los elementos de línea del pedido o se completan si no se cancelan todos los elementos de línea del pedido.

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 parámetros. Para obtener la lista completa, consulta Códigos de error de REST del Centro de partners.

Ejemplo de respuesta

En la siguiente respuesta de ejemplo, puede ver que la cantidad de elementos de línea se ha convertido en cero (0). Este cambio significa que el elemento de línea marcado para la cancelación se ha cancelado correctamente. El orden de ejemplo contiene otros elementos de línea que no se cancelaron, lo que significa que el estado del pedido general se marcará como completado, no cancelado.

HTTP/1.1 200 OK
Content-Length: 866
MS-CorrelationId: 1438ea3d-b515-45c7-9ec1-27ee0cc8e6bd
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"
    }
}