Condividi tramite


Creare un ordine per un cliente usando le API del Centro per i partner

Si applica a: Centro per i partner | Centro per i partner gestito da 21Vianet | Centro per i partner per Microsoft Cloud per il governo degli Stati Uniti

La creazione di un ordine per i prodotti dell'istanza di macchina virtuale riservata di Azure si applica solo a:

  • Centro per i partner

Per informazioni su ciò che è attualmente disponibile per la vendita, vedi Offerte dei partner nel programma Cloud Solution Provider.

Prerequisiti

  • Credenziali descritte in Autenticazione del Centro per i partner. Questo scenario supporta l'autenticazione con le credenziali app autonome e App+Utente.

  • ID cliente (customer-tenant-id). Se non si conosce l'ID del cliente, è possibile cercarlo nel Centro per i partner selezionando l'area di lavoro Clienti , quindi il cliente dall'elenco dei clienti, quindi Account. Nella pagina Account del cliente cercare l'ID Microsoft nella sezione Informazioni sull'account del cliente. L'ID Microsoft corrisponde all'ID del cliente (customer-tenant-id).

  • Identificatore dell'offerta.

C#

Per creare un ordine per un cliente:

  1. Creare un'istanza di un oggetto Order e impostare la proprietà ReferenceCustomerID sull'ID cliente per registrare il cliente.

  2. Creare un elenco di oggetti OrderLineItem e assegnare l'elenco alla proprietà LineItems dell'ordine. Ogni voce dell'ordine contiene le informazioni di acquisto per una sola offerta. Nell'ordine deve essere presente almeno una voce.

  3. Ottenere un'interfaccia per ordinare le operazioni. Prima di tutto, chiamare il metodo IAggregatePartner.Customers.ById con l'ID cliente per identificare il cliente. Recuperare quindi l'interfaccia dalla proprietà Orders.

  4. Chiamare il metodo Create o CreateAsync e passare l'oggetto Order.

  5. Per completare l'attestazione e includere rivenditori aggiuntivi, vedere gli esempi di richiesta e risposta seguenti:

Esempio di richiesta

{
    "PartnerOnRecordAttestationAccepted":true, 
    "lineItems": [
        {
            "offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
            "quantity": 1,
            "lineItemNumber": 0,
            "PartnerIdOnRecord": "873452",
            "AdditionalPartnerIdsOnRecord":["4847383","873452"]
        }
    ],
    "billingCycle": "monthly"
}

Risposta di esempio

{
    "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);

Esempio: App di test della console. Project: Partner Center SDK Samples Class: CreateOrder.cs

Richiesta REST

Sintassi della richiesta

metodo URI della richiesta
POST {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1

Parametri URI

Usare il parametro di percorso seguente per identificare il cliente.

Nome Digita Obbligatorio Descrizione
customer-id string GUID formattato con ID cliente che identifica il cliente.

Intestazioni delle richieste

Per altre informazioni, vedi Intestazioni REST del Centro per i partner.

Testo della richiesta

Ordinamento

Questa tabella descrive le proprietà Order nel corpo della richiesta.

Proprietà Type Obbligatorio Descrizione
id string No Identificatore dell'ordine fornito al completamento della creazione dell'ordine.
referenceCustomerId string No Identificatore cliente.
billingCycle string No Indica la frequenza con cui il partner viene fatturato per questo ordine. I valori supportati sono i nomi di membro presenti in BillingCycleType. Il valore predefinito è "Mensile" o "OneTime" al momento della creazione dell'ordine. Questo campo viene applicato al completamento della creazione dell'ordine.
lineItems matrice di risorse OrderLineItem Un elenco articolizzato delle offerte che il cliente sta acquistando, inclusa la quantità.
currencyCode string No Sola lettura. Valuta utilizzata durante l'esecuzione dell'ordine. Applicato al completamento della creazione dell'ordine.
creationDate datetime No Sola lettura. Data di creazione dell'ordine, nel formato data-ora. Applicato al completamento della creazione dell'ordine.
stato string No Sola lettura. Stato dell'ordine. I valori supportati sono i nomi dei membri trovati in OrderStatus.
collegamenti OrderLinks No Collegamenti alla risorsa corrispondenti all'ordine.
Attributi ResourceAttributes No Attributi dei metadati corrispondenti all'ordine.
PartnerOnRecordAttestationAccepted Booleano Conferma il completamento dell'attestazione

OrderLineItem

Questa tabella descrive le proprietà OrderLineItem nel corpo della richiesta.

Nota

Il partnerIdOnRecord deve essere fornito solo quando un provider indiretto effettua un ordine per conto di un rivenditore indiretto. Viene usato per archiviare solo il PartnerID del rivenditore indiretto (mai l'ID del provider indiretto).

Nome Digita Obbligatorio Descrizione
lineItemNumber int Ogni voce nella raccolta ottiene un numero di riga univoco, da 0 a conteggio-1.
offerId string Identificatore dell'offerta. Verificare che la disponibilità dell'offerta sia per il segmento corretto.
subscriptionId string No L'identificatore della sottoscrizione.
parentSubscriptionId string No (Facoltativo). ID della sottoscrizione padre in un'offerta di componente aggiuntivo. Si applica solo alle PATCH.
friendlyName string No (Facoltativo). Nome descrittivo per la sottoscrizione definita dal partner per evitare ambiguità.
quantity int Numero di licenze per una sottoscrizione basata su licenza.
customTermEndDate Data/Ora No Data di fine del primo periodo di fatturazione della nuova sottoscrizione.
partnerIdOnRecord string No Quando un provider indiretto inserisce un ordine per conto di un rivenditore indiretto, popolare questo campo con il PartnerID solo del rivenditore indiretto (mai l'ID del provider indiretto). Questo assicura una contabilizzazione appropriata per gli incentivi.
provisioningContext Stringa dizionario<, stringa> No Informazioni necessarie per il provisioning di alcuni elementi nel catalogo. La proprietà provisioningVariables in uno SKU indica quali proprietà sono necessarie per elementi specifici nel catalogo.
collegamenti OrderLineItemLinks No Sola lettura. Collegamenti alla risorsa corrispondenti all'elemento della riga Ordine.
Attributi ResourceAttributes No Attributi di metadati corrispondenti all'oggetto OrderLineItem.
renewsTo Matrice di oggetti No Matrice di risorse RenewsTo .
AttestazioneAccepted bool No Indica l'accordo per offrire o sku condizioni. Obbligatorio solo per offerte o SKU in cui SkuAttestationProperties o OfferAttestationProperties enforceAttestation è True.
AdditionalPartnerIdsOnRecord Stringa No Quando un provider indiretto inserisce un ordine per conto di un rivenditore indiretto, popolare questo campo con l'ID partner solo del rivenditore indiretto aggiuntivo (mai l'ID del provider indiretto). Gli incentivi non sono applicabili per questi rivenditori aggiuntivi. È possibile immettere solo un massimo di 5 rivenditori indiretti. Si tratta solo di partner applicabili che effettuano transazioni all'interno di paesi/aree geografiche UE/EFTA.
RenewsTo

Questa tabella descrive le proprietà RenewsTo nel corpo della richiesta.

Proprietà Type Obbligatorio Descrizione
termDuration string No Rappresentazione ISO 8601 della durata del periodo di rinnovo. I valori supportati correnti sono P1M (1 mese) e P1Y (1 anno).

Esempio di richiesta

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
    }
  ]
}

Risposta REST

Se ha esito positivo, il metodo restituisce una risorsa Order nel corpo della risposta.

Se l'ordine contiene una o più sottoscrizioni, i rispettivi valori id sottoscrizione verranno visualizzati nella risposta REST solo se è stato effettuato il provisioning delle sottoscrizioni corrispondenti al momento della chiamata API. Il provisioning delle sottoscrizioni viene eseguito in modo asincrono e pertanto i valori dell'ID sottoscrizione potrebbero non essere sempre visibili nella risposta REST della chiamata Create Order. Tuttavia, dopo aver effettuato il provisioning delle rispettive sottoscrizioni, è possibile accedere ai valori dell'ID sottoscrizione tramite le chiamate API Get Orders e Get Order by ID.

Codici di errore e di esito della risposta

Ogni risposta viene fornita con un codice di stato HTTP che ne indica l'esito e con informazioni di debug aggiuntive. Usa uno strumento di traccia di rete per leggere il codice, il tipo di errore e parametri aggiuntivi. Per l'elenco completo, vedere Codici di errore del Centro per i partner.

Risposta di esempio

HTTP/1.1 201 Created
Content-Length: 788
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 025f4c19-217f-49d6-a056-391902c62fb3
Date: Thu, 15 Mar 2018 22:30:02 GMT

{
  "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"
    }
}