Отмена покупки программного обеспечения

Api Центра партнеров можно использовать для отмены подписок на программное обеспечение и бессрочных покупок программного обеспечения (если эти покупки были сделаны в течение периода отмены с даты покупки). Вам не нужно создавать запрос в службу поддержки, чтобы сделать такие отмены, и вместо этого можно использовать следующие методы самообслуживания.

Вы также можете отменить подписки на программное обеспечение (не включая постоянное программное обеспечение) с помощью API обновления подписки по идентификатору .

Необходимые компоненты

  • Учетные данные, описанные в статье о проверке подлинности в Центре партнеров. Этот сценарий поддерживает проверку подлинности с помощью автономных учетных данных приложения и приложения и пользователя.

C#

Чтобы отменить заказ на программное обеспечение,

  1. Передайте учетные данные учетной записи методу CreatePartnerOperations, чтобы получить интерфейс IPartner для получения партнерских операций.

  2. Выберите конкретный заказ , который вы хотите отменить. Вызовите метод Customers.ById() с идентификатором клиента, а затем Order.ById() с идентификатором заказа.

  3. Вызовите метод Get или GetAsync, чтобы получить заказ.

  4. Задайте для свойства Order.Status значение cancelled.

  5. (Необязательно) Если вы хотите указать определенные элементы строки для отмены, задайте для order.LineItems список элементов строки, которые необходимо отменить.

  6. Используйте метод Patch() для обновления порядка.

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

Запрос REST

Синтаксис запроса

Способ URI запроса
PATCH {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

Параметры универсального кода ресурса (URI)

Чтобы отменить заказ программного обеспечения, используйте следующие параметры запроса.

Имя. Тип Обязательно Описание
customer-tenant-id guid Y Это значение — идентификатор клиента с форматом GUID, который позволяет торговому посреднику фильтровать результаты для данного клиента, который принадлежит торговому посреднику.
order-id string Y Значение — это строка, которая обозначает идентификатор заказа, который требуется отменить.

Заголовки запросов

Дополнительные сведения см. в статье о заголовках REST Центра партнеров.

Текст запроса

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

Пример запроса

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"
        }
    ]
}

Ответ REST

В случае успешного выполнения этот метод возвращает порядок с отмененными элементами строки.

Состояние заказа будет отмечено как отмененное , если все элементы строки в заказе отменены или завершены , если не все элементы строки в заказе отменены.

Коды успешного выполнения и ошибок в ответе

Каждый ответ содержит код состояния HTTP, указывающий на успешность или сбой, а также другие сведения об отладке. Используйте средство трассировки сети для чтения этого кода, типа ошибки и параметров. Полный список ответов есть в статье Коды ошибок REST в Центре партнеров.

Пример ответа

В следующем примере ответа можно увидеть, что количество элементов строки стало нулевым (0). Это изменение означает, что элемент строки, помеченный для отмены, был успешно отменен. Пример заказа содержит другие элементы строки, которые не были отменены, что означает, что состояние общего заказа будет отмечено как завершенное, а не отменено.

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"
    }
}