Partilhar via


Criar uma encomenda para um cliente de um revendedor indireto

Como criar um pedido para um cliente de um revendedor indireto.

Pré-requisitos

  • Credenciais conforme descrito na autenticação do Partner Center. Este cenário suporta autenticação apenas com credenciais App+User.

  • Um ID de cliente (customer-tenant-id). Se não souber o ID do cliente, pode procurá-lo no Partner Center selecionando a área de trabalho Clientes e, em seguida, o cliente na lista de clientes e, em seguida, Conta. Na página Conta do cliente, procure a ID da Microsoft na seção Informações da Conta do Cliente. A ID da Microsoft é a mesma que a ID do cliente (customer-tenant-id).

  • O identificador de oferta do item a ser comprado.

  • O identificador de locatário do revendedor indireto.

C#

Para criar um pedido para um cliente de um revendedor indireto:

  1. Obtenha uma coleção dos revendedores indiretos que têm um relacionamento com o parceiro conectado.

  2. Obtenha uma variável local para o item da coleção que corresponda ao ID de revendedor indireto. Esta etapa ajuda você a acessar a propriedade MpnId do revendedor ao criar o pedido.

  3. Instancie um objeto Order e defina a propriedade ReferenceCustomerID como o identificador do cliente para registrar o cliente.

  4. Crie uma lista de objetos OrderLineItem e atribua a lista à propriedade LineItems do pedido. Cada item da linha do pedido contém as informações de compra de uma oferta. Certifique-se de preencher a propriedade PartnerIdOnRecord em cada item de linha com o PartnerID do revendedor indireto. Você deve ter pelo menos um item de linha de ordem.

  5. Obtenha uma interface para operações de pedidos chamando o método IAggregatePartner.Customers.ById com a ID do cliente para identificar o cliente e, em seguida, recupere a interface da propriedade Orders.

  6. Chame o método Create ou CreateAsync para criar a ordem.

Exemplo 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);

Exemplo: Aplicativode teste de console Projeto: SDK do Partner Center Classe de exemplos: PlaceOrderForCustomer.cs

Pedido REST

Sintaxe da solicitação

Método URI do pedido
POST {baseURL}/v1/customers/{customer-id}/pedidos HTTP/1.1

Parâmetros de URI

Use o seguinte parâmetro path para identificar o cliente.

Nome Type Obrigatório Description
ID do cliente string Sim Uma cadeia de caracteres formatada em GUID que identifica o cliente.

Cabeçalhos do pedido

Para obter mais informações, consulte Cabeçalhos REST do Partner Center.

Corpo do pedido

Ordenar

Esta tabela descreve as propriedades Order no corpo da solicitação.

Nome Type Obrigatório Descrição
id string Não Um identificador de pedido que é fornecido após a criação bem-sucedida do pedido.
referenceCustomerId string Sim O identificador do cliente.
faturamentoCiclo string Não A frequência com que o parceiro é cobrado por este pedido. O padrão é "Mensal" e é aplicado após a criação bem-sucedida do pedido. Os valores suportados são os nomes de membros encontrados em BillingCycleType. Nota: a funcionalidade de faturação anual ainda não está disponível para o público em geral. O suporte para faturamento anual estará disponível em breve.
lineItems matriz de objetos Sim Uma matriz de recursos OrderLineItem.
criaçãoData de criação string Não A data em que a ordem foi criada, no formato data-hora. Aplicado após a criação bem-sucedida da ordem.
atributos objeto Não Contém "ObjectType": "Order"

OrderLineItem

Esta tabela descreve as propriedades OrderLineItem no corpo da solicitação.

Nome Type Obrigatório Description
lineItemNumber número inteiro Sim Cada item de linha na coleção recebe um número de linha exclusivo, contando de 0 a contagem-1.
offerId string Sim O identificador da oferta.
subscriptionId cadeia Não O identificador de assinatura.
parentSubscriptionId string Não Opcional. A ID da assinatura pai em uma oferta de complemento. Aplica-se apenas ao PATCH.
friendlyNome string Não Opcional. O nome amigável para a assinatura definido pelo parceiro para ajudar a desambiguar.
quantidade número inteiro Sim O número de licenças para uma assinatura baseada em licença.
parceiroIdOnRecord string Não Quando um fornecedor indireto fizer uma encomenda em nome de um revendedor indireto, preencha este campo apenas com o ID do parceiro do revendedor indireto ( nunca o ID do fornecedor indireto). Isto garante uma contabilização adequada dos incentivos. O não fornecimento do PartnerID do revendedor não faz com que o pedido falhe. No entanto, o revendedor não é registado e, consequentemente, os cálculos de incentivo podem não incluir a venda.
atributos objeto Não Contém "ObjectType":"OrderLineItem".

Exemplo de solicitação

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: aaaa0000-bb11-2222-33cc-444444dddddd
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"
    }
}

Resposta do REST

Se for bem-sucedida, o corpo da resposta conterá o recurso Order preenchido.

Códigos de sucesso e erro de resposta

Cada resposta vem com um código de status HTTP que indica sucesso ou falha e informações adicionais de depuração. Use uma ferramenta de rastreamento de rede para ler esse código, tipo de erro e parâmetros adicionais. Para obter a lista completa, consulte Códigos de erro do Partner Center.

Exemplo de resposta

HTTP/1.1 201 Created
Content-Length: 831
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "friendlyName": "New offer purchase.",
            "quantity": 5,
            "partnerIdOnRecord": "4847383",
            "links": {
                "subscription": {
                    "uri": "/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                    "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"
    }
}