Отмена покупок программного обеспечения
Api Центра партнеров можно использовать для отмены подписок на программное обеспечение и бессрочных покупок программного обеспечения (если эти покупки были сделаны в течение периода отмены с даты покупки). Вам не нужно создавать запрос в службу поддержки, чтобы сделать такие отмены, и вместо этого можно использовать следующие методы самообслуживания.
Вы также можете отменить подписки на программное обеспечение (не включая постоянное программное обеспечение) с помощью API Отмена подписки по идентификатору.
Необходимые условия
- Учетные данные, как указано в разделе аутентификации Центра партнеров . Этот сценарий поддерживает проверку подлинности с помощью как автономных учетных данных приложения, так и учетных данных приложения и пользователя.
C#
Чтобы отменить заказ на программное обеспечение,
Передайте учетные данные вашей учетной записи в метод CreatePartnerOperations, чтобы получить интерфейс IPartner для выполнения партнерских операций.
Выберите конкретный заказ, который вы хотите отменить. Вызовите методCustomers.ById() с идентификатором клиента, а затем Order.ById() с идентификатором заказа.
Вызовите метод Get или GetAsync, чтобы получить заказ.
Задайте для свойства Order.Status значение
cancelled
.(Необязательно) Если вы хотите указать определенные элементы строки для отмены, задайте Order.LineItems список элементов строки, которые необходимо отменить.
Используйте метод 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
Чтобы отменить заказ программного обеспечения, используйте следующие параметры запроса.
Имя | Тип | Обязательно | Описание |
---|---|---|---|
идентификатор клиента-арендатора | guid | Y | Это значение — идентификатор клиента с форматом GUID, который позволяет торговому посреднику фильтровать результаты для данного клиента, который принадлежит торговому посреднику. |
идентификатор заказа | строка |
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: aaaa0000-bb11-2222-33cc-444444dddddd
{
"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: 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"
}
}