Share via


Een invoegtoepassing voor een abonnement kopen

Van toepassing op: Partnercentrum | Partnercentrum beheerd door 21Vianet | Partnercentrum voor Microsoft Cloud for US Government

Een invoegtoepassing aanschaffen voor een bestaand abonnement.

Vereisten

  • Referenties zoals beschreven in Partnercentrum-verificatie. Dit scenario ondersteunt verificatie met zowel zelfstandige app- als App+User-referenties.

  • Een klant-id (customer-tenant-id). Als u de id van de klant niet weet, kunt u deze opzoeken in partnercentrum door de werkruimte Klanten te selecteren, vervolgens de klant in de lijst met klanten en vervolgens Account. Zoek op de pagina Account van de klant naar de Microsoft-id in de sectie Klantaccountgegevens . De Microsoft-id is hetzelfde als de klant-id (customer-tenant-id).

  • Een abonnements-id. Dit is het bestaande abonnement waarvoor u een invoegtoepassingsaanbieding kunt aanschaffen.

  • Een aanbiedings-id die de invoegtoepassingsaanbieding identificeert die u wilt kopen.

Een invoegtoepassing aanschaffen via code

Wanneer u een invoegtoepassing voor een abonnement koopt, wordt de oorspronkelijke abonnementsorder bijgewerkt met de order voor de invoegtoepassing. In het volgende is customerId de klant-id, subscriptionId de abonnements-id en addOnOfferId de aanbiedings-id voor de invoegtoepassing.

Dit zijn de stappen:

  1. Een interface ophalen voor de bewerkingen voor het abonnement.

    var subscriptionOperations = partnerOperations.Customers.ById(customerId).Subscriptions.ById(subscriptionId);
    
  2. Gebruik deze interface om een abonnementsobject te instantiëren. Hiermee krijgt u de gegevens van het bovenliggende abonnement, inclusief de order-id.

    var parentSubscription = subscriptionOperations.Get();
    
  3. Een nieuw Order-object instantiëren. Deze orderinstantie wordt gebruikt om de oorspronkelijke bestelling bij te werken die is gebruikt om het abonnement aan te schaffen. Voeg een item met één regel toe aan de volgorde die de invoegtoepassing vertegenwoordigt.

    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. Werk de oorspronkelijke bestelling voor het abonnement bij met de nieuwe bestelling voor de invoegtoepassing.

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

C#

Als u een invoegtoepassing wilt aanschaffen, moet u eerst een interface voor de abonnementsbewerkingen verkrijgen door de methode IAggregatePartner.Customers.ById aan te roepen met de klant-id om de klant te identificeren en de methode Subscriptions.ById om het abonnement met de invoegtoepassingsaanbieding te identificeren. Gebruik deze interface om de abonnementsgegevens op te halen door Get aan te roepen. De abonnementsgegevens bevatten de order-id van de abonnementsorder. Dit is de order die moet worden bijgewerkt met de invoegtoepassing.

Maak vervolgens een instantie van een nieuw Order-object en vul dit in met één Exemplaar van LineItem dat de informatie bevat om de invoegtoepassing te identificeren, zoals wordt weergegeven in het volgende codefragment. U gebruikt dit nieuwe object om de abonnementsorder bij te werken met de invoegtoepassing. Roep ten slotte de Patch-methode aan om de abonnementsorder bij te werken, nadat u de klant eerst hebt geïdentificeerd met IAggregatePartner.Customers.ById en de order met 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);

Voorbeeld: Console-test-app. Project: Partner Center SDK-voorbeeldklasse: AddSubscriptionAddOn.cs

REST-aanvraag

Aanvraagsyntaxis

Methode Aanvraag-URI
PATCH {baseURL}/v1/customers/{customer-tenant-id}/orders/{order-id} HTTP/1.1

URI-parameters

Gebruik de volgende parameters om de klant en bestelling te identificeren.

Naam Type Vereist Beschrijving
klant-tenant-id Guid J De waarde is een met GUID opgemaakte klant-tenant-id die de klant identificeert.
order-id Guid J De order-id.

Aanvraagheaders

Zie Rest-headers van partnercentrum voor meer informatie.

Aanvraagbody

In de volgende tabellen worden de eigenschappen in de aanvraagtekst beschreven.

Volgorde

Naam Type Vereist Beschrijving
Id tekenreeks N De order-id.
ReferenceCustomerId tekenreeks J De klant-id.
LineItems matrix van objecten J Een matrix van OrderLineItem-objecten .
CreationDate tekenreeks N De datum waarop de order is gemaakt, in datum-/tijdnotatie.
Kenmerken object N Bevat "ObjectType": "Order".

OrderLineItem

Naam Type Vereist Beschrijving
LineItemNumber getal J Het regelitemnummer, beginnend met 0.
OfferId tekenreeks J De aanbiedings-id van de invoegtoepassing.
SubscriptionId tekenreeks N De id van het aangeschafte invoegtoepassingsabonnement.
ParentSubscriptionId tekenreeks J De id van het bovenliggende abonnement met de invoegtoepassingsaanbieding.
FriendlyName tekenreeks N De beschrijvende naam voor dit regelitem.
Aantal getal J Het aantal licenties.
PartnerIdOnRecord tekenreeks N De PartnerID van de partner van de record.
Kenmerken object N Bevat "ObjectType": "OrderLineItem".

Voorbeeld van aanvraag

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-antwoord

Als dit lukt, retourneert deze methode de bijgewerkte abonnementsvolgorde in de antwoordtekst.

Geslaagde respons- en foutcodes

Elk antwoord wordt geleverd met een HTTP-statuscode die een geslaagde of mislukte status aangeeft en aanvullende informatie over foutopsporing. Gebruik een hulpprogramma voor netwerktracering om deze code, het fouttype en aanvullende parameters te lezen. Zie Foutcodes partnercentrum voor de volledige lijst.

Voorbeeld van antwoord

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