Iş Ortağı Merkezi API 'Lerini kullanarak bir müşteri için sipariş oluşturma

Uygulama hedefi: Iş Ortağı Merkezi | 21Vianet tarafından işletilen iş ortağı Merkezi | Microsoft Cloud for US Government için iş ortağı Merkezi

Azure ayrılmış VM örneği ürünlerinin bir sırası oluşturmak için yalnızca şu şekilde geçerlidir:

  • İş Ortağı Merkezi

şu anda satım için kullanılabilir olan bilgiler hakkında bilgi için Bulut Çözümü Sağlayıcısı programındaki iş ortağı tekliflerikonusuna bakın.

Önkoşullar

  • Iş ortağı merkezi kimlik doğrulamasındaaçıklandığı gibi kimlik bilgileri. Bu senaryo, hem tek başına uygulama hem de uygulama + kullanıcı kimlik bilgileriyle kimlik doğrulamayı destekler.

  • Bir müşteri KIMLIĞI ( customer-tenant-id ). Müşterinin KIMLIĞINI bilmiyorsanız Iş Ortağı Merkezi panosundabulabilirsiniz. Iş Ortağı Merkezi menüsünden CSP ' yi ve ardından müşteriler' i seçin. Müşteri listesinden müşteriyi seçin ve ardından Hesap' ı seçin. Müşterinin hesap sayfasında, müşteri hesabı bilgileri bölümünde Microsoft kimliği ' ni arayın. Microsoft KIMLIĞI, müşteri KIMLIĞI () ile aynıdır customer-tenant-id .

  • Bir teklif tanımlayıcısı.

C#

Bir müşteri için sipariş oluşturmak için:

  1. Bir Order nesnesi örneği oluşturun ve müşteriyi kaydetmek Için Referencecustomerıd özelliğini müşteri kimliği olarak ayarlayın.

  2. Orderlineıtem nesnelerinin bir listesini oluşturun ve listeyi Order 's LineItems özelliğine atayın. Her sipariş satırı öğesi, bir teklifin satın alma bilgilerini içerir. En az bir sipariş satırı öğesine sahip olmanız gerekir.

  3. Sipariş işlemlerine yönelik bir arabirim edinin. İlk olarak, müşteriyi tanımlamak için ıaggregatepartner. Customers. Byıd YÖNTEMINI Müşteri kimliğiyle çağırın. Sonra, Orders özelliğinden arabirimi alın.

  4. Create veya createasync metodunu çağırın ve Order nesnesini geçirin.

  5. Kanıtlamayı tamamlayıp ek satıcıları dahil etmek için aşağıdaki örnek Istek ve yanıt örneklerine bakın:

İstek örneği

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

Yanıt örneği

{
    "id": "5cf72f146967",
    "alternateId": "5cf72f146967",
    "referenceCustomerId": "f81d98dd-c2f4-499e-a194-5619e260344e",
    "billingCycle": "monthly",
    "currencyCode": "USD",
    "currencySymbol": "$",
    "lineItems": [
        {
            "lineItemNumber": 0,
            "offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
            "subscriptionId": "fcddfa52-1da8-4529-d347-50ea51e1e7be",
            "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", "5198C069-3DAA-403A-8660-5BE11BFD12EE" },
                { "scope", "shared" },
                { "duration", "3Years" }
            }
        }
    }
};

var createdOrder = partnerOperations.Customers.ById(customerId).Orders.Create(order);

Örnek: konsol test uygulaması. Project: iş ortağı merkezi SDK örnekleri sınıfı: createorder. cs

REST isteği

İstek sözdizimi

Yöntem İstek URI'si
YAYINLA {BaseUrl}/v1/Customers/{Customer-id}/Orders http/1.1

URI parametreleri

Müşteriyi tanımlamak için aşağıdaki yol parametresini kullanın.

Ad Tür Gerekli Açıklama
müşteri kimliği string Yes Müşteriyi tanımlayan bir GUID biçimli müşteri kimliği.

İstek üst bilgileri

Daha fazla bilgi için bkz. Iş ortağı MERKEZI Rest üstbilgileri.

İstek gövdesi

Sipariş

Bu tablo, istek gövdesindeki sıra özelliklerini açıklar.

Özellik Tür Gerekli Açıklama
kimlik dize No Siparişin başarıyla oluşturulması sırasında sağlanan bir sipariş tanımlayıcısı.
Referencecustomerıd dize No Müşteri tanımlayıcısı.
Bilimlingcycle dize No Ortağın bu sipariş için faturalandırılabileceği sıklığı belirtir. Desteklenen değerler, BillingCycleTypeiçinde bulunan üye adlarıdır. "Aylık" veya "OneTime" varsayılan olarak sıralı oluşturma. Bu alan, siparişin başarıyla oluşturulmasından sonra uygulanır.
LineItems Orderlineıtem kaynakları dizisi Yes Müşterinin miktarı dahil satın aldığı tekliflerinin listesi.
currencyCode dize No Salt okunur. Sipariş yerleştirilirken kullanılan para birimi. Siparişin başarıyla oluşturulmasından sonra uygulandı.
creationDate datetime No Salt okunur. Siparişin oluşturulduğu tarih ve saat biçimi. Siparişin başarıyla oluşturulmasından sonra uygulandı.
durum dize No Salt okunur. Siparişin durumu. Desteklenen değerler Orderstatusiçinde bulunan üye adlarıdır.
Köprü OrderLinks No Sıraya karşılık gelen kaynak bağlantıları.
öznitelikler Resourceattributes No Order'a karşılık gelen meta veri öznitelikleri.
PartnerOnRecordAttestationAccepted Boole Yes Doğrulama tamamlanmasını onaylar

OrderLineItem

Bu tablo, istek gövdesinin OrderLineItem özelliklerini açıklar.

Not

partnerIdOnRecord yalnızca dolaylı bir sağlayıcı dolaylı kurumsal bayi adına sipariş verdiklerinde sağlanmalıdır. Yalnızca dolaylı kurumsal bayinin Microsoft İş Ortağı Ağı kimliğini depolamak için kullanılır (hiçbir zaman dolaylı sağlayıcının kimliği).

Ad Tür Gerekli Açıklama
lineItemNumber int Yes Koleksiyonda yer alan her satır öğesi benzersiz bir satır numarası alır ve 0 ile 1 arasında bir sayıya kadar sayar.
offerId string Yes Teklif tanımlayıcısı.
subscriptionId dize No Abonelik tanımlayıcısı.
parentSubscriptionId dize No İsteğe bağlı. Eklenti teklifinde üst aboneliğin kimliği. Yalnızca PATCH için geçerlidir.
Friendlyname dize No İsteğe bağlı. Karartmanıza yardımcı olmak için iş ortağı tarafından tanımlanan aboneliğin kolay adı.
miktar int Yes Lisans tabanlı bir aboneliğin lisans sayısı.
partnerIdOnRecord dize No Dolaylı sağlayıcı dolaylı bir kurumsal bayi adına sipariş verdiylerinde, bu alanı yalnızca dolaylı kurumsal bayinin MPN kimliğiyle (dolaylı sağlayıcının kimliği hiçbir zaman) doldurmak. Bu, teşvikler için doğru hesaplamayı sağlar.
provisioningContext Sözlük < dizesi, dize> No Katalogdaki bazı öğeler için sağlama için gereken bilgiler. SKU'daki provisioningVariables özelliği, katalogdaki belirli öğeler için hangi özelliklerin gerekli olduğunu gösterir.
Bağlantı OrderLineItemLinks No Salt okunur. Sipariş satırı öğesine karşılık gelen kaynak bağlantıları.
öznitelikler Resourceattributes No OrderLineItem'a karşılık gelen meta veri öznitelikleri.
renewsTo Nesne dizisi No RenewsTo kaynakları dizisi.
AttestationAccepted bool No Teklif veya sku koşullarının sözleşmeyi gösterir. Yalnızca SkuAttestationProperties veya OfferAttestationProperties enforceAttestation true olan teklifler veya sku'lar için gereklidir.
AdditionalPartnerIdsOnRecord Dize No Dolaylı sağlayıcı dolaylı bir kurumsal bayi adına sipariş verdiylerinde, bu alanı yalnızca Ek dolaylı kurumsal bayinin MPN kimliğiyle (dolaylı sağlayıcının kimliği hiçbir zaman) doldurmak. Teşvikler bu ek kurumsal bayiler için geçerli değildir. Yalnızca en fazla 5 Dolaylı Kurumsal Bayi girilebilir. Bu yalnızca AB /EFTA ülkeleri içinde işlem yapılan iş ortakları için geçerlidir.
RenewsTo

Bu tabloda istek gövdesinin RenewsTo özellikleri açık edilmektedir.

Özellik Tür Gerekli Açıklama
termDuration dize No Yenileme süresinin ISO 8601 gösterimi. Desteklenen geçerli değerler P1M (1 ay) ve P1Y (1 yıl) değerleridir.

İstek örneği

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": "3D5ECED6-1151-44C7-AEE6-70A4BB725666",
        "scope": "shared",
        "duration": "1Year"
      },
      "OfferId": "DZH318Z0BQ4B:0047:DZH318Z0DSM8",
      "FriendlyName": "A_sample_Azure_RI",
      "Quantity": 1
    }
  ]
}

REST yanıtı

Başarılı olursa, yöntem yanıt gövdesinde bir Sipariş kaynağı döndürür.

Sipariş bir veya daha fazla abonelik içeriyorsa, ilgili abonelik kimliği değerleri YALNıZCA ILGILI abonelikler API çağrısı zamanında sağlandı ise REST yanıtta görünür. Abonelikleri sağlama zaman uyumsuz olarak gerçekleşir ve bu nedenle Sipariş Oluştur çağrısının REST yanıtını kullanarak abonelik kimliği değerleri her zaman görünür durumda olmayacaktır. Ancak, ilgili abonelikler sağlandıktan sonra abonelik kimliği değerlerine Siparişleri Al ve Kimlike Göre Sipariş Al API çağrıları aracılığıyla erişilebilir.

Yanıt başarı ve hata kodları

Her yanıt, başarılı veya başarısız olduğunu gösteren bir HTTP durum kodu ve ek hata ayıklama bilgileriyle birlikte gelir. Bu kodu, hata türünü ve ek parametreleri okumak için bir ağ izleme aracı kullanın. Tam liste için bkz. İş Ortağı Merkezi kodları.

Yanıt örneği

HTTP/1.1 201 Created
Content-Length: 788
Content-Type: application/json; charset=utf-8
MS-CorrelationId: b593cbb7-b358-4b31-81fc-e60b9c277a7f
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"
    }
}