Freigeben über


Erstellen eines Warenkorbs mit Add-ons zu einer Kundenbestellung

Sie können Add-ons über einen Warenkorb kaufen. Weitere Informationen zu den derzeit zum Verkauf verfügbaren Angeboten finden Sie unter Partnerangebote im Cloud Solution Provider-Programm.

Hinweis

Die neuen Commerce-Umgebungen für lizenzbasierte Dienste enthalten zahlreiche neue Funktionen und stehen allen Cloud Solution Providern (CSP) zur Verfügung. Weitere Informationen finden Sie in der Übersicht über neue Commerce-Erfahrungen.

Neue Commerce-Warenkörbe mit Add-ons unterscheiden sich von den traditionellen lizenzbasierten Angeboten. Neue Commerce-Add-Ons werden auf die gleiche Weise wie Basisangebote erworben, sie verwenden jedoch nicht die addonItems-Eigenschaft . Dieses Thema enthält Anforderungs- und Antwortbeispiele speziell für eine neue Commerce-basierte Produkt-SKU mit einer Add-on-Produkt-SKU.

Hinweis

Warenkörbe verfallen 7 Tage nach der ersten Erstellung.

Voraussetzungen

  • Anmeldeinformationen wie unter Partner Center-Authentifizierung beschrieben. Dieses Szenario unterstützt die Authentifizierung mit eigenständigen App- und App+Benutzeranmeldeinformationen.

  • Eine Kunden-ID (customer-tenant-id). Wenn Sie die Kunden-ID nicht kennen, können Sie sie im Partner Center nachschlagen, indem Sie den Arbeitsbereich Kunden auswählen, dann den Kunden aus der Kundenliste und anschließend Konto. Suchen Sie auf der Kontoseite des Kunden im Abschnitt Kundenkontoinfo nach der Microsoft-ID. Die Microsoft-ID ist identisch mit der Kunden-ID (customer-tenant-id).

C#

Ein Warenkorb ermöglicht den Kauf eines Basisangebots und der entsprechenden Add-ons. Gehen Sie folgendermaßen vor, um einen Warenkorb zu erstellen:

  1. Instanziieren Sie ein Cart-Objekt .

  2. Erstellen Sie eine Liste von CartLineItem-Objekten , die die Basisangebote darstellen, und weisen Sie die Liste der LineItems-Eigenschaft des Warenkorbs zu.

  3. Füllen Sie unter der Warenkorbposition jedes Basisangebots die Liste der AddOnItems mit anderen CartLineItem-Objekten auf, die jeweils ein Add-On darstellen, das für dieses Basisangebot erworben wird.

  4. Rufen Sie eine Schnittstelle für Warenkorbvorgänge ab, indem Sie mithilfe von IAggregatePartner die ICustomerCollection.ById-Methode mit der Kunden-ID aufrufen, um den Kunden zu identifizieren, und dann die Schnittstelle aus der Cart-Eigenschaft abrufen.

  5. Rufen Sie abschließend die Create-Methode oder die CreateAsync-Methode auf, um den Warenkorb zu erstellen.

C#-Beispiel

// IAggregatePartner partnerOperations;
// string customerId;

var cart = new Cart()
    {
        LineItems = new List<CartLineItem>()
        {
            new CartLineItem()
            {
                Id = 0,
                CatalogItemId = "A_base_offer_ID",
                FriendlyName = "Myofferpurchase",
                Quantity = 3,
                BillingCycle = BillingCycleType.Monthly,
                AddonItems = new List<CartLineItem>
                {
                    new CartLineItem
                    {
                        Id = 1,
                        CatalogItemId = "An_addon_item_ID",
                        BillingCycle = BillingCycleType.Monthly,
                        Quantity = 2,
                    },
                    new CartLineItem
                    {
                        Id = 2,
                        CatalogItemId = "Another_addon_item_ID",
                        BillingCycle = BillingCycleType.Monthly,
                        Quantity = 3
                    }
                }
            }
        }
    };

var createdCart = partnerOperations.Customers.ById(customerId).Carts.Create(cart);

Führen Sie die folgenden Schritte aus, um einen Warenkorb zu erstellen, der den Kauf von Add-ons für vorhandene Basisabonnements ermöglicht:

  1. Erstellen Sie einen Warenkorb mit einem neuen CartLineItem , das die Abonnement-ID in der ProvisioningContext-Eigenschaft mit dem Schlüssel "ParentSubscriptionId" enthält.

  2. Rufen Sie die Create-Methode oder die CreateAsync-Methode auf.

// IAggregatePartner partnerOperations;
// string selectedCustomerId;

var cart = new Cart()
    {
        LineItems = new List<CartLineItem>()
        {
            new CartLineItem()
            {
                Id = 0,
                CatalogItemId = "An_addon_item_ID",
                ProvisioningContext = new Dictionary<string, string>
                {
                    {
                        "ParentSubscriptionId", "An_existing_subscription_Id"
                    }
                },
                Quantity = 1,
                BillingCycle = BillingCycleType.Annual,
            }
        }
    };

var createdCart = partnerOperations.Customers.ById(selectedCustomerId).Carts.Create(cart);

REST-Anforderung

Anforderungssyntax

Methode Anforderungs-URI
BEREITSTELLEN {baseURL}/v1/customers/{customer-id}/Warenkörbe HTTP/1.1

URI-Parameter

Verwenden Sie zum Identifizieren des Kunden die folgenden Pfadparameter:

Name Typ Erforderlich BESCHREIBUNG
customer-id Schnur Ja Eine guid formatierte Kunden-ID, die den Kunden identifiziert.

Anforderungsheader

Weitere Informationen finden Sie unter Partner Center REST-Header.

Anfragekörper

In dieser Tabelle werden die Warenkorbeigenschaften im Anforderungstext beschrieben.

Eigentum Typ Erforderlich BESCHREIBUNG
id Schnur Nein Eine Warenkorb-ID, die bei erfolgreicher Erstellung des Warenkorbs angegeben wird.
creationTimeStamp Datum/Uhrzeit Nein Das Datum, an dem der Warenkorb erstellt wurde, im Datum-Zeit-Format. Wird nach erfolgreicher Erstellung des Warenkorbs angewendet.
lastModifiedTimeStamp Datum/Uhrzeit Nein Das Datum, an dem der Warenkorb zuletzt aktualisiert wurde, im Datums-/Uhrzeitformat. Wird nach erfolgreicher Erstellung des Warenkorbs angewendet.
expirationTimeStamp Datum/Uhrzeit Nein Das Datum, an dem der Warenkorb abläuft, im Datums-/Uhrzeitformat. Wird bei erfolgreicher Erstellung des Warenkorbs angewendet.
lastModifiedUser Schnur Nein Der Benutzer, der den Warenkorb zuletzt aktualisiert hat. Wird bei erfolgreicher Erstellung des Warenkorbs angewendet.
lineItems Objekt-Array Ja Ein Array von CartLineItem-Ressourcen .

In dieser Tabelle werden die CartLineItem-Eigenschaften im Anforderungstext beschrieben.

Eigentum Typ BESCHREIBUNG
id Schnur Eine eindeutige Kennung für eine Warenkorbposition. Wird bei erfolgreicher Erstellung des Warenkorbs angewendet.
catalogId (englisch) Schnur Der Bezeichner des Katalogelements.
benutzerfreundlicher Name Schnur Wahlfrei. Der Anzeigename für das element, das vom Partner definiert wurde, um mehrdeutig zu sein.
Menge INT Die Anzahl der Lizenzen oder Instanzen.
Währungscode Schnur Der Währungscode.
billingCycle Objekt Der Typ der Abrechnungszeitraum für den aktuellen Zeitraum festgelegt.
Teilnehmer Liste der Objektzeichenfolgenpaare Eine Sammlung von PartnerId on Record (PartnerID) für den Kauf.
provisioningContext Wörterbuch <Zeichenfolge, Zeichenfolge> Ein Kontext, der für die Bereitstellung des Angebots verwendet wird.
orderGroup Schnur Eine Gruppe, die angibt, welche Elemente zusammen platziert werden können.
addonItems Liste der CartLineItem-Objekte Eine Sammlung von Warenkorbwerbebuchungen für Add-Ons, die für das Basisabonnement erworben werden, das sich aus dem Kauf der übergeordneten Warenkorbwerbebuchung ergibt. Diese Eigenschaft gilt nur für herkömmliche lizenzbasierte, lizenzbasierte Warenkörbe für neue E-Commerce-Warenkörbe enthalten Add-Ons als basierte Angebote. Neue Commerce-Artikel verwenden diese addonItems-Eigenschaft nicht.
Fehler Objekt Wird angewendet, nachdem der Warenkorb erstellt wurde, wenn ein Fehler auftritt.

Beispiel (neues Basisabonnement) für traditionelles lizenzbasiertes Abonnement anfordern

Das folgende REST-Beispiel zeigt, wie Sie einen Warenkorb mit Add-On-Artikeln für ein neues Basisabonnement erstellen.

POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd

{
    "LineItems": [
        {
            "Id":0,
            "CatalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
            "FriendlyName":"Myofferpurchase",
            "Quantity":3,
            "BillingCycle":"monthly",
            "AddonItems": [
                {
                    "Id":1,
                    "CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
                    "Quantity":2,
                    "BillingCycle":"monthly"
                },
                {
                    "Id":2,
                    "CatalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
                    "Quantity":3,
                    "BillingCycle":"monthly"
                }
            ]
        }
    ]
}

Anforderungsbeispiel (neues Basis-Abonnement) für einen neuen Commerce-Warenkorb für ein Basisangebot mit Add-on

{
    "LineItems": [
        {
            "Id": 0,
            "CatalogItemId":"CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
            "Quantity": 20,
            "BillingCycle": "Monthly",
            "TermDuration": "P1M"
        },
        {
            "Id": 1,
            "CatalogItemId":"CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
            "Quantity": 20,
            "BillingCycle": "Monthly",
            "TermDuration": "P1M"
        }
    ]
}

Beispiel anfordern (vorhandenes Basisabonnement) für traditionelles lizenzbasiertes

Das folgende REST-Beispiel zeigt, wie Add-Ons an ein vorhandenes Basisabonnement angefügt werden. Dieses Beispiel ist nur für den traditionellen lizenzbasierten und nicht für den neuen Handel relevant.

POST https://api.partnercenter.microsoft.com/v1/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee

{
    "LineItems": [
        {
            "Id":0,
            "CatalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
            "Quantity":1,
            "BillingCycle":"annual",
            "ProvisioningContext":{"ParentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"}
        }
    ]
}

REST-Antwort

Bei erfolgreicher Ausführung gibt diese Methode die aufgefüllte Cart-Ressource im Antworttext zurück.

Antworterfolgs- und Fehlercodes

Jede Antwort enthält einen HTTP-Statuscode, der Erfolg oder Fehler und weitere Debuginformationen angibt. Verwenden Sie ein Netzwerkablaufverfolgungstool, um diesen Code, fehlertyp und weitere Parameter zu lesen. Die vollständige Liste findest du unter Fehlercodes.

Antwortbeispiel (neues Basisabonnement) für herkömmliche lizenzbasierte

HTTP/1.1 201 Created
Content-Length: 958
Content-Type: application/json
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: f931348a-6312-47d0-a8dd-31a386dedb8f
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:29:05 GMT

{
    "id":"dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
    "creationTimestamp":"2018-11-01T22:29:03.6900182Z",
    "lastModifiedTimestamp":"2018-11-01T22:29:03.6900182Z",
    "expirationTimestamp":"2018-11-01T22:44:05.0025799Z",
    "lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
    "status":"Active",
    "lineItems": [
        {
            "id":0,
            "catalogItemId":"91FD106F-4B2C-4938-95AC-F54F74E9A239",
            "friendlyName":"Myofferpurchase",
            "quantity":3,
            "currencyCode":"USD",
            "billingCycle":"monthly",
            "orderGroup":"OMS-0",
            "addonItems": [
                {
                    "id":1,
                    "catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
                    "quantity":2,
                    "currencyCode":"USD",
                    "billingCycle":"monthly",
                    "orderGroup":"OMS-0"
                },
                {
                    "id":2,
                    "catalogItemId":"43FCE491-76D1-4BCC-B709-8A288786DBAE",
                    "quantity":3,
                    "currencyCode":"USD",
                    "billingCycle":"monthly",
                    "orderGroup":"OMS-0"
                }
            ]
        }
],
    "links": {
        "self": {
            "uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/dbe2f8d4-f21d-43e2-9356-cff6387c4ba1",
            "method":"GET",
            "headers":[
            ]
        }
    },
    "attributes": {
        "objectType":"Cart"
    }
}

Antwortbeispiel (vorhandenes Basisabonnement) für herkömmliche lizenzbasierte

HTTP/1.1 201 Created
Content-Length: 707
Content-Type: application/json
MS-CorrelationId: bbbb1111-cc22-3333-44dd-555555eeeeee
MS-RequestId: 512a777a-5427-452d-9637-18421387e435
X-Locale: en-US,en-US
Date: Thu, 01 Nov 2018 22:46:18 GMT

{
    "id":"4d927e27-93d1-448b-abe5-819b66ecca22",
    "creationTimestamp":"2018-11-01T22:46:16.2996364Z",
    "lastModifiedTimestamp":"2018-11-01T22:46:16.2996364Z",
    "expirationTimestamp":"2018-11-01T23:01:18.7543264Z",
    "lastModifiedUser":"1824b7fc-2fac-4478-b177-66823c40ab75",
    "status":"Active",
    "lineItems": [
        {
            "id":0,
            "catalogItemId":"C94271D8-B431-4A25-A3C5-A57737A1C909",
            "quantity":1,
            "currencyCode":"USD",
            "billingCycle":"annual",
            "provisioningContext": {
                "parentSubscriptionId":"97555B61-7461-477A-A98C-9C76148783E4"
            },
            "orderGroup":"OMS-0"
        }
    ],
    "links": {
        "self": {
            "uri":"/customers/18ac2950-8ea9-4dfc-92a4-ff4d4cd57796/carts/4d927e27-93d1-448b-abe5-819b66ecca22",
            "method":"GET",
            "headers":[
            ]
        }
    },
    "attributes": {
        "objectType":"Cart"
    }
}

Antwortbeispiel für ein neues lizenzbasiertes Commerce-Basisangebot und Add-on

{
    "id": "ea37ea81-efaf-4113-9785-e1c266aea2ed",
    "creationTimestamp": "2022-02-10T16:04:22.4908435Z",
    "lastModifiedTimestamp": "2022-02-10T16:04:22.4908444Z",
    "expirationTimestamp": "2022-02-17T16:04:26.3085755Z",
    "lastModifiedUser": "a7155e79-65e3-42b0-a62a-a41297979782",
    "status": "Active",
    "lineItems": [
        {
            "id": 0,
            "catalogItemId": "CFQ7TTC0LFLX:0001:CFQ7TTC0LB30", - Base
            "quantity": 20,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1M",
            "promotionId": "39NFJQT1PHSN:0008:39NFJQT1Q5J0",
            "provisioningContext": {},
            "orderGroup": "0"
        },
        {
            "id": 1,
            "catalogItemId": "CFQ7TTC0HDJX:0001:CFQ7TTC0K806", - Add on
            "quantity": 20,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1M",
            "provisioningContext": {},
            "orderGroup": "0"
        }
    ],
    "links": {
        "self": {
            "uri": "/customers/3a15e1df-b095-41d4-9029-27a5974c2458/carts/ea37ea81-efaf-4113-9785-e1c266aea2ed",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Cart"
    }
}