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:

  1. Obtenga una colección de los revendedores indirectos que estén relacionados con el asociado que tiene la sesión iniciada.

  2. 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.

  3. Cree una instancia de un objeto Order y establezca la propiedad ReferenceCustomerID en el identificador de cliente para registrar el cliente.

  4. 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.

  5. 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.

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