Aracılığıyla paylaş


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

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şi oluşturma yalnızca uygulanır:

  • İş Ortağı Merkezi

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

Ö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.

  • Bir müşteri kimliği (customer-tenant-id). Müşterinin kimliğini bilmiyorsanız, İş Ortağı Merkezi içinde, önce Müşteriler çalışma alanını, sonra müşteri listesinden müşteriyi ve ardından Hesap'ı seçerek arayabilirsiniz. Müşterinin Hesap sayfasında, Müşteri Hesabı Bilgileri bölümünde Microsoft Kimliği bulun. 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. Order nesnesinin örneğini oluşturun ve müşteriyi kaydetmek için ReferenceCustomerID özelliğini müşteri kimliğine 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ş kaleminiz 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 arabirimi 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ı. Project: İş Ortağı Merkezi SDK Örnekleri Sınıf: CreateOrder.cs

REST isteği

İstek söz dizimi

Yöntem İ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.

İsim Tür Gerekli Açıklama
müşteri-id dizgi Evet Müşteriyi tanımlayan GUID biçimli müşteri kimliği.

İstek başlıkları

Daha fazla bilgi için İş Ortağı Merkezi REST üst bilgileribölümüne bakın.

İstek gövdesi

Sipariş

Bu tabloda, istek gövdesindeki Sipariş özellikleri açıklanmaktadır.

Mülk Tür Gerekli Açıklama
id dizgi Hayır Siparişin başarıyla oluşturulmasından sonra sağlanan sipariş tanımlayıcısı.
referansMüşteriKimliği dizgi Hayır Müşteri tanımlayıcısı.
billingCycle string Hayır İş ortağının bu sipariş için faturalandırıldığı sıklığı gösterir. Desteklenen değerler, BillingCycleTypeiç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 kaynak dizisi Evet Müşterinin satın aldığı tekliflerin, miktar dahil olmak üzere listelenmiş listesi.
para birimi kodu dizgi Hayır Yalnızca okunabilir. Sipariş verirken kullanılan para birimi. Siparişin başarıyla oluşturulması üzerine uygulanır.
oluşturmaTarihi tarih ve zaman Hayır Yalnızca okuma. Siparişin oluşturulduğu tarih, tarih-saat biçimindedir. Siparişin başarıyla oluşturulması üzerine uygulanır.
durum dizgi Hayır Yalnızca okunabilir. Siparişin durumu. Desteklenen değerler, OrderStatusiçinde bulunan üye adlarıdır.
Bağlantı SiparişBağlantıları Hayır Sipariş'e karşılık gelen kaynak bağlantıları.
Öznitelik ResourceAttributes Hayır Sipariş'e karşılık gelen meta veri öznitelikleri.
Ortak Kayıt Beyanı Kabul Edildi Boolean Evet Kanıtlamanın tamamlanmasını onaylar

Sipariş Satır Kalemi

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

Not

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

İsim Tür Gerekli Açıklama
satırKalemiNumarası Int Evet Koleksiyondaki her satır öğesi, 0'dan 1 sayısına kadar sayarak benzersiz bir satır numarası alır.
teklifID dizgi Evet Teklif tanımlayıcısı. Teklifin uygun segment için geçerli olduğundan emin olmalısınız.
abonelikKimliği dizgi Hayır Abonelik tanımlayıcısı.
ebeveynAbonelikKimliği dizgi Hayır Opsiyonel. Bir eklenti teklifindeki üst aboneliğin kimliği. Yalnızca PATCH için geçerlidir.
friendlyName dizgi Hayır Opsiyonel. Belirsizliği gidermek için iş ortağı tarafından tanımlanan aboneliğin açıklayıcı adı.
miktar Int Evet Lisans tabanlı abonelik için lisans sayısı.
özelDönemBitişTarihi TarihSaat Hayır Yeni aboneliğin ilk faturalama döneminin bitiş tarihi.
partnerIdOnRecord dizgi Hayır Dolaylı bir sağlayıcı dolaylı 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.
sağlama bağlamı Sözlük<dizesi, dize> Hayır Katalogdaki bazı öğeler için tedarik için bilgiler gereklidir. SKU'daki provisioningVariables özelliği, katalogdaki belirli öğeler için hangi özelliklerin gerekli olduğunu gösterir.
Bağlantı OrderLineItemLinks Hayır Sadece okunur. Sipariş satırı öğesine karşılık gelen kaynak bağlantıları.
Öznitelik ResourceAttributes Hayır OrderLineItem öğesine karşılık gelen meta veri öznitelikleri.
yenilenir Nesne dizisi Hayır RenewsTo kaynakları dizisi.
Teyit Kabul Edildi Bool Hayır Teklif veya SKU koşullarına onayı belirtir. Yalnızca SkuAttestationProperties veya OfferAttestationProperties enforceAttestation değerinin True olduğu teklifler veya sku'lar için gereklidir.
Kayıtlı Ek Ortak Kimlikleri Dize Hayır Dolaylı bir sağlayıcı dolaylı bayi adına bir sipariş verildiğinde, bu alanı yalnızca Ek dolaylı bayinin İş Ortağı Kimliği ile doldurun (asla dolaylı sağlayıcının kimliği kullanılmaz). 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.
Yenilenir

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

Mülk Tür Gerekli Açıklama
dönem süresi dizgi Hayır Yenileme döneminin süresinin ISO 8601 gösterimi. Desteklenen geçerli değerler P1M (1 ay) ve P1Y (1 yıl).

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