Crear un pedido para un cliente de un revendedor indirecto.
Cómo crear un pedido para un cliente de un revendedor indirecto.
Requisitos previos
Credenciales tal como se describen en el artículo Autenticación del Centro de partners. Este escenario admite la autenticación solo con credenciales de aplicación y 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, busque el identificador de Microsoft en la sección Información de la cuenta de cliente. El id. de Microsoft es el mismo que el de cliente (customer-tenant-id
).Identificador de la oferta del artículo que se va a comprar.
Identificador de inquilino del revendedor indirecto.
C#
Para crear un pedido para un cliente de un revendedor indirecto:
Obtenga una colección de los revendedores indirectos que estén relacionados con el asociado que tiene la sesión iniciada.
Obtenga una variable local al elemento de la colección que coincida con el identificador de revendedor indirecto. Este paso le ayuda a acceder a la propiedad MpnId del revendedor al crear el pedido.
Cree una instancia de un objeto Order y establezca la propiedad ReferenceCustomerID en el identificador de cliente para registrar el cliente.
Cree una lista de objetos OrderLineItem y asigne la lista a la propiedad LineItems del pedido. Cada elemento de línea de pedidos contiene la información de compra de una oferta. Asegúrese de rellenar la propiedad PartnerIdOnRecord en cada elemento de línea con el PartnerID del revendedor indirecto. Debe tener al menos un elemento de línea de pedido.
Obtenga una interfaz para ordenar las operaciones llamando al método IAggregatePartner.Customers.ById con el identificador de cliente para identificar al cliente y, a continuación, recupere la interfaz de la propiedad Orders.
Llame al método Create o CreateAsync para crear el pedido.
Ejemplo de C#
// IAggregatePartner partnerOperations;
// string customerId;
// string offerId;
// string indirectResellerId;
// Get the indirect resellers with a relationship to the signed-in partner.
var indirectResellers = partnerOperations.Relationships.Get(PartnerRelationshipType.IsIndirectCloudSolutionProviderOf);
// Find the matching reseller in the collection.
var selectedIndirectReseller = (indirectResellers != null && indirectResellers.Items.Any()) ?
indirectResellers.Items.FirstOrDefault(reseller => reseller.Id.Equals(indirectResellerId, StringComparison.OrdinalIgnoreCase)) :
null;
// Prepare the order and populate the PartnerIdOnRecord with the reseller's Partner Id.
var order = new Order()
{
ReferenceCustomerId = customerId,
LineItems = new List<OrderLineItem>()
{
new OrderLineItem()
{
OfferId = offerId,
FriendlyName = "New offer purchase.",
Quantity = 5,
PartnerIdOnRecord = selectedIndirectReseller != null ? selectedIndirectReseller.MpnId : null
}
}
};
// Place the order.
var createdOrder = partnerOperations.Customers.ById(customerId).Orders.Create(order);
Ejemplo: Proyecto de aplicaciónde prueba de consola: Clase de ejemplos del SDK del Centro de partners: PlaceOrderForCustomer.cs
Solicitud REST
Sintaxis de la solicitud
Método | URI de solicitud |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1 |
Parámetros del identificador URI
Use el siguiente parámetro de ruta de acceso para identificar al cliente.
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
customer-id | string | Sí | Cadena con formato GUID que identifica al cliente. |
Encabezados de solicitud
Para obtener más información, consulta Encabezados REST del Centro de partners.
Cuerpo de la solicitud
compra
En esta tabla se describen las propiedades Order del cuerpo de la solicitud.
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
id | string | No | Identificador de pedido que se proporciona tras la creación correcta del pedido. |
referenceCustomerId | string | Sí | El identificador del cliente. |
billingCycle | string | No | La frecuencia con la que se factura al asociado por este pedido. El valor predeterminado es "Mensual" y se aplica tras la creación correcta del pedido. Los valores admitidos son los nombres de los miembros que se encuentran en BillingCycleType. Nota: La característica de facturación anual aún no está disponible con carácter general. El servicio de soporte técnico para la facturación anual estará disponible en breve. |
lineItems | matriz de objetos | Sí | Una matriz de recursos OrderLineItem. |
creationDate | string | No | La fecha en que se creó el pedido, en formato de fecha y hora. Aplicado tras la creación correcta del pedido. |
attributes | object | No | Contiene "ObjectType": "Order" |
OrderLineItem
En esta tabla se describen las propiedades OrderLineItem en el cuerpo de la solicitud.
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
lineItemNumber | int | Sí | Cada elemento de línea de la colección obtiene un número de línea única, que comienza desde 0 hasta -1. |
offerId | string | Sí | El identificador de la oferta. |
subscriptionId | string | No | Identificador de la suscripción. |
parentSubscriptionId | string | No | Opcional. El id.de la suscripción principal en una oferta de complemento. Solo se aplica a PATCH. |
friendlyName | string | No | Opcional. Nombre descriptivo de la suscripción definida por el asociado para ayudar a desambiguar. |
quantity | int | Sí | El número de licencias de una suscripción basada en licencia. |
partnerIdOnRecord | string | No | Cuando un proveedor indirecto realiza un pedido en nombre de un revendedor indirecto, rellene este campo con el PartnerID del revendedor indirecto solo (nunca el identificador del proveedor indirecto). Esto garantiza una contabilidad adecuada de los incentivos. Si no se proporciona el partnerID del revendedor, no se produce un error en el pedido. Sin embargo, el revendedor no se registra y, como consecuencia, los cálculos de incentivos podrían no incluir la venta. |
attributes | object | No | Contiene "ObjectType":"OrderLineItem". |
Ejemplo de solicitud
POST https://api.partnercenter.microsoft.com/v1/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/orders HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 02109f46-3ff2-4be4-9f37-b2eb6d58d542
MS-CorrelationId: 85195ae6-3de5-4978-abd4-7be2fbfe4c84
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 410
Expect: 100-continue
{
"Id": null,
"ReferenceCustomerId": "c501c3c4-d776-40ef-9ecf-9cefb59442c1",
"BillingCycle": "unknown",
"LineItems": [{
"LineItemNumber": 0,
"OfferId": "DB2E705F-B82A-4024-A3D5-D88E12F2DB35",
"SubscriptionId": null,
"ParentSubscriptionId": null,
"FriendlyName": "New offer purchase.",
"Quantity": 5,
"PartnerIdOnRecord": "4847383",
"Attributes": {
"ObjectType": "OrderLineItem"
}
}
],
"CreationDate": null,
"Attributes": {
"ObjectType": "Order"
}
}
Respuesta REST
Si se ejecuta correctamente, el cuerpo de la respuesta contiene el recurso Order rellenado.
Códigos de error y de respuesta correctos
Cada respuesta incluye un código de estado HTTP que indica si la operación se ha realizado correctamente o con errores y proporciona información de depuración adicional. Use una herramienta de seguimiento de red para leer este código, el tipo de error y los parámetros adicionales. Para obtener la lista completa, consulte Códigos de error del Centro de partners.
Ejemplo de respuesta
HTTP/1.1 201 Created
Content-Length: 831
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 85195ae6-3de5-4978-abd4-7be2fbfe4c84
MS-RequestId: 02109f46-3ff2-4be4-9f37-b2eb6d58d542
MS-CV: Nd3Oum/L5EywtKQK.0
MS-ServerId: 020021921
Date: Mon, 10 Apr 2017 23:02:24 GMT
{
"id": "3eddcac6-63b2-4c40-b0b6-f47e18301492",
"referenceCustomerId": "c501c3c4-d776-40ef-9ecf-9cefb59442c1",
"billingCycle": "monthly",
"lineItems": [{
"lineItemNumber": 0,
"offerId": "DB2E705F-B82A-4024-A3D5-D88E12F2DB35",
"subscriptionId": "42226ED6-070A-4E0F-B80C-4CDFB3E97AA7",
"friendlyName": "New offer purchase.",
"quantity": 5,
"partnerIdOnRecord": "4847383",
"links": {
"subscription": {
"uri": "/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/subscriptions/42226ED6-070A-4E0F-B80C-4CDFB3E97AA7",
"method": "GET",
"headers": []
}
}
}
],
"creationDate": "2017-04-10T16:02:25.983-07:00",
"links": {
"self": {
"uri": "/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/orders/3eddcac6-63b2-4c40-b0b6-f47e18301492",
"method": "GET",
"headers": []
}
},
"attributes": {
"etag": "eyJpZCI6IjNlZGRjYWM2LTYzYjItNGM0MC1iMGI2LWY0N2UxODMwMTQ5MiIsInZlcnNpb24iOjF9",
"objectType": "Order"
}
}
Comentaris
https://aka.ms/ContentUserFeedback.
Properament: al llarg del 2024 eliminarem gradualment GitHub Issues com a mecanisme de retroalimentació del contingut i el substituirem per un nou sistema de retroalimentació. Per obtenir més informació, consulteu:Envieu i consulteu els comentaris de