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:
Creare un'istanza di un oggetto Order e impostare la proprietà ReferenceCustomerID sull'ID cliente per registrare il cliente.
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.
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.
Chiamare il metodo Create o CreateAsync e passare l'oggetto Order.
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 | Sì | 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 | Sì | 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 | Sì | 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 | Sì | Ogni voce nella raccolta ottiene un numero di riga univoco, da 0 a conteggio-1. |
offerId | string | Sì | 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 | Sì | 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"
}
}