Crear un carro con complementos para un pedido de cliente
Puede comprar complementos a través de un carro. Para obtener más información sobre lo que está disponible actualmente para vender, consulta Ofertas de partners en el programa Proveedor de soluciones en la nube.
Nota
Las nuevas experiencias comerciales para los servicios basados en licencias incluyen muchas funcionalidades nuevas y están disponibles para todos los Proveedores de soluciones en la nube (CSP). Para más información, consulte Introducción a las nuevas experiencias comerciales.
Los nuevos carros comerciales con complementos son diferentes de las ofertas tradicionales basadas en licencias. Los complementos comerciales nuevos se compran de la misma manera que las ofertas base, no usan la propiedad addonItems . En este tema se incluyen ejemplos de solicitud y respuesta específicamente para una nueva SKU de producto basada en comercio con una SKU de producto de complemento.
Nota
Los carros expiran 7 días a partir de la creación inicial.
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.
Un id. de cliente (
customer-tenant-id
). Si no conoce el identificador del cliente, puede buscarlo en el Centro de partners seleccionando el área de trabajo Clientes , luego el cliente de la lista de clientes y, a continuación , Cuenta. En la página Cuenta del cliente, busca el Id. de Microsoft en la sección Información de la cuenta del cliente. El id. de Microsoft es el mismo que el de cliente (customer-tenant-id
).
Un carro permite la compra de una oferta base y sus complementos correspondientes. Siga estos pasos para crear un carro:
Cree una instancia de un objeto Cart.
Cree una lista de objetos CartLineItem que representen las ofertas base y asigne la lista a la propiedad LineItems del carro.
En cada elemento de línea de carro de la oferta base, rellene la lista de AddOnItems con otros objetos CartLineItem que cada uno representa un complemento que se comprará en esa oferta base.
Obtenga una interfaz para las operaciones de carro mediante IAggregatePartner para llamar al método ICustomerCollection.ById con el identificador de cliente para identificar al cliente y, a continuación, recuperar la interfaz de la propiedad Cart.
Por último, llame al método Create o CreateAsync para crear el carro.
// IAggregatePartner partnerOperations;
// string customerId;
var cart = new Cart()
{
LineItems = new List<CartLineItem>()
{
new CartLineItem()
{
Id = 0,
CatalogItemId = "A_base_offer_ID",
FriendlyName = "Myofferpurchase",
Quantity = 3,
BillingCycle = BillingCycleType.Monthly,
AddonItems = new List<CartLineItem>
{
new CartLineItem
{
Id = 1,
CatalogItemId = "An_addon_item_ID",
BillingCycle = BillingCycleType.Monthly,
Quantity = 2,
},
new CartLineItem
{
Id = 2,
CatalogItemId = "Another_addon_item_ID",
BillingCycle = BillingCycleType.Monthly,
Quantity = 3
}
}
}
}
};
var createdCart = partnerOperations.Customers.ById(customerId).Carts.Create(cart);
Siga estos pasos para crear un carro que permita la compra de complementos en suscripciones base existentes:
Cree un carro con un nuevo CartLineItem que contenga el identificador de suscripción en la propiedad ProvisioningContext con la clave "ParentSubscriptionId".
Llame al método Create o CreateAsync .
// IAggregatePartner partnerOperations;
// string selectedCustomerId;
var cart = new Cart()
{
LineItems = new List<CartLineItem>()
{
new CartLineItem()
{
Id = 0,
CatalogItemId = "An_addon_item_ID",
ProvisioningContext = new Dictionary<string, string>
{
{
"ParentSubscriptionId", "An_existing_subscription_Id"
}
},
Quantity = 1,
BillingCycle = BillingCycleType.Annual,
}
}
};
var createdCart = partnerOperations.Customers.ById(selectedCustomerId).Carts.Create(cart);
Método | URI de solicitud |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1 |
Use el siguiente parámetro de ruta de acceso para identificar al cliente.
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
customer-id | string | Sí | Identificador de cliente con formato GUID que identifica al cliente. |
Para obtener más información, consulta Encabezados REST del Centro de partners.
En esta tabla se describen las propiedades cart en el cuerpo de la solicitud.
Propiedad | Type | Obligatorio | Descripción |
---|---|---|---|
id | string | No | Identificador de carro que se suministra tras la creación correcta del carro. |
creationTimeStamp | DateTime | No | Fecha en que se creó el carro, en formato de fecha y hora. Aplicado tras la creación correcta del carro. |
lastModifiedTimeStamp | DateTime | No | Fecha en que el carro se actualizó por última vez, en formato de fecha y hora. Aplicado tras la creación correcta del carro. |
expirationTimeStamp | DateTime | No | La fecha en que expira el carro, en formato de fecha y hora. Aplicado tras la creación correcta del carro. |
lastModifiedUser | string | No | Usuario que actualizó por última vez el carro. Aplicado tras la creación correcta del carro. |
lineItems | Matriz de objetos | Sí | Matriz de recursos CartLineItem . |
En esta tabla se describen las propiedades CartLineItem en el cuerpo de la solicitud.
Propiedad | Tipo | Descripción |
---|---|---|
id | string | Identificador único de un elemento de línea de carro. Aplicado tras la creación correcta del carro. |
catalogId | string | Identificador del elemento de catálogo. |
friendlyName | string | Opcional. Nombre descriptivo del elemento definido por el asociado para ayudar a desambiguar. |
cantidad | int | Número de licencias o instancias. |
currencyCode | string | El código de divisa. |
billingCycle | Object | Tipo de ciclo de facturación establecido para el período actual. |
participants | Lista de pares de cadenas de objeto | Colección de PartnerId en Record (PartnerID) en la compra. |
provisioningContext | Cadena de diccionario<, cadena> | Contexto que se usa para el aprovisionamiento de la oferta. |
orderGroup | string | Un grupo para indicar qué elementos se pueden colocar juntos. |
addonItems | Lista de objetos CartLineItem | Una colección de artículos de línea de carro para complementos que se comprarán para la suscripción base que resulta de la compra del artículo de línea del carro primario. Esta propiedad solo es para carros basados en licencias tradicionales basados en licencias comerciales, como complementos basados en ofertas. Los elementos de comercio nuevo no usan esta propiedad addonItems . |
error | Object | Se aplica después de crear el carro si se produce un error. |
En el siguiente ejemplo de REST se muestra cómo crear un carro con elementos de complemento para una nueva suscripción base.
POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
{
"LineItems": [
{
"Id":0,
"CatalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
"FriendlyName":"Myofferpurchase",
"Quantity":3,
"BillingCycle":"monthly",
"AddonItems": [
{
"Id":1,
"CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"Quantity":2,
"BillingCycle":"monthly"
},
{
"Id":2,
"CatalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
"Quantity":3,
"BillingCycle":"monthly"
}
]
}
]
}
Ejemplo de solicitud (nueva suscripción base) para un nuevo carro comercial para una oferta base con un complemento
{
"LineItems": [
{
"Id": 0,
"CatalogItemId":"CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
"Quantity": 20,
"BillingCycle": "Monthly",
"TermDuration": "P1M"
},
{
"Id": 1,
"CatalogItemId":"CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
"Quantity": 20,
"BillingCycle": "Monthly",
"TermDuration": "P1M"
}
]
}
En el siguiente ejemplo de REST se muestra cómo anexar complementos a una suscripción base existente. Este ejemplo solo es relevante para el comercio tradicional basado en licencias, no para el nuevo comercio.
POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
{
"LineItems": [
{
"Id":0,
"CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"Quantity":1,
"BillingCycle":"annual",
"ProvisioningContext":{"ParentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"}
}
]
}
Si se ejecuta correctamente, este método devuelve el recurso Cart rellenado en el cuerpo de la respuesta.
Cada respuesta incluye un código de estado HTTP que indica éxito o error y más información de depuración. Use una herramienta de seguimiento de red para leer este código, tipo de error y más parámetros. Para obtener la lista completa, consulte Códigos de error.
HTTP/1.1 201 Created
Content-Length: 958
Content-Type: application/json
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:29:05 GMT
{
"id":"dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
"creationTimestamp":"2018-11-01T22:29:03.6900182Z",
"lastModifiedTimestamp":"2018-11-01T22:29:03.6900182Z",
"expirationTimestamp":"2018-11-01T22:44:05.0025799Z",
"lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
"status":"Active",
"lineItems": [
{
"id":0,
"catalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
"friendlyName":"Myofferpurchase",
"quantity":3,
"currencyCode":"USD",
"billingCycle":"monthly",
"orderGroup":"OMS-0",
"addonItems": [
{
"id":1,
"catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"quantity":2,
"currencyCode":"USD",
"billingCycle":"monthly",
"orderGroup":"OMS-0"
},
{
"id":2,
"catalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
"quantity":3,
"currencyCode":"USD",
"billingCycle":"monthly",
"orderGroup":"OMS-0"
}
]
}
],
"links": {
"self": {
"uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
"method":"GET",
"headers":[
]
}
},
"attributes": {
"objectType":"Cart"
}
}
HTTP/1.1 201 Created
Content-Length: 707
Content-Type: application/json
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:46:18 GMT
{
"id":"4d927e27-93d1-448b-abe5-819b66ecca22",
"creationTimestamp":"2018-11-01T22:46:16.2996364Z",
"lastModifiedTimestamp":"2018-11-01T22:46:16.2996364Z",
"expirationTimestamp":"2018-11-01T23:01:18.7543264Z",
"lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
"status":"Active",
"lineItems": [
{
"id":0,
"catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
"quantity":1,
"currencyCode":"USD",
"billingCycle":"annual",
"provisioningContext": {
"parentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"
},
"orderGroup":"OMS-0"
}
],
"links": {
"self": {
"uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/4d927e27-93d1-448b-abe5-819b66ecca22",
"method":"GET",
"headers":[
]
}
},
"attributes": {
"objectType":"Cart"
}
}
{
"id": "ea37ea81-efaf-4113-9785-e1c266aea2ed",
"creationTimestamp": "2022-02-10T16:04:22.4908435Z",
"lastModifiedTimestamp": "2022-02-10T16:04:22.4908444Z",
"expirationTimestamp": "2022-02-17T16:04:26.3085755Z",
"lastModifiedUser": "a7155e79-65e3-42b0-a62a-a41297979782",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
"quantity": 20,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"promotionId": "39NFJQT1PHSN:0008:39NFJQT1Q5J0",
"provisioningContext": {},
"orderGroup": "0"
},
{
"id": 1,
"catalogItemId": "CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
"quantity": 20,
"currencyCode": "USD",
"billingCycle": "monthly",
"termDuration": "P1M",
"provisioningContext": {},
"orderGroup": "0"
}
],
"links": {
"self": {
"uri": "/customers/3a15e1df-b095-41d4-9029-27a5974c2458/carts/ea37ea81-efaf-4113-9785-e1c266aea2ed",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}