Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Partner Center | Partner Center operado pela 21Vianet | Partner Center para Microsoft Cloud for US Government
A criação de um pedido para produtos de instância de VM reservada do Azure se aplica apenas a:
- Central de Parceiros
Para obter informações sobre o que está disponível para venda no momento, consulte as ofertas do Partner no programa Provedor de Soluções na Nuvem.
Pré-requisitos
Credenciais, conforme descrito em Autenticação do Partner Center. Esse cenário dá suporte à autenticação com credenciais autônomas de Aplicativo e Aplicativo+Usuário.
Uma ID do cliente (
customer-tenant-id). Se você não souber a ID do cliente, poderá pesquisá-la no Partner Center selecionando o workspace Clientes e, em seguida, o cliente na lista de clientes e, em seguida, a 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).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 da ordem. Cada item de linha de pedido contém as informações de compra de uma oferta. Você deve ter pelo menos um item de linha de pedido.
Obtenha uma interface para ordenar operações. Primeiro, chame o método IAggregatePartner.Customers.ById com a 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, confira os seguintes exemplos de Exemplo 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: aplicativo de teste do console. Project: Classe de exemplos do SDK do Partner Center: CreateOrder.cs
Solicitação REST
Sintaxe da solicitação
| Método | URI de solicitação |
|---|---|
| POST | {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1 |
Parâmetros de URI
Use o parâmetro de caminho a seguir para identificar o cliente.
| Nome | Tipo | Obrigatório | Description |
|---|---|---|---|
| customer-id | cadeia | Yes | Uma ID do cliente formatada por GUID que identifica o cliente. |
Cabeçalhos da solicitação
Para mais informações, consulte os cabeçalhos REST do Partner Center.
Corpo da solicitação
Pedido
Esta tabela descreve as propriedades order no corpo da solicitação.
| Propriedade | Tipo | Obrigatório | Description |
|---|---|---|---|
| id | cadeia | Não | Um identificador de pedido fornecido após a criação bem-sucedida da ordem. |
| referenceCustomerId | cadeia | Não | O identificador do cliente. |
| billingCycle | cadeia | Não | Indica a frequência com que o parceiro é cobrado por essa ordem. Os valores com suporte são os nomes de membro encontrados em BillingCycleType. O padrão é "Monthly" ou "OneTime" na criação da ordem. Esse campo é aplicado após a criação bem-sucedida da ordem. |
| lineItems | matriz de recursos OrderLineItem | Yes | Uma lista de itens das ofertas que o cliente está comprando, incluindo a quantidade. |
| código de moeda | cadeia | Não | Somente leitura. A moeda usada ao fazer o pedido. Aplicado após a criação bem-sucedida da ordem. |
| data de criação | datetime | Não | Somente leitura. A data em que o pedido foi criado, no formato de data e hora. Aplicado após a criação bem-sucedida da ordem. |
| status | cadeia | Não | Somente leitura. O status da ordem. Os valores com suporte são os nomes de membro encontrados em OrderStatus. |
| links | OrderLinks | Não | Os links de recurso correspondentes à Ordem. |
| attributes | ResourceAttributes | Não | Os atributos de metadados correspondentes à Ordem. |
| PartnerOnRecordAttestationAccepted | booleano | Yes | Confirma a conclusão do Atestado |
OrderLineItem
Esta tabela descreve as propriedades OrderLineItem no corpo da solicitação.
Observação
Ao finalizar um carrinho por meio da API, os itens são processados na ordem em que são colocados no carrinho. A ordem pode afetar a elegibilidade para promoções com restrições de nova oferta se houver dois produtos do mesmo tipo no carrinho, um com a ID da promoção e o outro sem (por exemplo, com termos diferentes). Certifique-se de colocar todos os itens qualificados para uma promoção primeiro no carrinho se você estiver finalizando a compra de vários itens.
| Nome | Tipo | Obrigatório | Description |
|---|---|---|---|
| lineItemNumber | int | Yes | Cada item de linha na coleção obtém um número de linha exclusivo, contando de 0 a 1. |
| offerId | cadeia | Yes | O identificador da oferta. Verifique se a disponibilidade da oferta é para o segmento correto. |
| subscriptionId | cadeia | Não | O identificador da assinatura. |
| parentSubscriptionId | cadeia | Não | Optional. A ID da assinatura pai em uma oferta de complemento. Aplica-se somente ao PATCH. |
| friendlyName | cadeia | Não | Optional. O nome amigável da assinatura definida pelo parceiro para ajudar a desambiguar. |
| quantidade | int | Yes | O número de licenças para uma assinatura baseada em licença. |
| customTermEndDate | DateTime | Não | A data de término do primeiro período de cobrança da nova assinatura. |
| partnerIdOnRecord | cadeia | Não | Quando um provedor indireto faz um pedido em nome de um revendedor indireto, preencha esse campo com a PartnerID do revendedor indireto somente (nunca a ID do provedor indireto). Isso garante a contabilidade adequada para incentivos. |
| provisioningContext | Cadeia de caracteres de dicionário<, cadeia de caracteres> | Não | Informações necessárias para provisionamento para alguns itens no catálogo. A propriedade provisioningVariables em um SKU indica quais propriedades são necessárias para itens específicos no catálogo. |
| links | OrderLineItemLinks | Não | Somente leitura. Os links de recurso correspondentes ao item de linha Order. |
| attributes | ResourceAttributes | Não | Os atributos de metadados correspondentes ao OrderLineItem. |
| renewsTo | Matriz de objetos | Não | Uma matriz de recursos RenewsTo . |
| AttestationAccepted | bool | Não | Indica o contrato para oferecer ou condições de sku. Necessário apenas para ofertas ou skus em que SkuAttestationProperties ou OfferAttestationProperties enforceAttestation é True. |
| AdditionalPartnerIdsOnRecord | String | Não | Quando um provedor indireto coloca um pedido em nome de um revendedor indireto, preencha esse campo com a PartnerID do revendedor indireto Adicional somente (nunca a ID do provedor indireto). Os incentivos não são aplicáveis a esses outros revendedores. Somente um máximo de cinco revendedores indiretos podem ser inseridos. Esse valor é aplicável apenas para parceiros que realizam transações em países/regiões europeias. |
| scheduledNextTermInstructions | objeto | Não | Define as instruções do próximo 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 possui na renovação. |
Observação
O partnerIdOnRecord só deve ser fornecido quando um provedor indireto faz um pedido em nome de um revendedor indireto. Ele é usado para armazenar a PartnerID somente do revendedor indireto (nunca a ID do provedor indireto).
RenewsTo
Esta tabela descreve as propriedades RenewsTo no corpo da solicitação para ofertas do Microsoft Marketplace.
| Propriedade | Tipo | Obrigatório | Description |
|---|---|---|---|
| termDuration | cadeia | Não | Uma representação ISO 8601 da duração do termo de renovação. Os valores atuais compatíveis são P1M (1 mês) e P1Y (1 ano). |
ScheduledNextTermInstructions
Esta tabela descreve as propriedades scheduledNextTermInstructions no corpo da solicitação para ofertas de avaliação baseadas em licença da nova experiência de comércio (NCE). Se nenhum valor for especificado, os períodos de avaliação serão renovados em assinaturas pagas com prazo anual, cobrança mensal e 25 licenças.
| Propriedade | Tipo | Obrigatório | Description |
|---|---|---|---|
| produto | matriz | Não | Uma matriz que especifica a oferta em que uma assinatura de avaliação é renovada e o termo e a frequência de cobrança que a assinatura paga tem. |
| quantidade | int | Não | A quantidade de licença que a assinatura paga correspondente tem depois que a oferta de avaliação é renovada. |
Product
Esta tabela descreve as propriedades productTerm no corpo da solicitação para ofertas de avaliação baseadas em licença NCE. Se nenhum valor for especificado nesse array, as avaliações serão renovadas em assinaturas pagas com prazo anual e cobrança feita mensalmente.
| Propriedade | Tipo | Obrigatório | Description |
|---|---|---|---|
| ID do produto | cadeia | Não | Um GUID formatado para representar o produto da assinatura paga na qual a avaliação se renova. |
| skuId | cadeia | Não | Um GUID formatado para representar o SKU da assinatura paga na qual a avaliação é renovada. |
| availabilityId | cadeia | Não | Um GUID formatado para representar a disponibilidade da assinatura paga na qual a avaliação é renovada. |
| billingCycle | cadeia | Não | A frequência de cobrança que a assinatura paga correspondente tem depois que a oferta de avaliação é renovada. |
| termDuration | cadeia | Não | A duração do termo que a assinatura paga correspondente tem depois que a oferta de avaliação é renovada. |
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 tiver êxito, o método retornará um recurso Order no corpo da resposta.
Se o pedido contiver uma ou mais assinaturas, os respectivos valores de ID de assinatura só aparecerão 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 da assinatura podem nem sempre estar visíveis na resposta REST da chamada Criar Ordem. No entanto, depois que as respectivas assinaturas forem provisionadas, seus valores de ID de assinatura poderão ser acessados por meio de chamadas à API Get Orders e Get Order by ID.
Códigos de erro e êxito de resposta
Cada resposta vem com um código de status HTTP que indica êxito ou falha e mais informações de depuração. Use uma ferramenta de rastreamento de rede para ler este 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"
}
}