Bir abonelik için eklenti satın alma

Uygulama:İş Ortağı Merkezi | İş Ortağı Merkezi 21Vianet | İş Ortağı Merkezi için Microsoft Cloud for US Government

Mevcut bir aboneliğe eklenti satın alma.

Önkoşullar

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

  • Müşteri kimliği ( customer-tenant-id ). Müşterinin kimliğini bilmiyorsanız bu kimliği panoda İş Ortağı Merkezi. İş Ortağı Merkezi'den CSP'yi ve ardından Müşteriler'i seçin. Müşteri listesinden müşteriyi ve ardından Hesap'ı seçin. Müşterinin Hesap sayfasında Müşteri Hesabı Bilgileri bölümünde MicrosoftKimliği'ne bakın. Microsoft Kimliği, müşteri kimliği () ile customer-tenant-id aynıdır.

  • Abonelik kimliği. Bu, eklenti teklifi satın alınarak satın alınan mevcut aboneliktir.

  • Satın alınan eklenti teklifini tanımlayan teklif kimliği.

Kod aracılığıyla eklenti satın alma

Bir aboneliğe eklenti satın aldığınız zaman, özgün abonelik siparişlerini eklentinin siparişiyle güncelleştirebilirsiniz. Aşağıda customerId müşteri kimliği, subscriptionId abonelik kimliği, addOnOfferId ise eklentinin teklif kimliğidir.

Adımlar aşağıdaki gibidir:

  1. Aboneliğin işlemleri için bir arabirim alın.

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. Bir abonelik nesnesi örneği için bu arabirimi kullanın. Bu, sipariş kimliği de dahil olmak üzere üst abonelik ayrıntılarını size alır.

    var parentSubscription = subscriptionOperations.Get();
    
  3. Yeni bir Order nesnesi örneği oluşturma. Bu sipariş örneği, aboneliği satın almak için kullanılan özgün siparişi güncelleştirmek için kullanılır. Eklentiyi temsil eden sıraya tek satırlı bir öğe ekleyin.

    var orderToUpdate = new Order()
    {
        ReferenceCustomerId = customerId,
        LineItems = new List<OrderLineItem>()
        {
            new OrderLineItem()
            {
                LineItemNumber = 0,
                OfferId = addOnOfferId,
                FriendlyName = "Some friendly name",
                Quantity = 2,
                ParentSubscriptionId = subscriptionId
            }
        }
    };
    
  4. Aboneliğin özgün siparişlerini eklentinin yeni siparişiyle güncelleştirin.

    Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);
    

C#

Eklenti satın almak için, müşteriyi tanımlamak için müşteri kimliğiyle IAggregatePartner.Customers.ById yöntemini ve eklenti teklifinin olduğu aboneliği tanımlamak için Subscriptions.ById yöntemini çağırarak abonelik işlemlerine bir arabirim elde edin. Al'ı çağırarak abonelik ayrıntılarını almak için bu arabirimi kullanın. Abonelik ayrıntıları, abonelik siparişinin sipariş kimliğini içerir ve bu, eklentiyle güncelleştirilen sipariştir.

Ardından, yeni bir Order nesnesi örneği ekleyin ve aşağıdaki kod parçacığında gösterildiği gibi eklentiyi tanımlamak için gereken bilgileri içeren tek bir LineItem örneğiyle doldurmak. Abonelik siparişlerini eklentiyle güncelleştirmek için bu yeni nesneyi kullanabilirsiniz. Son olarak, önce IAggregatePartner.Customers.ById ile müşteriyi ve Orders.ByIdile siparişi tanımdikten sonra abonelik siparişini güncelleştirmek için Patch yöntemini arayın.

// IAggregatePartner partnerOperations;
// string customerId;
// string subscriptionId;
// string addOnOfferId;

// Get an interface to the operations for the subscription.
var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);

// Get the parent subscription details.
var parentSubscription = subscriptionOperations.Get();

// In order to buy an add-on subscription for this offer, we need to patch/update the order through which the base offer was purchased
// by creating an order object with a single line item which represents the add-on offer purchase.
var orderToUpdate = new Order()
{
    ReferenceCustomerId = customerId,
    LineItems = new List<OrderLineItem>()
    {
        new OrderLineItem()
        {
            LineItemNumber = 0,
            OfferId = addOnOfferId,
            FriendlyName = "Some friendly name",
            Quantity = 2,
            ParentSubscriptionId = subscriptionId
        }
    }
};

// Update the order to apply the add on purchase.
Order updatedOrder = partnerOperations.Customers.ById(customerId).Orders.ById(parentSubscription.OrderId).Patch(orderToUpdate);

Örnek:Konsol test uygulaması. Project:İş Ortağı Merkezi SDK'sı Samples Sınıfı:AddSubscriptionAddOn.cs

REST isteği

İstek söz dizimi

Yöntem İstek URI'si
YAMA {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

URI parametreleri

Müşteriyi ve siparişi belirlemek için aşağıdaki parametreleri kullanın.

Ad Tür Gerekli Açıklama
customer-tenant-id guid Y Değer, müşteriyi tanımlayan GUID biçimindeki customer-tenant-id değeridir.
order-id guid Y Sipariş tanımlayıcısı.

İstek üst bilgileri

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

İstek gövdesi

Aşağıdaki tablolar istek gövdesinin özelliklerini açıklar.

Sipariş

Ad Tür Gerekli Açıklama
Id string N Sipariş kimliği.
ReferenceCustomerId string Y Müşteri kimliği.
LineItems nesne dizisi Y OrderLineItem nesneleri dizisi.
Creationdate string N Siparişin tarih-saat biçiminde oluşturulma tarihi.
Öznitelikler object N "ObjectType": "Order" ifadesini içerir.

OrderLineItem

Ad Tür Gerekli Açıklama
LineItemNumber sayı Y 0 ile başlayan satır öğesi numarası.
OfferId string Y Eklentinin teklif kimliği.
kaynak grubundaki string N Satın alınan eklenti aboneliğinin kimliği.
ParentSubscriptionId string Y Eklenti teklifine sahip üst aboneliğin kimliği.
Friendlyname string N Bu satır öğesinin kolay adı.
Miktar sayı Y Lisans sayısı.
PartnerIdOnRecord string N Kayıt ortağının MPN kimliği.
Öznitelikler object N "ObjectType": "OrderLineItem" ifadesini içerir.

İstek örneği

PATCH https://api.partnercenter.microsoft.com/v1/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/CF3B0E37-BE0B-4CDD-B584-D1A97D98A922 HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CorrelationId: 60efdd24-17ef-4080-9b02-4fc315f916ff
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 414
Expect: 100-continue

{
    "Id": null,
    "ReferenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "LineItems": [{
            "LineItemNumber": 0,
            "OfferId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "SubscriptionId": null,
            "ParentSubscriptionId": "1C2B75C1-74A5-472A-A729-7F8CEFC477F9",
            "FriendlyName": "Some friendly name",
            "Quantity": 2,
            "PartnerIdOnRecord": null,
            "Attributes": {
                "ObjectType": "OrderLineItem"
            }
        }
    ],
    "CreationDate": null,
    "Attributes": {
        "ObjectType": "Order"
    }
}

REST yanıtı

Başarılı olursa, bu yöntem yanıt gövdesinde güncelleştirilmiş abonelik siparişlerini döndürür.

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 200 OK
Content-Length: 1135
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 60efdd24-17ef-4080-9b02-4fc315f916ff
MS-RequestId: 17a2658e-d2cc-439b-a2f0-2aefd9344fbc
MS-CV: WtFy3zI8V0u2lnT9.0
MS-ServerId: 020021921
Date: Wed, 25 Jan 2017 23:01:08 GMT

{
    "id": "cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
    "referenceCustomerId": "4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04",
    "billingCycle": "none",
    "lineItems": [{
            "lineItemNumber": 0,
            "offerId": "195416C1-3447-423A-B37B-EE59A99A19C4",
            "subscriptionId": "1C2B75C1-74A5-472A-A729-7F8CEFC477F9",
            "friendlyName": "new offer purchase",
            "quantity": 5,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/1C2B75C1-74A5-472A-A729-7F8CEFC477F9",
                    "method": "GET",
                    "headers": []
                }
            }
        }, {
            "lineItemNumber": 1,
            "offerId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "subscriptionId": "968BA1CF-C146-4ADF-A300-308DCF718EEE",
            "friendlyName": "Some friendly name",
            "quantity": 2,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/968BA1CF-C146-4ADF-A300-308DCF718EEE",
                    "method": "GET",
                    "headers": []
                }
            }
        }
    ],
    "creationDate": "2017-01-25T14:53:12.093-08:00",
    "links": {
        "self": {
            "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/orders/cf3b0e37-be0b-4cdd-b584-d1a97d98a922",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "etag": "eyJpZCI6ImNmM2IwZTM3LWJlMGItNGNkZC1iNTg0LWQxYTk3ZDk4YTkyMiIsInZlcnNpb24iOjJ9",
        "objectType": "Order"
    }
}