Создание корзины с заказом клиента
применимо к: Центр партнеров | Центр партнеров, управляемый 21Vianet | Центр партнеров для Microsoft Cloud для государственных организаций США
Вы можете добавить заказ для клиента в корзину. Чтобы получить дополнительные сведения о том, что в настоящее время доступно для продажи, см. партнёрские предложения в программе поставщика облачных решений.
Заметка
Срок действия корзины истекает через 7 дней после первоначального создания.
Необходимые условия
Учетные данные, как описано в аутентификации в Центре партнеров. Этот сценарий поддерживает проверку подлинности как с помощью автономных учетных данных приложения, так и учетных данных приложения совместно с пользователем.
Идентификатор клиента (
customer-tenant-id
). Если вы не знаете идентификатор клиента, его можно найти в Центре партнеров, выбрав рабочую область клиентов , затем выберите этого клиента из списка клиентов, а после этого выберите учетную запись. На странице "Учетная запись клиента" найдите идентификатор Майкрософт в разделе сведения о учетной записи клиента. Идентификатор Майкрософт совпадает с идентификатором клиента (customer-tenant-id
).
C#
Чтобы создать заказ для клиента, выполните приведенные действия.
Создайте экземпляр объекта Корзина.
Создайте список объектов CartLineItem и назначьте список свойству LineItems корзины. Каждый элемент строки корзины содержит сведения о покупке для одного продукта. У вас должен быть хотя бы один элемент корзины.
Получите интерфейс для операций с корзиной, вызвав метод IAggregatePartner.Customers.ById с указанием идентификатора клиента, а затем получите интерфейс из свойства Cart.
Вызовите метод Create или CreateAsync, чтобы создать корзину.
Чтобы завершить аттестацию и включить прочих реселлеров, ознакомьтесь с следующими образцами запросов и ответов:
Запросить образец
{
"PartnerOnRecordAttestationAccepted":true, "lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"billingCycle": "monthly",
"termDuration": "P1M",
"renewsTo": null,
"provisioningContext": {},
"customTermEndDate": "2022-02-19T00:00:00Z"
},
{
"id": 1,
"catalogItemId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
"quantity": 2,
"billingCycle": "monthly",
"termDuration": "P1Y",
"participants": [
{
"key": "transaction_reseller",
"value": "5357564"
},
{
"key": "additional_transaction_reseller",
"value": "517285"
},
{
"key": "additional_transaction_reseller",
"value": "5357563"
}
]
}
]
}
Пример ответа
{
"id": "3e22b548-647d-4223-9675-1fcb6cb57665",
"creationTimestamp": "2021-08-18T17:29:52.3517492Z",
"lastModifiedTimestamp": "2021-08-18T17:29:52.3517553Z",
"expirationTimestamp": "2021-08-25T17:30:11.2406416Z",
"lastModifiedUser": "da62a0dc-35e9-4601-b48e-a047bd3ec7c1",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"customTermEndDate": "2022-02-19T00:00:00Z";
"provisioningContext": {},
"orderGroup": "0"
},
{
"id": 1,
"catalogItemId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
"quantity": 2,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1Y",
"participants": [
{
"key": "transaction_reseller",
"value": "5357564"
},
{
"key": "additional_transaction_reseller",
"value": "517285"
},
{
"key": "additional_transaction_reseller",
"value": "5357563"
}
],
"provisioningContext": {},
"orderGroup": "0"
}
],
"links": {
"self": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/carts/3e22b548-647d-4223-9675-1fcb6cb57665",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}
Пример C#
// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;
var cart = new Cart()
{
LineItems = new List<CartLineItem>()
{
new CartLineItem()
{
/* Microsoft Azure Subscription */
Id = 0,
CatalogItemId = "MS-AZR-0145P",
Quantity = 1,
BillingCycle = BillingCycleType.Monthly,
TermDuration = "P1Y"
},
new CartLineItem()
{
/* Azure Reserved Instance */
Id = 1,
CatalogItemId = "DZH318Z0BQ36:004G:DZH318Z08C0S",
Quantity = 1,
BillingCycle = BillingCycleType.OneTime,
TermDuration = "P1Y",
ProvisioningContext = new Dictionary<string, string>
{
{ "subscriptionId", subscriptionId },
{ "scope", "shared" }
}
},
new CartLineItem()
{
/* Azure Reserved Instance */
Id = 2,
CatalogItemId = "DZH318Z0BQ36:004J:DZH318Z08B8X",
Quantity = 1,
BillingCycle = BillingCycleType.OneTime,
TermDuration = "P3Y",
ProvisioningContext = new Dictionary<string, string>
{
{ "subscriptionId", subscriptionId },
{ "scope", "shared" }
}
},
new CartLineItem()
{
/* Perpetual Software */
Id = 3,
CatalogItemId = "DG7GMGF0DWM3:0002:DG7GMGF0DT1M",
Quantity = 1,
BillingCycle = BillingCycleType.OneTime
},
new CartLineItem()
{
/* SaaS */
Id = 4,
CatalogItemId = "DZH318Z0BXWC:0002:DZH318Z0BMRV",
Quantity = 1,
BillingCycle = BillingCycleType.Monthly,
TermDuration = "P1M"
},
new CartLineItem()
{
/* SaaS Free Trial */
Id = 5,
CatalogItemId = "DZH318Z0C0WF:0001:DZH318Z0BP69",
Quantity = 10,
BillingCycle = BillingCycleType.None,
TermDuration = "P1M",
RenewsTo = new RenewsTo
{
TermDuration = "P1Y"
}
}
}
};
cart = partnerOperations.Customers.ById(customerId).Carts.Create(cart);
Ява
Пакет Java SDK для Центра партнеров можно использовать для управления ресурсами Центра партнеров. Это проект с открытым исходным кодом, поддерживаемый сообществом партнеров и официально не поддерживаемый корпорацией Майкрософт. Вы можете получить помощь от сообщества или открыть проблему на сайте GitHub, если возникла проблема.
Чтобы создать заказ для клиента, выполните приведенные действия.
Создайте экземпляр объекта Cart.
Создайте список объектов CartLineItem и назначьте список элементам строки корзины. Каждый элемент строки корзины содержит сведения о покупке для одного продукта. У вас должен быть по крайней мере один элемент строки корзины.
Получите интерфейс для работы с корзиной, вызвав функцию IAggregatePartner.getCustomers().byId с указанием идентификатора клиента для его идентификации, а затем извлекайте интерфейс, используя функцию getCart.
Вызовите функцию create, чтобы создать корзину.
Пример Java
// IAggregatePartner partnerOperations;
// String customerId;
// String subscriptionId;
// String catalogItemId;
CartLineItem lineItem = new CartLineItem();
lineItem.setBillingCycle(BillingCycleType.OneTime);
lineItem.setCatalogItemId(catalogItemId);
lineItem.setFriendlyName("Sample RI Purchase");
lineItem.setQuantity(1);
Map<String, String> provisioningContext = new HashMap<String,String>();
provisioningContext.put("duration", "3Years");
provisioningContext.put("scope", "shared");
provisioningContext.put("subscriptionId", subscriptionId);
lineItem.setProvisioningContext(provisioningContext);
List<CartLineItem> lineItemList = new ArrayList<CartLineItem>();
lineItemList.add(lineItem);
Cart cart = new Cart();
cart.setLineItems(lineItemList);
Cart cartCreated = partnerOperations.getCustomers().byId(customerId).getCarts().create(cart);
PowerShell
Модуль PowerShell для Центра партнеров можно использовать для управления ресурсами Центра партнеров. Это проект с открытым исходным кодом, поддерживаемый сообществом партнеров и официально не поддерживаемый корпорацией Майкрософт. Вы можете получить помощь от сообщества или открыть проблему на сайте GitHub, если возникла проблема.
Чтобы создать заказ для клиента, выполните приведенные действия.
Создайте экземпляр объекта Cart.
Создайте список объектов CartLineItem и назначьте список элементам строки корзины. Каждый элемент строки корзины содержит сведения о покупке для одного продукта. У вас должен быть по крайней мере один товар в корзине.
Выполните команду New-PartnerCustomerCart, чтобы создать корзину.
# $customerId
# $subscriptionId
# $catalogItemId
$lineItem = New-Object -TypeName Microsoft.Store.PartnerCenter.PowerShell.Models.Carts.PSCartLineItem
$lineItem.BillingCycle = 'OneTime'
$lineItem.CatalogItemId = $catalogItemId
$lineItem.FriendlyName = 'Sample RI Purchase'
$lineItem.ProvisioningContext.Add('duration', '1Year')
$lineItem.ProvisioningContext.Add('scope', 'shared')
$lineItem.ProvisioningContext.Add('subscriptionId', $subsciptionId)
$lineItem.Quantity = 10
New-PartnerCustomerCart -CustomerId $customerId -LineItems $lineItem
Запрос REST
Синтаксис запроса
Метод | URI запроса |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1 |
Параметр URI
Используйте следующий параметр пути для идентификации клиента.
Имя | Тип | Обязательно | Описание |
---|---|---|---|
идентификатор клиента | струна | Да | Идентификатор клиента в формате GUID, который идентифицирует клиента. |
Заголовки запросов
Дополнительные сведения см. в заголовках REST Центра партнеров.
Текст запроса
В этой таблице описаны свойства Cart в тексте запроса.
Недвижимость | Тип | Обязательно | Описание |
---|---|---|---|
идентификатор | струна | Нет | Идентификатор корзины, предоставленный при успешном создании корзины. |
creationTimeStamp | Дата и время | Нет | Дата создания корзины в формате даты и времени. Применяется после успешного создания корзины. |
lastModifiedTimeStamp | ДатаВремя | Нет | Дата последнего обновления корзины в формате даты и времени. Применяется после успешного создания корзины. |
время окончания | ДатаВремя | Нет | Дата, когда истекает срок действия корзины, указана в формате даты и времени. Применяется после успешного создания корзины. |
пользовательПоследнегоИзменения | струна | Нет | Пользователь, который последний раз обновил корзину. Применяется после успешного создания корзины. |
lineItems | Массив объектов | Да | Массив ресурсов CartLineItem. |
Принятие аттестации партнёра в записи | Булев | Да | Подтверждение завершения аттестации |
В этой таблице описаны свойства CartLineItem в тексте запроса.
Свойство | Тип | Обязательно | Описание |
---|---|---|---|
идентификатор | струна | Нет | Уникальный идентификатор для элемента строки корзины. Применяется после успешного создания корзины. |
catalogId | струна | Да | Идентификатор элемента каталога. Убедитесь, что доступность элемента каталога соответствует правильному сегменту. |
пользовательское имя | струна | Нет | Необязательный. Понятное название элемента, определенного партнером, для облегчения различения. |
promotionId | струна | Нет | Необязательный. Большинство акций NCE применяются автоматически, однако для необязательных акций (например, Bridge to the Cloud 2), чтобы они применились к строке корзины, партнёрам необходимо включить идентификатор акции в запрос на добавление в корзину. |
количество | int | Да | Количество лицензий или экземпляров. |
код валюты | струна | Нет | Код валюты. |
платежный цикл | Объект | Да | Тип цикла выставления счетов, заданный в течение текущего периода. |
Дата окончания пользовательского срока | ДатаВремя | Нет | Дата окончания существующей подписки, к которой требуется сотерминировать новую подписку. |
Участники | Список пар строк объекта | Нет | Коллекция PartnerId on Record (PartnerID) для покупки. |
контекст подготовки (provisioningContext) | Строка<словаря, строка> | Нет | Сведения, необходимые для обеспечения некоторых элементов в каталоге. Свойство provisioningVariables в номере SKU указывает, какие свойства необходимы для определенных элементов в каталоге. |
группа заказов | струна | Нет | Группа, указывающая, какие элементы можно разместить вместе. |
ошибка | Объект | Нет | Применяется после создания корзины, если возникает ошибка. |
продлениеTo | Массив объектов | Нет | Массив ресурсов RenewsTo. |
АттестацияПринята | Булев | Нет | Указывает согласие на условия предложения или условия SKU. Требуется только для предложений или кодов SKU, где для SkuAttestationProperties или OfferAttestationProperties значение принудительного применения аттестации равно True. |
транзакция_реселлер | Струна | Нет | Когда косвенный поставщик размещает заказ от имени непрямого торгового посредника, заполните это поле, используя PartnerID только косвенного торгового посредника (никогда не указывайте идентификатор косвенного поставщика). Это обеспечивает надлежащий учет стимулов. |
дополнительная_транзакция_перепродавец | Струна | Нет | Если косвенный поставщик размещает заказ от имени косвенного торгового посредника, заполните это поле идентификатором партнера только дополнительного косвенного торгового посредника (никогда не идентификатором косвенного поставщика). Стимулы не применяются для этих дополнительных торговых посредников. Можно ввести только не более 5 косвенных торговых посредников. Это применимо только для партнеров, осуществляющих сделки в странах ЕС/ЕАСТ. |
В этой таблице описываются свойства RenewsTo в тексте запроса.
Свойство | Тип | Обязательно | Описание |
---|---|---|---|
длительность срока | струна | Нет | Представление продолжительности срока продления в формате ISO 8601. Текущие поддерживаемые значения: P1M (1 месяц) и P1Y (1 год). |
Пример запроса
POST /v1/customers/d6bf25b7-e0a8-4f2d-a31b-97b55cfc774d/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
X-Locale: en-US
MS-PartnerCenter-Client: Partner Center .NET SDK
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 496
Expect: 100-continue
{
"lineItems": [
{
/* Microsoft Azure Subscription */
"id": 0,
"catalogItemId": "MS-AZR-0145P",
"quantity": 1,
"billingCycle": "monthly",
"termDuration": "P1Y"
},
{
/* Azure Reserved Instance */
"id": 1,
"catalogItemId": "DZH318Z0BQ36:004G:DZH318Z08C0S",
"quantity": 1,
"billingCycle": "one_time",
"termDuration": "P1Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
}
},
{
/* Azure Reserved Instance */
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "single"
}
},
{
/* Perpetual Software */
"id": 3,
"catalogItemId": "DG7GMGF0DWTL:0001:DG7GMGF0DSFM",
"quantity": 1,
"billingCycle": "one_time"
},
{
/* SaaS */
"id": 4,
"catalogItemId": "DZH318Z0BXWC:0002:DZH318Z0BMRV",
"quantity": 1,
"billingCycle": "monthly",
"termDuration": "P1M"
},
{
/* SaaS Free Trial */
"id": 5,
"catalogItemId": "DZH318Z0C0WF:0001:DZH318Z0BP69",
"quantity": 10,
"billingCycle": "none",
"termDuration": "P1M",
"renewsTo": {
"termDuration": "P1Y"
}
}
]
}
Важный
По состоянию на июнь 2023 г. последняя версия пакета SDK для .NET для Центра партнеров 3.4.0 теперь архивируется. Вы можете скачать релиз SDK с GitHub, вместе с файлом ReadMe, который содержит полезные сведения.
Партнерам рекомендуется продолжать использовать REST API Центра партнеров.
Ответ REST
В случае успешного выполнения этот метод возвращает заполненный ресурс Cart в теле ответа.
Коды успешных и ошибочных ответов
Каждый ответ содержит код состояния HTTP, указывающий на успешность или сбой и сведения об отладке. Используйте средство трассировки сети для чтения этого кода, типа ошибки и других параметров. Полный список см. в разделе Коды ошибок.
Пример ответа
HTTP/1.1 201 Created
Content-Length: 764
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
X-Locale: en-US,en-US
MS-CV: sF/wRa2ih0CzbABc.0
MS-ServerId: 000001
Date: Thu, 15 Mar 2018 17:15:01 GMT
{
"id": "3655b1a0-b1c9-4268-9824-577fdbc4d0be",
"creationTimestamp": "2019-01-16T00:45:41.6062996Z",
"lastModifiedTimestamp": "2019-01-16T00:45:41.6062996Z",
"expirationTimestamp": "2019-01-16T01:00:54.4188497Z",
"lastModifiedUser": "1824b7fc-2fac-4478-b177-66823c40ab75",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "MS-AZR-0145P",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1Y",
"orderGroup": "OMS-0"
},
{
"id": 1,
"catalogItemId": "DZH318Z0BQ36:004G:DZH318Z08C0S",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"termDuration": "P1Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
},
"orderGroup": "0"
},
{
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
},
"orderGroup": "0"
},
{
"id": 3,
"catalogItemId": "DG7GMGF0DWM3:0002:DG7GMGF0DT1M",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"orderGroup": "0"
},
{
"id": 4,
"catalogItemId": "DZH318Z0BXWC:0002:DZH318Z0BMRV",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"orderGroup": "1"
},
{
"id": 5,
"catalogItemId": "DZH318Z0C0WF:0001:DZH318Z0BP69",
"quantity": 10,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"renewsTo": {
"termDuration": "P1Y"
},
"orderGroup": "2"
}
],
"links": {
"self": {
"uri": "/customers/28045616-f6b9-462f-9701-0d89b5e65c44/carts/3655b1a0-b1c9-4268-9824-577fdbc4d0be",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}
Пример для новых служб на основе лицензий на коммерческой основе
Заметка
Новые коммерческие возможности для служб на основе лицензий включают множество новых возможностей и доступны для всех поставщиков облачных решений (CSPS). Дополнительные сведения см. в обзор новых коммерческих опытов.
Пример запроса
POST /v1/customers/932c4101-dc08-461b-b4c1-75d80e905775/carts HTTP/1.1
Host: api.partnercenter.microsoft.com
Content-Type: application/json
Content-Length: 165
{
"LineItems": [
{
"CatalogItemId":"CFQ7TTC0LFLZ:0002:CFQ7TTC0K4TS",
"Quantity": 1,
"TermDuration": "P1M",
"BillingCycle": "Monthly"
}
]
}
Важный
Элементы плана Azure и постоянного программного обеспечения не поддерживают свойство termDuration. Избегайте учета этого при приобретении таких типов предметов.
Ответ REST
В случае успешного выполнения этот метод возвращает заполненный ресурс Cart в тексте ответа.
Коды успешных и ошибочных ответов
Каждый ответ содержит код состояния HTTP, указывающий на успешность или сбой, а также другие сведения об отладке. Используйте средство трассировки сети для чтения этого кода, типа ошибки и других параметров. Полный список см. в разделе Коды ошибок.
Пример ответа
{
"id": "2517c51b-58cd-4abe-87ed-3ab812401ab4",
"creationTimestamp": "2023-07-11T21:16:11.55149Z",
"lastModifiedTimestamp": "2023-07-11T21:16:11.5515713Z",
"expirationTimestamp": "2023-07-18T21:16:17.2480482Z",
"lastModifiedUser": "9db12087-fbc3-481c-8965-73d44ff88e27",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LF8S:0001:CFQ7TTC0VZW5",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1Y",
"provisioningContext": {},
"orderGroup": "0",
"pricing": {
"listPrice": 30.4,
"discountedPrice": 30.4,
"proratedPrice": 30.4,
"price": 30.4,
"extendedPrice": 364.8
}
}
],
"links": {
"self": {
"uri": "/customers/ebd8b4c2-4069-46a8-bd70-123d6dec3e39/carts/2517c51b-58cd-4abe-87ed-3ab812401ab4",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}