Aracılığıyla paylaş


İş Ortağı Merkezi API'lerini kullanarak müşteri için sipariş oluşturma

Şunlar için geçerlidir: İş Ortağı Merkezi | 21Vianet tarafından işletilen İş Ortağı Merkezi | ABD Kamu için Microsoft Bulut İş Ortağı Merkezi

Azure ayrılmış VM örneği ürünleri için sipariş oluşturma yalnızca şunlar için geçerlidir:

  • İş Ortağı Merkezi

Şu anda satışa sunulanlar hakkında bilgi için bkz. Bulut Çözümü Sağlayıcısı programında iş ortağı teklifleri.

Önkoşullar

  • İş Ortağı Merkezi kimlik doğrulamasında açıklandığı gibi kimlik bilgileri. Bu senaryo hem tek başına Uygulama hem de Uygulama+Kullanıcı kimlik bilgileriyle kimlik doğrulamayı destekler.

  • Müşteri kimliği (customer-tenant-id). Müşterinin kimliğini bilmiyorsanız, İş Ortağı Merkezi'nde Müşteriler çalışma alanını, ardından müşteri listesinden müşteriyi ve ardından Hesap'ı seçerek bunu arayabilirsiniz. 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ğiyle (customer-tenant-id) aynıdır.

  • Teklif tanımlayıcısı.

C#

Müşteriye sipariş oluşturmak için:

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

  2. OrderLineItem nesnelerinin listesini oluşturun ve listeyi siparişin LineItems özelliğine atayın. Her sipariş satırı öğesi, bir teklif için satın alma bilgilerini içerir. En az bir sipariş satırı öğeniz olmalıdır.

  3. İşlemleri sıralamak için bir arabirim edinin. İlk olarak, müşteriyi tanımlamak için müşteri kimliğiyle IAggregatePartner.Customers.ById yöntemini çağırın. Ardından Orders özelliğinden arabirimini alın.

  4. Create veya CreateAsync yöntemini çağırın ve Order nesnesini geçirin.

  5. Kanıtlamayı tamamlamak ve ek kurumsal bayiler eklemek için aşağıdaki İstek ve Yanıt Örnekleri örneğine 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": "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);

Örnek: Konsol test uygulaması. Proje: İş Ortağı Merkezi SDK Örnekleri Sınıfı: CreateOrder.cs

REST isteği

İstek söz dizimi

Metot İstek URI'si
POST {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 Zorunlu Açıklama
customer-id string Yes Müşteriyi tanımlayan GUID biçimli müşteri kimliği.

İstek üst bilgileri

Daha fazla bilgi için bkz . İş Ortağı Merkezi REST üst bilgileri.

Request body

Sipariş

Bu tabloda istek gövdesindeki Order özellikleri açıklanmaktadır.

Özellik Type Zorunlu Açıklama
id dize Hayır Siparişin başarıyla oluşturulmasından sonra sağlanan sipariş tanımlayıcısı.
referenceCustomerId Dize Hayır Müşteri tanımlayıcısı.
billingCycle Dize Hayır İş ortağının bu sipariş için faturalandırıldığı sıklığı gösterir. Desteklenen değerler BillingCycleType içinde bulunan üye adlarıdır. Sipariş oluşturma sırasında varsayılan değer "Aylık" veya "OneTime" olur. Bu alan, siparişin başarıyla oluşturulmasından sonra uygulanır.
lineItems OrderLineItem kaynakları dizisi Yes Müşterinin satın aldığı tekliflerin, miktar dahil olmak üzere listelenmiş listesi.
currencyCode Dize Hayır Salt okunur. Sipariş verirken kullanılan para birimi. Siparişin başarıyla oluşturulması üzerine uygulanır.
creationDate datetime Hayır Salt okunur. Siparişin oluşturulduğu tarih, tarih-saat biçimindedir. Siparişin başarıyla oluşturulması üzerine uygulanır.
durum Dize Hayır Salt okunur. Siparişin durumu. Desteklenen değerler OrderStatus'ta bulunan üye adlarıdır.
bağlantılar OrderLinks Hayır Sipariş'e karşılık gelen kaynak bağlantıları.
öznitelikler ResourceAttributes Hayır Order'a karşılık gelen meta veri öznitelikleri.
PartnerOnRecordAttestationAccepted Boolean Yes Kanıtlamanın tamamlanmasını onaylar

OrderLineItem

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

Not

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

Adı Tür Zorunlu Açıklama
lineItemNumber int Yes Koleksiyondaki her satır öğesi, 0'dan 1 sayısına kadar sayarak benzersiz bir satır numarası alır.
offerId string Yes Teklif tanımlayıcısı. Teklifin kullanılabilirliğini doğru segment için sağladığından emin olun.
subscriptionId Dize Hayır Abonelik tanımlayıcısı.
parentSubscriptionId Dize Hayır isteğe bağlı. Bir eklenti teklifindeki üst aboneliğin kimliği. Yalnızca PATCH için geçerlidir.
friendlyName Dize Hayır isteğe bağlı. Belirsizliğe yardımcı olmak için iş ortağı tarafından tanımlanan aboneliğin kolay adı.
quantity int Yes Lisans tabanlı abonelik için lisans sayısı.
customTermEndDate DateTime Hayır Yeni aboneliğin ilk faturalama döneminin bitiş tarihi.
partnerIdOnRecord Dize Hayır Dolaylı bir sağlayıcı dolaylı kurumsal bayi adına bir sipariş verildiğinde, bu alanı yalnızca dolaylı satıcının PartnerID değeriyle doldurun (hiçbir zaman dolaylı sağlayıcının kimliği değildir). Bu, teşviklerin düzgün hesaplanmasını sağlar.
provisioningContext Sözlük<dizesi, dize> Hayır 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ılar OrderLineItemLinks Hayır Salt okunur. Sipariş satırı öğesine karşılık gelen kaynak bağlantıları.
öznitelikler ResourceAttributes Hayır OrderLineItem öğesine karşılık gelen meta veri öznitelikleri.
renewsTo Nesneler dizisi Hayır RenewsTo kaynakları dizisi.
AttestationAccepted ikili Hayır Teklif veya sku koşullarının sözleşmesini gösterir. Yalnızca SkuAttestationProperties veya OfferAttestationProperties enforceAttestation değerinin True olduğu teklifler veya sku'lar için gereklidir.
AdditionalPartnerIdsOnRecord String Hayır Dolaylı bir sağlayıcı dolaylı kurumsal bayi adına bir sipariş verildiğinde, bu alanı yalnızca Ek dolaylı satıcının İş Ortağı Kimliği ile doldurun (hiçbir zaman dolaylı sağlayıcının kimliği değildir). 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/bölgeleri içinde işlem gören geçerli iş ortaklarıdır.
Yenilenenler

Bu tabloda istek gövdesindeki RenewsTo özellikleri açıklanmaktadır.

Özellik Type Zorunlu Açıklama
termDuration Dize Hayır Yenileme döneminin 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": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
        "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 Order kaynağı döndürür.

Siparişte bir veya daha fazla abonelik varsa, ilgili abonelik kimliği değerleri yalnızca ILGILI abonelikler API çağrısı sırasında sağlanmışsa REST yanıtında görünür. Sağlama abonelikleri zaman uyumsuz olarak gerçekleşir ve bu nedenle abonelik kimliği değerleri Sipariş Oluştur çağrısının REST yanıtında her zaman görünür olmayabilir. Ancak, ilgili abonelikler sağlandıktan sonra abonelik kimliği değerlerine Sipariş Al ve Kimlik API'sine göre Sipariş Al çağrıları aracılığıyla erişilebilir.

Yanıt başarısı ve hata kodları

Her yanıt, başarılı veya başarısız olduğunu belirten 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 hata kodları.

Yanıt örneği

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