Dela via


Köp ett tillägg till en prenumeration

Gäller för: Partnercenter | Partnercenter som drivs av 21Vianet | Partnercenter för Microsoft Cloud for US Government

Så här köper du ett tillägg till en befintlig prenumeration.

Förutsättningar

  • Autentiseringsuppgifter enligt beskrivningen i Partnercenter-autentisering. Det här scenariot stöder autentisering med både fristående App- och App+User-autentiseringsuppgifter.

  • Ett kund-ID (customer-tenant-id). Om du inte känner till kundens ID kan du söka efter det i Partnercenter genom att välja arbetsytan Kunder , sedan kunden i kundlistan och sedan Konto. På kundens kontosida letar du upp Microsoft-ID :t i avsnittet Kundkontoinformation . Microsoft-ID:t är samma som kund-ID:t (customer-tenant-id).

  • Ett prenumerations-ID. Det här är den befintliga prenumeration som du kan köpa ett tilläggserbjudande för.

  • Ett erbjudande-ID som identifierar det tilläggserbjudande som ska köpas.

Köpa ett tillägg via kod

När du köper ett tillägg till en prenumeration uppdaterar du den ursprungliga prenumerationsbeställningen med beställningen för tillägget. I följande är customerId kund-ID, subscriptionId är prenumerations-ID och addOnOfferId är erbjudande-ID för tillägget.

Här är stegen:

  1. Hämta ett gränssnitt till åtgärderna för prenumerationen.

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. Använd det gränssnittet för att instansiera ett prenumerationsobjekt. På så sätt får du information om den överordnade prenumerationen, inklusive order-ID:t.

    var parentSubscription = subscriptionOperations.Get();
    
  3. Instansiera ett nytt orderobjekt . Den här orderinstansen används för att uppdatera den ursprungliga beställningen som användes för att köpa prenumerationen. Lägg till ett enradsobjekt i den ordning som representerar tillägget.

    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. Uppdatera den ursprungliga beställningen för prenumerationen med den nya ordern för tillägget.

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

C#

Om du vill köpa ett tillägg börjar du med att hämta ett gränssnitt för prenumerationsåtgärderna genom att anropa metoden IAggregatePartner.Customers.ById med kund-ID:t för att identifiera kunden och metoden Subscriptions.ById för att identifiera prenumerationen som har tillägget. Använd det gränssnittet för att hämta prenumerationsinformationen genom att anropa Hämta. Prenumerationsinformationen innehåller beställnings-ID:t för prenumerationsbeställningen, vilket är den ordning som ska uppdateras med tillägget.

Instansiera sedan ett nytt Order-objekt och fyll i det med en enda LineItem-instans som innehåller informationen för att identifiera tillägget, enligt följande kodfragment. Du använder det här nya objektet för att uppdatera prenumerationsbeställningen med tillägget. Anropa slutligen korrigeringsmetoden för att uppdatera prenumerationsbeställningen, efter att först ha identifierat kunden med IAggregatePartner.Customers.ById och beställningen med Orders.ById.

// 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);

Exempel: Konsoltestapp. Projekt: SDK-exempelklass för Partnercenter: AddSubscriptionAddOn.cs

REST-begäran

Begärandesyntax

Metod URI för förfrågan
PATCH {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

URI-parametrar

Använd följande parametrar för att identifiera kunden och beställningen.

Namn Typ Obligatorisk Beskrivning
customer-tenant-id Guid Y Värdet är ett GUID-formaterat kund-klient-ID som identifierar kunden.
order-id Guid Y Orderidentifieraren.

Begärandehuvuden

Mer information finns i REST-huvuden i Partnercenter.

Begärandetext

Följande tabeller beskriver egenskaperna i begärandetexten.

Beställning

Namn Typ Obligatorisk Beskrivning
Id sträng N Order-ID:t.
ReferenceCustomerId sträng Y Kund-ID: t.
LineItems en matris med objekt Y En matris med OrderLineItem-objekt .
CreationDate sträng N Det datum då ordern skapades, i datum-tidsformat.
Attribut objekt N Innehåller "ObjectType": "Order".

OrderLineItem

Namn Typ Obligatorisk Beskrivning
LineItemNumber antal Y Radobjektnumret börjar med 0.
OfferId sträng Y Erbjudande-ID för tillägget.
SubscriptionId sträng N ID för den köpta tilläggsprenumerationen.
ParentSubscriptionId sträng Y ID:t för den överordnade prenumerationen som har tillägget.
FriendlyName sträng N Det egna namnet på det här radobjektet.
Kvantitet antal Y Antalet licenser.
PartnerIdOnRecord sträng N PartnerID för postens partner.
Attribut objekt N Innehåller "ObjectType": "OrderLineItem".

Exempel på begäran

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: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "FriendlyName": "Some friendly name",
            "Quantity": 2,
            "PartnerIdOnRecord": null,
            "Attributes": {
                "ObjectType": "OrderLineItem"
            }
        }
    ],
    "CreationDate": null,
    "Attributes": {
        "ObjectType": "Order"
    }
}

REST-svar

Om det lyckas returnerar den här metoden den uppdaterade prenumerationsordningen i svarstexten.

Svarsframgång och felkoder

Varje svar levereras med en HTTP-statuskod som anger lyckad eller misslyckad och ytterligare felsökningsinformation. Använd ett verktyg för nätverksspårning för att läsa den här koden, feltypen och ytterligare parametrar. Den fullständiga listan finns i Felkoder för Partnercenter.

Exempel på svar

HTTP/1.1 200 OK
Content-Length: 1135
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
            "friendlyName": "new offer purchase",
            "quantity": 5,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                    "method": "GET",
                    "headers": []
                }
            }
        }, {
            "lineItemNumber": 1,
            "offerId": "2828BE95-46BA-4F91-B2FD-0BEF192ECF60",
            "subscriptionId": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
            "friendlyName": "Some friendly name",
            "quantity": 2,
            "links": {
                "subscription": {
                    "uri": "/customers/4d3cf487-70f4-4e1e-9ff1-b2bfce8d9f04/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
                    "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"
    }
}