Sdílet prostřednictvím


Vytvoření objednávky pro zákazníka pomocí rozhraní API Partnerského centra

Platí pro: Partnerské centrum | Partnerské centrum provozované společností 21Vianet | Partnerské centrum pro Microsoft Cloud pro státní správu USA

Vytvoření objednávky pro produkty rezervovaných instancí virtuálních počítačů Azure platí jenom pro:

  • Partnerské centrum

Informace o tom, co je aktuálně k dispozici k prodeji, najdete v tématu Nabídky partnerů v programu Cloud Solution Provider.

Požadavky

  • Přihlašovací údaje popsané v ověřování v Partnerském centru Tento scénář podporuje ověřování pomocí samostatných přihlašovacích údajů aplikace i aplikace a uživatele.

  • ID zákazníka (customer-tenant-id). Pokud neznáte ID zákazníka, můžete ho vyhledat v Partnerském centru tak , že vyberete pracovní prostor Zákazníci , pak zákazník ze seznamu zákazníků a pak účet. Na stránce Účet zákazníka vyhledejte ID Microsoftu v části Informace o účtu zákazníka. ID Microsoftu je stejné jako ID zákazníka (customer-tenant-id).

  • Identifikátor nabídky.

C#

Vytvoření objednávky pro zákazníka:

  1. Vytvořte instanci objektu Order a nastavte vlastnost ReferenceCustomerID na ID zákazníka pro zaznamenání zákazníka.

  2. Vytvořte seznam Objektů OrderLineItem a přiřaďte seznam k vlastnosti LineItems objednávky. Každá položka řádku objednávky obsahuje informace o nákupu pro jednu nabídku. Musíte mít aspoň jednu položku řádku objednávky.

  3. Získejte rozhraní pro řazení operací. Nejprve zavolejte metodu IAggregatePartner.Customers.ById s ID zákazníka k identifikaci zákazníka. Dále načtěte rozhraní z vlastnosti Orders.

  4. Zavolejte metodu Create nebo CreateAsync a předejte objekt Order.

  5. Pokud chcete dokončit ověření identity a zahrnout další prodejce, projděte si následující ukázkové ukázky žádostí a odpovědí:

Příklad požadavku

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

Příklad odpovědi

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

Ukázka: Konzolová testovací aplikace Projekt: Třída ukázek sady SDK v Partnerském centru: CreateOrder.cs

Požadavek REST

Syntaxe požadavku

metoda Identifikátor URI žádosti
POST {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1

Parametry identifikátoru URI

Pomocí následujícího parametru cesty identifikujte zákazníka.

Name Type Požadováno Popis
ID zákazníka string Ano IDENTIFIKÁTOR GUID naformátovaný id zákazníka, které identifikuje zákazníka.

Záhlaví žádosti

Další informace najdete v tématu Hlavičky REST Partnerského centra.

Text požadavku

Objednávka

Tato tabulka popisuje vlastnosti Pořadí v textu požadavku.

Vlastnost Typ Požadováno Popis
ID string No Identifikátor objednávky zadaný při úspěšném vytvoření objednávky.
referenceCustomerId string No Identifikátor zákazníka.
billingCycle string No Určuje frekvenci, s jakou se partner účtuje za tuto objednávku. Podporované hodnoty jsou názvy členů nalezené v BillingCycleType. Výchozí hodnota je Měsíční nebo OneTime při vytváření objednávky. Toto pole se použije při úspěšném vytvoření objednávky.
lineItems array of OrderLineItem resources Ano Itemized list of the offers the customer is purchasing including the quantity.
currencyCode string No Jen pro čtení. Měna použitá při zadávání objednávky. Použito při úspěšném vytvoření objednávky.
creationDate datetime No Jen pro čtení. Datum vytvoření objednávky ve formátu data a času. Použito při úspěšném vytvoření objednávky.
stav string No Jen pro čtení. Stav objednávky. Podporované hodnoty jsou názvy členů nalezené v OrderStatus.
propojení OrderLinks No Prostředek odkazuje na objednávku.
atributy ResourceAttributes No Atributy metadat odpovídající objednávce.
PartnerOnRecordAttestationAccepted Logická hodnota Ano Potvrdí dokončení ověření identity.

OrderLineItem

Tato tabulka popisuje vlastnosti OrderLineItem v textu požadavku.

Poznámka:

PartnerIdOnRecord by měl být poskytnut pouze v případě, že nepřímý poskytovatel umístí objednávku jménem nepřímého prodejce. Používá se k ukládání ID partnera pouze nepřímého prodejce (nikdy ID nepřímého poskytovatele).

Name Type Požadováno Popis
lineItemNumber int Ano Každá položka řádku v kolekci získá jedinečné číslo řádku, které počítá od 0 do 1.
offerId string Ano Identifikátor nabídky. Ujistěte se, že dostupnost nabídky odpovídá správnému segmentu.
subscriptionId string No Identifikátor předplatného.
parentSubscriptionId string No Nepovinné. ID nadřazeného předplatného v nabídce doplňku Platí jenom pro PATCH.
friendlyName string No Nepovinné. Popisný název předplatného definovaného partnerem, který pomáhá nejednoznačný.
množství. int Ano Počet licencí pro předplatné založené na licencích.
customTermEndDate DateTime No Koncové datum prvního fakturačního období nového předplatného.
partnerIdOnRecord string No Když nepřímý poskytovatel umístí objednávku jménem nepřímého prodejce, vyplňte toto pole pouze ID partnera nepřímého prodejce (nikdy ID nepřímého poskytovatele). Tím se zajistí řádné účtování pobídek.
provisioningContext Řetězec slovníku<, řetězec> No Informace potřebné ke zřízení některých položek v katalogu. Vlastnost provisioningVariables v skladové položkách indikuje, které vlastnosti jsou vyžadovány pro konkrétní položky v katalogu.
propojení OrderLineItemLinks No Jen pro čtení. Zdroj odkazuje na položku řádku Objednávky.
atributy ResourceAttributes No Atributy metadat odpovídající OrderLineItem.
prodlužuje platnost Pole řetězců No Pole prostředků RenewsTo
AttestationAccepted bool No Označuje smlouvu o nabídce nebo podmínkách skladové položky. Vyžaduje se pouze pro nabídky nebo skladové položky, u kterých je SkuAttestationProperties nebo OfferAttestationProperties enforceAttestation true.
AdditionalPartnerIdsOnRecord Řetězcové No Když nepřímý zprostředkovatel umístí objednávku jménem nepřímého prodejce, vyplňte toto pole pouze ID partnera dalšího nepřímého prodejce (nikdy ID nepřímého poskytovatele). Pobídky se nevztahují na tyto další prodejce. Je možné zadat maximálně 5 nepřímých prodejců. Jedná se pouze o příslušné partnery, kteří provádí transakce v rámci zemí/oblastí EU/ESVO.
Prodlužuje platnost

Tato tabulka popisuje vlastnosti RenewsTo v textu požadavku.

Vlastnost Typ Požadováno Popis
termDuration string No Vyjádření doby trvání období prodloužení iso 8601. Aktuální podporované hodnoty jsou P1M (1 měsíc) a P1Y (1 rok).

Příklad požadavku

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

Odpověď REST

Pokud je metoda úspěšná, vrátí v těle odpovědi prostředek Order .

Pokud objednávka obsahuje jedno nebo více předplatných, zobrazí se v odpovědi REST pouze v případě, že odpovídající předplatná byla zřízena v době volání rozhraní API. Zřizování předplatných probíhá asynchronně, a proto nemusí být hodnoty ID předplatného vždy viditelné v odpovědi REST volání vytvořit objednávku. Po zřízení příslušných předplatných je ale možné k hodnotám ID předplatného přistupovat prostřednictvím volání rozhraní API Get Orders a Get Order by ID.

Kódy úspěšnosti a chyb odpovědi

Každá odpověď obsahuje stavový kód HTTP, který označuje úspěch nebo selhání a další informace o ladění. Ke čtení tohoto kódu, typu chyby a dalších parametrů použijte nástroj pro trasování sítě. Úplný seznam najdete v tématu Kódy chyb v Partnerském centru.

Příklad odpovědi

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