Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: Partner Center | Partner Center operado pela 21Vianet | Centro de Parceiros para a Microsoft Cloud para o Governo dos EUA
A criação de uma ordem de para produtos de instância de VM reservados do Azure se aplica apenas a:
- Centro de Parceiros
Para obter informações sobre o que está atualmente disponível para venda, consulte Ofertas de Parceiros no Programa Provedor de Soluções na Nuvem.
Pré-requisitos
Credenciais, conforme descrito na autenticação do Partner Center . Este cenário oferece suporte à autenticação com credenciais autônomas de Aplicativo e Aplicativo+Usuário.
Um ID de cliente (
customer-tenant-id). Se não souber o ID do cliente, pode procurá-lo no do Partner Center selecionando espaço de trabalho Clientes, depois o cliente da lista de clientes e, em seguida, Conta. Na página Conta do cliente, procure o ID da Microsoft na seção de Informações da Conta do Cliente . A ID da Microsoft é a mesma que a ID do cliente (customer-tenant-id).Um identificador de oferta.
C#
Para criar um pedido para um cliente:
Instancie um objeto Order e defina a propriedade ReferenceCustomerID como a ID 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. Você deve ter pelo menos um item de linha de encomenda.
Obtenha uma interface para ordenar operações. Primeiro, utilize o método IAggregatePartner.Customers.ById com o ID do cliente para identificar o cliente. Em seguida, recupere a interface da propriedade Orders .
Chame o método Create ou CreateAsync e passe o objeto Order.
Para concluir o atestado e incluir outros revendedores, consulte os seguintes exemplos de exemplos de solicitação e resposta:
Exemplo de solicitação
{
"PartnerOnRecordAttestationAccepted":true,
"lineItems": [
{
"offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"lineItemNumber": 0,
"PartnerIdOnRecord": "873452",
"AdditionalPartnerIdsOnRecord":["4847383","873452"]
}
],
"billingCycle": "monthly"
}
Exemplo de resposta
{
"id": "5cf72f146967",
"alternateId": "5cf72f146967",
"referenceCustomerId": "f81d98dd-c2f4-499e-a194-5619e260344e",
"billingCycle": "monthly",
"currencyCode": "USD",
"currencySymbol": "$",
"lineItems": [
{
"lineItemNumber": 0,
"offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"termDuration": "P1M",
"transactionType": "New",
"friendlyName": "AI Builder Capacity add-on",
"quantity": 1,
"partnerIdOnRecord": "873452",
"additionalPartnerIdsOnRecord": [
"4847383",
"873452"
],
"links": {
"product": {
"uri": "/products/CFQ7TTC0LH0Z?country=US",
"method": "GET",
"headers": []
},
"sku": {
"uri": "/products/CFQ7TTC0LH0Z/skus/0001?country=US",
"method": "GET",
"headers": []
},
"availability": {
"uri": "/products/CFQ7TTC0LH0Z/skus/0001/availabilities/CFQ7TTC0K18P?country=US",
"method": "GET",
"headers": []
}
}
}
],
"creationDate": "2021-08-17T18:13:11.3122226Z",
"status": "pending",
"transactionType": "UserPurchase",
"links": {
"self": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967",
"method": "GET",
"headers": []
},
"provisioningStatus": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967/provisioningstatus",
"method": "GET",
"headers": []
},
"patchOperation": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967",
"method": "PATCH",
"headers": []
}
},
"client": {},
"attributes": {
"objectType": "Order"
}
}
IAggregatePartner partnerOperations;
string customerId;
string offerId;
var order = new Order()
{
ReferenceCustomerId = customerId,
LineItems = new List<OrderLineItem>()
{
new OrderLineItem()
{
OfferId = offerId,
FriendlyName = "new offer purchase",
Quantity = 1,
ProvisioningContext = new Dictionary<string, string>
{
{ "subscriptionId", "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" },
{ "scope", "shared" },
{ "duration", "3Years" }
}
}
}
};
var createdOrder = partnerOperations.Customers.ById(customerId).Orders.Create(order);
Exemplo de: Aplicativo de teste de console. Project: Exemplos de SDK do Partner Center de classe : CreateOrder.cs
Pedido REST
Sintaxe da solicitação
| Método | Solicitar URI |
|---|---|
| POST | {baseURL}/v1/customers/{customer-id}/pedidos HTTP/1.1 |
Parâmetros de URI
Utilize o seguinte parâmetro de caminho para identificar o cliente.
| Nome | Tipo | Necessário | Descrição |
|---|---|---|---|
| ID do cliente | cadeia (de caracteres) | Sim | Um ID de cliente formatado em GUID que identifica o cliente. |
Cabeçalhos de solicitação
Para obter mais informações, consulte cabeçalhos REST do Partner Center.
Corpo do pedido
Encomenda
Esta tabela descreve as propriedades da Ordem no corpo do pedido.
| Propriedade | Tipo | Necessário | Descrição |
|---|---|---|---|
| identificação | cadeia (de caracteres) | Não | Um identificador de pedido que é fornecido após a criação bem-sucedida do pedido. |
| IDClienteDeReferência | cadeia (de caracteres) | Não | O identificador do cliente. |
| ciclo de faturamento | cadeia (de caracteres) | Não | Indica a frequência com que o parceiro é cobrado por este pedido. Os valores suportados são os nomes de membros encontrados em BillingCycleType. O padrão é "Monthly" ou "OneTime" na criação do pedido. Este campo é utilizado após a criação bem-sucedida do pedido. |
| lineItems | matriz de recursos OrderLineItem | Sim | Uma lista detalhada das ofertas que o cliente está comprando, incluindo a quantidade. |
| código de moeda | cadeia (de caracteres) | Não | Somente leitura. A moeda usada ao fazer o pedido. Aplicado após a criação bem-sucedida do pedido. |
| Data de criação | datetime | Não | Somente leitura. A data em que a ordem foi criada, no formato data-hora. Aplicado após a criação bem-sucedida do pedido. |
| estado | cadeia (de caracteres) | Não | Somente leitura. O estado do pedido. Os valores suportados são os nomes de membros encontrados em OrderStatus. |
| ligações | OrderLinks | Não | As ligações de recursos correspondentes à encomenda. |
| atributos | ResourceAttributes | Não | Os atributos de metadados correspondentes à Encomenda. |
| ParceiroRegistadoAtestaçãoAceite | booleano | Sim | Confirma a conclusão da atestação |
ItemDeLinhaDePedido
Esta tabela descreve as propriedades OrderLineItem no corpo da solicitação.
Observação
Ao fazer o checkout de um carrinho via API, os itens de linha são processados pela ordem em que são colocados no carrinho. A encomenda pode afetar a elegibilidade a promoções com restrições de Novas Ofertas se houver dois produtos do mesmo tipo no carrinho, um com o ID da promoção e outro sem (por exemplo, com termos diferentes). Garanta que coloque primeiro no carrinho todos os itens elegíveis para promoção se estiver a concluir a compra de vários artigos.
| Nome | Tipo | Necessário | Descrição |
|---|---|---|---|
| lineItemNumber | Int | Sim | Cada item de linha na coleção recebe um número de linha exclusivo, começando em 0 e indo até ao total menos 1. |
| offerId | cadeia (de caracteres) | Sim | O identificador da oferta. Garanta que a disponibilidade da oferta é para o segmento correto. |
| identificadorDeSubscrição | cadeia (de caracteres) | Não | O identificador de assinatura. |
| parentSubscriptionId | cadeia (de caracteres) | Não | Opcional. O ID da assinatura principal numa oferta complementar. Aplica-se apenas ao PATCH. |
| nomeAmigável | cadeia (de caracteres) | Não | Opcional. O nome amigável para a assinatura definido pelo parceiro para ajudar a desambiguar. |
| Quantidade | Int | Sim | O número de licenças para uma subscrição por licença. |
| customTermEndDate | Data/Hora | Não | A data final do primeiro período de cobrança da nova assinatura. |
| parceiroIdOnRecord | cadeia (de caracteres) | Não | Quando um fornecedor indireto fizer uma encomenda em nome de um revendedor indireto, preencha este campo com o ID de parceiro do revendedor indireto apenas (nunca o ID do fornecedor indireto). Isto garante uma contabilização adequada dos incentivos. |
| Contexto de provisionamento | Dicionário<string, string> | Não | Informações necessárias para o provisionamento de alguns itens no catálogo. A propriedade provisioningVariables numa SKU indica as propriedades necessárias para determinados itens no catálogo. |
| ligações | OrderLineItemLinks | Não | Somente leitura. Os links de recursos correspondentes ao item de linha de ordem. |
| atributos | ResourceAttributes | Não | Os atributos de metadados correspondentes ao OrderLineItem. |
| renovarPara | Matriz de objetos | Não | Uma matriz de recursos RenewsTo. |
| AtestadoAceito | Bool | Não | Indica concordância com as condições do produto ou SKU. Obrigatório apenas para ofertas ou skus em que SkuAttestationProperties ou OfferAttestationProperties enforceAttestation é True. |
| IDs de Parceiros Adicionais em Registro | Stringa | Não | Quando um fornecedor indireto fizer uma encomenda em nome de um revendedor indireto, preencha este campo com o ID de parceiro do Revendedor indireto adicional apenas (nunca o ID do fornecedor indireto). Os incentivos não se aplicam a estes outros revendedores. Apenas um máximo de cinco Revendedores Indiretos podem ser inscritos. Este valor aplica-se apenas a parceiros que operam dentro de países/regiões europeias. |
| agendadoPróximoTermoInstruções | objecto | Não | Define as próximas instruções de termo para uma assinatura de avaliação. Os parceiros podem especificar a duração do termo, a frequência de faturamento e a quantidade que a assinatura paga correspondente tem no momento da renovação. |
Observação
O partnerIdOnRecord só deve ser fornecido quando um fornecedor indireto faz uma encomenda em nome de um revendedor indireto. Ele é usado para armazenar apenas o PartnerID do revendedor indireto (nunca o ID do provedor indireto).
RenovarPara
Esta tabela descreve as propriedades RenewsTo no corpo da solicitação para ofertas do Microsoft Marketplace.
| Propriedade | Tipo | Necessário | Descrição |
|---|---|---|---|
| termoDuração | cadeia (de caracteres) | Não | Uma representação ISO 8601 da duração do período de renovação. Os valores atuais suportados são P1M (1 mês) e P1Y (1 ano). |
ScheduledNextTermInstructions
Esta tabela descreve as propriedades de scheduledNextTermInstructions no corpo do pedido para ofertas de teste baseadas em licenças na nova experiência de comércio (NCE). Se não forem especificados valores, os períodos de teste são convertidos em subscrições pagas com um prazo anual, faturação mensal e 25 licenças.
| Propriedade | Tipo | Necessário | Descrição |
|---|---|---|---|
| produto | matriz | Não | Um array que especifica a oferta em que uma subscrição de teste se renova e o período e a frequência de faturação que a subscrição paga possui. |
| Quantidade | Int | Não | O número de licenças que a assinatura paga correspondente tem quando a oferta experimental renova. |
Produto
Esta tabela descreve as propriedades productTerm no corpo da solicitação para ofertas de avaliação baseadas em licença NCE. Se não forem especificados valores neste array, os testes renovam-se em subscrições pagas com um termo anual e faturação mensal.
| Propriedade | Tipo | Necessário | Descrição |
|---|---|---|---|
| productId | cadeia (de caracteres) | Não | Um GUID formatado para representar o produto da subscrição paga na qual o período experimental é convertido. |
| skuId | cadeia (de caracteres) | Não | Um GUID formatado para representar o SKU da subscrição paga em que o período experimental é renovado. |
| availabilityId | cadeia (de caracteres) | Não | Um GUID formatado para representar a disponibilidade da subscrição paga que o período experimental renova. |
| ciclo de faturamento | cadeia (de caracteres) | Não | A frequência de faturação que a assinatura paga correspondente tem quando a oferta experimental é renovada. |
| termoDuração | cadeia (de caracteres) | Não | A duração da subscrição paga correspondente após a renovação da oferta de teste. |
Exemplo de solicitação
POST https://api.partnercenter.microsoft.com/v1/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders HTTP/1.1
Authorization: Bearer <token>
Host: api.partnercenter.microsoft.com
Content-Length: 691
Content-Type: application/json
{
"BillingCycle": "one_time",
"CurrencyCode": "USD",
"LineItems": [
{
"LineItemNumber": 0,
"ProvisioningContext": {
"subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"scope": "shared",
"duration": "1Year"
},
"OfferId": "DZH318Z0BQ4B:0047:DZH318Z0DSM8",
"FriendlyName": "A_sample_Azure_RI",
"Quantity": 1
}
]
}
// request example where some renewal values for an NCE license-based trial are specified
http
POST https://api.partnercenter.microsoft.com/v1/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders HTTP/1.1
Authorization: Bearer <token>
Host: api.partnercenter.microsoft.com
Content-Length: 486
Content-Type: application/json
{
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LCHC:0003:CFQ7TTC0XCQC",
"quantity": 25,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"promotionId": null,
"provisioningContext": {},
"customTermEndDate": null,
"scheduledNextTermInstructions": {
"product": {
"billingCycle": "monthly",
"termDuration": "P1M"
}
}
}
],
"partnerOnRecordAttestationAccepted": true
}
Resposta REST
Se for bem-sucedido, o método retornará um recurso de Ordem no corpo da resposta.
Se a ordem contiver uma ou mais subscrições, os respetivos valores de ID de subscrição só aparecem na resposta REST se as assinaturas correspondentes forem provisionadas no momento da chamada à API. O provisionamento de assinaturas ocorre de forma assíncrona e, portanto, os valores de ID de assinatura nem sempre podem estar visíveis na resposta REST da chamada Criar Ordem. No entanto, uma vez provisionadas as respetivas subscrições, os seus valores de ID de subscrição podem ser acedidos através das chamadas Get Orders e Get Order by ID API.
Códigos de sucesso e erro de resposta
Cada resposta vem com um código de status HTTP que indica sucesso ou falha e mais informações de depuração. Use uma ferramenta de rastreamento de rede para ler esse código, tipo de erro e outros parâmetros. Para obter a lista completa, consulte os códigos de erro do Partner Center.
Exemplo de resposta
{
"id": "Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1",
"referenceCustomerId": "b0d70a69-4c42-4b27-b17b-91a835d8686a",
"billingCycle": "one_time",
"currencyCode": "USD",
"lineItems": [
{
"lineItemNumber": 0,
"offerId": "84A03D81-6B37-4D66-8D4A-FAEA24541538",
"friendlyName": "A_sample_Azure_RI",
"quantity": 1,
"links": {
"sku": {
"uri": "/products/DZH318Z0BQ4B/skus/0047?country=US",
"method": "GET",
"headers": []
}
}
} ],
"creationDate": "2018-03-15T22:30:02.085152Z",
"status": "pending",
"links": {
"provisioningStatus": {
"uri": "/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders/Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1/provisioningstatus",
"method": "GET",
"headers": []
},
"self": {
"uri": "/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders/Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Order"
}
}
// response content for an order containing an NCE license-based trial
{
"id": "99d3777b-61da-4c95-aefa-203c248c4180",
"creationTimestamp": "2025-02-04T22:22:36.7924103Z",
"lastModifiedTimestamp": "2025-02-04T22:22:36.7924109Z",
"expirationTimestamp": "2025-02-11T22:23:34.5190698Z",
"lastModifiedUser": "b5109661-56c5-45ed-9447-f67463458a97",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LCHC:0003:CFQ7TTC0XCQC",
"quantity": 25,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"provisioningContext": {},
"orderGroup": "0",
"pricing": {
"listPrice": 0.0,
"discountedPrice": 0.0,
"proratedPrice": 0.0,
"price": 0.0,
"extendedPrice": 0.0
},
"scheduledNextTermInstructions": {
"product": {
"productId": "CFQ7TTC0LCHC",
"skuId": "0002",
"availabilityId": "CFQ7TTC0XL82",
"billingCycle": "monthly",
"termDuration": "P1M"
},
"quantity": 25
}
}
],
"links": {
"self": {
"uri": "/customers/81e78b53-9aa8-44e7-a041-3b15272d8f84/carts/99d3777b-61da-4c95-aefa-203c248c4180",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}