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:
Obtenha uma coleção dos revendedores indiretos que têm um relacionamento com o parceiro conectado.
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.
Instancie um objeto Order e defina a propriedade ReferenceCustomerID como o identificador do cliente para registrar o cliente.
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.
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.
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"
}
}