Een winkelwagen maken met een klantorder

Van toepassing op: Partnercentrum | Partnercentrum beheerd door 21Vianet | Partnercentrum voor Microsoft Cloud voor de Amerikaanse overheid

U kunt een bestelling voor een klant toevoegen in een winkelwagen. Zie Partneraanbiedingen in het Cloud Solution Provider-programma voor meer informatie over wat momenteel beschikbaar is om te verkopen.

Notitie

Winkelwagens verlopen 7 dagen na de eerste aanmaak.

Vereisten

  • Referenties zoals beschreven in verificatie in partnercentrum. Dit scenario ondersteunt verificatie met zowel zelfstandige app- als app+gebruikersreferenties.

  • Een klant-id (customer-tenant-id). Als u de klant-id niet weet, kunt u deze opzoeken in het 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).

C#

Een bestelling voor een klant maken:

  1. Instantieer een Cart-object.

  2. Maak een lijst met CartLineItem-objecten en wijs de lijst toe aan de eigenschap LineItems van de winkelwagen. Elk winkelwagenitem bevat de aankoopgegevens voor één product. U moet ten minste één winkelwagen regelitem hebben.

  3. Verkrijg een interface voor winkelwagenbewerkingen door de methode IAggregatePartner.Customers.ById aan te roepen met de klant-id om de klant te identificeren en vervolgens de interface op te halen uit de eigenschap Winkelwagen .

  4. Roep de methode Create of CreateAsync aan om de winkelwagen te maken.

  5. Als u attestation wilt voltooien en andere resellers wilt opnemen, raadpleegt u de volgende voorbeeldvoorbeelden voor aanvragen en antwoorden:

Voorbeeld van aanvraag


{
    "PartnerOnRecordAttestationAccepted":true,     "lineItems": [
        {
            "id": 0,
            "catalogItemId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
            "quantity": 1,
            "billingCycle": "monthly",
            "termDuration": "P1M",
            "renewsTo": null,
            "provisioningContext": {},
            "customTermEndDate": "2022-02-19T00:00:00Z"
        },
        {
            "id": 1,
            "catalogItemId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
            "quantity": 2,
            "billingCycle": "monthly",
            "termDuration": "P1Y",
            "participants": [
                {
                    "key": "transaction_reseller",
                    "value": "5357564"
                },
                 {
                    "key": "additional_transaction_reseller",                     
                    "value": "517285"
                },
                 {
                    "key": "additional_transaction_reseller", 
                    "value": "5357563"
                }
            ]
        }
    ]
}


Voorbeeld van antwoord


{
    "id": "3e22b548-647d-4223-9675-1fcb6cb57665",
    "creationTimestamp": "2021-08-18T17:29:52.3517492Z",
    "lastModifiedTimestamp": "2021-08-18T17:29:52.3517553Z",
    "expirationTimestamp": "2021-08-25T17:30:11.2406416Z",
    "lastModifiedUser": "da62a0dc-35e9-4601-b48e-a047bd3ec7c1",
    "status": "Active",
    "lineItems": [
        {
            "id": 0,
            "catalogItemId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
            "quantity": 1,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1M",
	    "customTermEndDate": "2022-02-19T00:00:00Z";
            "provisioningContext": {},
            "orderGroup": "0"
        },
        {
            "id": 1,
            "catalogItemId": "CFQ7TTC0LFLS:0002:CFQ7TTC0KDLJ",
            "quantity": 2,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1Y",
            "participants": [
                {
                    "key": "transaction_reseller",
                    "value": "5357564"
                },
                {
                    "key": "additional_transaction_reseller", 
                    "value": "517285"
                },
                {
                    "key": "additional_transaction_reseller", 
                    "value": "5357563"
                }
            ],
            "provisioningContext": {},
            "orderGroup": "0"
        }
    ],
    "links": {
        "self": {
            "uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/carts/3e22b548-647d-4223-9675-1fcb6cb57665",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Cart"
    }
}


C#-voorbeeld

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

var cart = new Cart()
{
    LineItems = new List<CartLineItem>()
    {
        new CartLineItem()
        {
      /* Microsoft Azure Subscription */
            Id = 0,
            CatalogItemId = "MS-AZR-0145P",
            Quantity = 1,
            BillingCycle = BillingCycleType.Monthly,
            TermDuration = "P1Y"
        },
        new CartLineItem()
        {
      /* Azure Reserved Instance */
            Id = 1,
            CatalogItemId = "DZH318Z0BQ36:004G:DZH318Z08C0S",
            Quantity = 1,
            BillingCycle = BillingCycleType.OneTime,
            TermDuration = "P1Y",
            ProvisioningContext = new Dictionary<string, string>
            {
                { "subscriptionId", subscriptionId },
                { "scope", "shared" }
            }
        },
        new CartLineItem()
        {
      /* Azure Reserved Instance */
            Id = 2,
            CatalogItemId = "DZH318Z0BQ36:004J:DZH318Z08B8X",
            Quantity = 1,
            BillingCycle = BillingCycleType.OneTime,
            TermDuration = "P3Y",
            ProvisioningContext = new Dictionary<string, string>
            {
                { "subscriptionId", subscriptionId },
                { "scope", "shared" }
            }
        },
        new CartLineItem()
        {
      /* Perpetual Software */
            Id = 3,
            CatalogItemId = "DG7GMGF0DWM3:0002:DG7GMGF0DT1M",
            Quantity = 1,
            BillingCycle = BillingCycleType.OneTime
        },
        new CartLineItem()
        {
      /* SaaS */
            Id = 4,
            CatalogItemId = "DZH318Z0BXWC:0002:DZH318Z0BMRV",
            Quantity = 1,
            BillingCycle = BillingCycleType.Monthly,
            TermDuration = "P1M"
        },
        new CartLineItem()
        {
      /* SaaS Free Trial */
            Id = 5,
            CatalogItemId = "DZH318Z0C0WF:0001:DZH318Z0BP69",
            Quantity = 10,
            BillingCycle = BillingCycleType.None,
            TermDuration = "P1M",
            RenewsTo = new RenewsTo
            {
                TermDuration = "P1Y"
            }
        }
    }
};

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

Java

De Partner Center Java SDK kan worden gebruikt voor het beheren van Partnercentrum-resources. Het is een opensource-project dat wordt onderhouden door de partnercommunity en niet officieel wordt ondersteund door Microsoft. U kunt hulp krijgen van de community of een probleem openen op GitHub als u een probleem ondervindt.

Een bestelling voor een klant maken:

  1. Instantieer een Cart-object.

  2. Maak een lijst met CartLineItem-objecten en wijs de lijst toe aan de regelitems van de winkelwagen. Elk winkelwagenitem bevat de aankoopgegevens voor één product. U moet ten minste één winkelwagen regelitem hebben.

  3. Haal een interface op voor winkelwagenbewerkingen door de functie IAggregatePartner.getCustomers().byId aan te roepen met de klant-id om de klant te identificeren en vervolgens de interface op te halen van de getCart-functie .

  4. Roep de functie create aan om de winkelwagen te maken.

Java-voorbeeld

// IAggregatePartner partnerOperations;
// String customerId;
// String subscriptionId;
// String catalogItemId;

CartLineItem lineItem = new CartLineItem();

lineItem.setBillingCycle(BillingCycleType.OneTime);
lineItem.setCatalogItemId(catalogItemId);
lineItem.setFriendlyName("Sample RI Purchase");
lineItem.setQuantity(1);

Map<String, String> provisioningContext = new HashMap<String,String>();

provisioningContext.put("duration", "3Years");
provisioningContext.put("scope", "shared");
provisioningContext.put("subscriptionId", subscriptionId);

lineItem.setProvisioningContext(provisioningContext);

List<CartLineItem> lineItemList = new ArrayList<CartLineItem>();
lineItemList.add(lineItem);

Cart cart = new Cart();
cart.setLineItems(lineItemList);

Cart cartCreated = partnerOperations.getCustomers().byId(customerId).getCarts().create(cart);

Powershell

De PowerShell-module partnercentrum kan worden gebruikt voor het beheren van Partnercentrum-resources. Het is een opensource-project dat wordt onderhouden door de partnercommunity en niet officieel wordt ondersteund door Microsoft. U kunt hulp krijgen van de community of een probleem openen op GitHub als u een probleem ondervindt.

Een bestelling voor een klant maken:

  1. Instantieer een Cart-object.

  2. Maak een lijst met CartLineItem-objecten en wijs de lijst toe aan de regelitems van de winkelwagen. Elk winkelwagenitem bevat de aankoopgegevens voor één product. U moet ten minste één winkelwagen regelitem hebben.

  3. Voer de opdracht New-PartnerCustomerCart uit om de winkelwagen te maken.

# $customerId
# $subscriptionId
# $catalogItemId

$lineItem = New-Object -TypeName Microsoft.Store.PartnerCenter.PowerShell.Models.Carts.PSCartLineItem

$lineItem.BillingCycle = 'OneTime'
$lineItem.CatalogItemId = $catalogItemId
$lineItem.FriendlyName = 'Sample RI Purchase'
$lineItem.ProvisioningContext.Add('duration', '1Year')
$lineItem.ProvisioningContext.Add('scope', 'shared')
$lineItem.ProvisioningContext.Add('subscriptionId', $subsciptionId)
$lineItem.Quantity = 10

New-PartnerCustomerCart -CustomerId $customerId -LineItems $lineItem

REST-aanvraag

Aanvraagsyntaxis

Methode Aanvraag-URI
POST {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1

URI-parameter

Gebruik de volgende padparameter om de klant te identificeren.

Name Type Vereist Beschrijving
klant-id tekenreeks Ja Een door DE GUID opgemaakte klant-id die de klant identificeert.

Aanvraagheaders

Zie Rest-headers in Partnercentrum voor meer informatie.

Aanvraagtekst

In deze tabel worden de eigenschappen van winkelwagen in de aanvraagbody beschreven.

Eigenschap Type Vereist Beschrijving
id tekenreeks Nee Een winkelwagen-id die wordt opgegeven bij het maken van de winkelwagen.
creationTimeStamp Datum en tijd Nee De datum waarop de winkelwagen is gemaakt, in datum-tijdnotatie. Toegepast bij het maken van de winkelwagen.
lastModifiedTimeStamp Datum en tijd Nee De datum waarop de winkelwagen het laatst is bijgewerkt, in datum-tijdnotatie. Toegepast bij het maken van de winkelwagen.
expirationTimeStamp Datum en tijd Nee De datum waarop de winkelwagen verloopt, in datum-tijdnotatie. Toegepast bij het maken van een winkelwagen.
lastModifiedUser tekenreeks Nee De gebruiker die de winkelwagen voor het laatst heeft bijgewerkt. Toegepast bij het maken van een winkelwagen.
lineItems Matrix van objecten Ja Een matrix van CartLineItem-resources .
PartnerOnRecordAttestationAccepted Booleaanse waarde Ja Bevestigt voltooiing van Attestation

In deze tabel worden de eigenschappen cartLineItem in de aanvraagtekst beschreven.

Eigenschap Type Vereist Beschrijving
id tekenreeks Nee Een unieke id voor een winkelwagenregelitem. Toegepast bij het maken van een winkelwagen.
catalogId tekenreeks Ja De id van het catalogusitem. Zorg ervoor dat het catalogusitem beschikbaar is voor het juiste segment.
Friendlyname tekenreeks Nee Optioneel. De beschrijvende naam voor het item dat door de partner is gedefinieerd om te helpen ondubbelzinnig te zijn.
promotionId tekenreeks Nee Optioneel. De meeste NCE-promoties worden automatisch toegepast, maar voor optionele promoties (zoals Bridge to the Cloud 2) om toe te passen op een winkelwagenlijnitem, moeten partners de promotie-id opnemen in de add to cart-aanvraag.
quantity int Ja Het aantal licenties of exemplaren.
currencyCode tekenreeks Nee De valutacode.
billingCycle Object Ja Het type factureringscyclus dat is ingesteld voor de huidige periode.
customTermEndDate Datum en tijd Nee De einddatum van een bestaand abonnement waarvoor u het nieuwe abonnement wilt bepalen.
Deelnemers Lijst met objectreeksparen Nee Een verzameling PartnerId on Record (PartnerID) bij de aankoop.
provisioningContext Woordenlijsttekenreeks<, tekenreeks> Nee Informatie die is vereist voor het inrichten van bepaalde items in de catalogus. De eigenschap provisioningVariables in een SKU geeft aan welke eigenschappen vereist zijn voor specifieke items in de catalogus.
orderGroup tekenreeks Nee Een groep om aan te geven welke items samen kunnen worden geplaatst.
error Object Nee Toegepast nadat de winkelwagen is gemaakt als er een fout optreedt.
renewsTo Matrix van objecten Nee Een matrix van RenewsTo-resources .
AttestationAccepted Booleaans Nee Geeft de overeenkomst aan om voorwaarden aan te bieden of sKU aan te bieden. Alleen vereist voor aanbiedingen of SkuAttestationProperties of OfferAttestationProperties enforceAttestation is True.
transaction_reseller String Nee Wanneer een indirecte provider namens een indirecte reseller een order plaatst, vult u dit veld alleen in met de PartnerID van de indirecte reseller (nooit de id van de indirecte provider). Dit zorgt voor een goede boekhouding voor incentives.
additional_transaction_reseller String Nee Wanneer een indirecte provider een order plaatst namens een indirecte reseller, vult u dit veld in met de PartnerID van de aanvullende indirecte reseller (nooit de id van de indirecte provider). Incentives zijn niet van toepassing op deze extra resellers. Er kunnen maximaal 5 indirecte resellers worden ingevoerd. Dit zijn alleen van toepassing zijnde partners die handelen binnen EU/EVA-landen/regio's.

In deze tabel worden de eigenschappen RenewsTo in de aanvraagbody beschreven.

Eigenschap Type Vereist Beschrijving
termDuration tekenreeks Nee Een ISO 8601-weergave van de duur van de verlengingstermijn. De huidige ondersteunde waarden zijn P1M (1 maand) en P1Y (1 jaar).

Aanvraagvoorbeeld

POST /v1/customers/d6bf25b7-e0a8-4f2d-a31b-97b55cfc774d/carts HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
MS-CorrelationId: 0e93c70c-977a-4a88-9580-7cf084c73286
X-Locale: en-US
MS-PartnerCenter-Client: Partner Center .NET SDK
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 496
Expect: 100-continue

{
  "lineItems": [
    {
    /* Microsoft Azure Subscription */
      "id": 0,
      "catalogItemId": "MS-AZR-0145P",
      "quantity": 1,
      "billingCycle": "monthly",
      "termDuration": "P1Y"
    },
    {
    /* Azure Reserved Instance */
      "id": 1,
      "catalogItemId": "DZH318Z0BQ36:004G:DZH318Z08C0S",
      "quantity": 1,
      "billingCycle": "one_time",
      "termDuration": "P1Y",
      "provisioningContext": {
        "subscriptionId": "1C461A25-F729-4FA5-AADB-280947DD05E8",
        "scope": "shared"
      }
    },
    {
    /* Azure Reserved Instance */
      "id": 2,
      "catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
      "quantity": 1,
      "billingCycle": "one_time",
      "termDuration": "P3Y",
      "provisioningContext": {
        "subscriptionId": "1C461A25-F729-4FA5-AADB-280947DD05E8",
        "scope": "single"
      }
    },
    {
    /* Perpetual Software */
      "id": 3,
      "catalogItemId": "DG7GMGF0DWTL:0001:DG7GMGF0DSFM",
      "quantity": 1,
      "billingCycle": "one_time"
    },
    {
    /* SaaS */
      "id": 4,
      "catalogItemId": "DZH318Z0BXWC:0002:DZH318Z0BMRV",
      "quantity": 1,
      "billingCycle": "monthly",
      "termDuration": "P1M"
    },
  {
    /* SaaS Free Trial */
       "id": 5,
       "catalogItemId": "DZH318Z0C0WF:0001:DZH318Z0BP69",
       "quantity": 10,
       "billingCycle": "none",
       "termDuration": "P1M",
       "renewsTo": {
         "termDuration": "P1Y"
       }
    }
  ]
}

Belangrijk

Vanaf juni 2023 wordt de nieuwste Versie van Partner Center .NET SDK 3.4.0 gearchiveerd. U kunt de SDK-release downloaden van GitHub, samen met een leesmij-bestand dat nuttige informatie bevat.

Partners worden aangemoedigd om de REST API's van partnercentrum te blijven gebruiken.

REST-antwoord

Als dit lukt, retourneert deze methode de gevulde winkelwagenresource in de hoofdtekst van het antwoord.

Geslaagde antwoorden en foutcodes

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

Responsvoorbeeld

HTTP/1.1 201 Created
Content-Length: 764
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 0e93c70c-977a-4a88-9580-7cf084c73286
MS-RequestId: 4fa6dad6-a89f-4875-8247-8294a10ae1cf
X-Locale: en-US,en-US
MS-CV: sF/wRa2ih0CzbABc.0
MS-ServerId: 000001
Date: Thu, 15 Mar 2018 17:15:01 GMT
{
  "id": "3655b1a0-b1c9-4268-9824-577fdbc4d0be",
  "creationTimestamp": "2019-01-16T00:45:41.6062996Z",
  "lastModifiedTimestamp": "2019-01-16T00:45:41.6062996Z",
  "expirationTimestamp": "2019-01-16T01:00:54.4188497Z",
  "lastModifiedUser": "1824b7fc-2fac-4478-b177-66823c40ab75",
  "status": "Active",
  "lineItems": [
    {
      "id": 0,
      "catalogItemId": "MS-AZR-0145P",
      "quantity": 1,
      "currencyCode": "USD",
      "billingCycle": "monthly",
      "termDuration": "P1Y",
      "orderGroup": "OMS-0"
    },
    {
      "id": 1,
      "catalogItemId": "DZH318Z0BQ36:004G:DZH318Z08C0S",
      "quantity": 1,
      "currencyCode": "USD",
      "billingCycle": "one_time",
      "termDuration": "P1Y",
      "provisioningContext": {
        "subscriptionId": "1C461A25-F729-4FA5-AADB-280947DD05E8",
        "scope": "shared"
      },
      "orderGroup": "0"
    },
    {
      "id": 2,
      "catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
      "quantity": 1,
      "currencyCode": "USD",
      "billingCycle": "one_time",
      "termDuration": "P3Y",
      "provisioningContext": {
        "subscriptionId": "1C461A25-F729-4FA5-AADB-280947DD05E8",
        "scope": "shared"
      },
      "orderGroup": "0"
    },
    {
      "id": 3,
      "catalogItemId": "DG7GMGF0DWM3:0002:DG7GMGF0DT1M",
      "quantity": 1,
      "currencyCode": "USD",
      "billingCycle": "one_time",
      "orderGroup": "0"
    },
    {
      "id": 4,
      "catalogItemId": "DZH318Z0BXWC:0002:DZH318Z0BMRV",
      "quantity": 1,
      "currencyCode": "USD",
      "billingCycle": "monthly",
      "termDuration": "P1M",
      "orderGroup": "1"
    },
  {
      "id": 5,
      "catalogItemId": "DZH318Z0C0WF:0001:DZH318Z0BP69",
      "quantity": 10,
      "currencyCode": "USD",
      "billingCycle": "none",
      "termDuration": "P1M",
      "renewsTo": {
  "termDuration": "P1Y"
      },
    "orderGroup": "2"
    }
  ],
  "links": {
    "self": {
      "uri": "/customers/28045616-f6b9-462f-9701-0d89b5e65c44/carts/3655b1a0-b1c9-4268-9824-577fdbc4d0be",
      "method": "GET",
      "headers": []
    }
  },
  "attributes": {
    "objectType": "Cart"
  }
}

Voorbeeld voor nieuwe commercelicentieservices

Notitie

De nieuwe commerce-ervaringen voor services op basis van licenties omvatten veel nieuwe mogelijkheden en zijn beschikbaar voor alle CSP's (Cloud Solution Provider). Zie het overzicht van nieuwe commerce-ervaringen voor meer informatie.

Aanvraagvoorbeeld

POST /v1/customers/932c4101-dc08-461b-b4c1-75d80e905775/carts HTTP/1.1
Host: api.partnercenter.microsoft.com
Content-Type: application/json
Content-Length: 165

{
	"LineItems": [
		{
			"CatalogItemId":"CFQ7TTC0LFLZ:0002:CFQ7TTC0K4TS",
			"Quantity": 1,
			"TermDuration": "P1M",
			"BillingCycle": "Monthly"
		}
	]
}

Belangrijk

Azure-plan en permanente softwareregelitems bieden geen ondersteuning voor de eigenschap termDuration. Voorkom dat u dit opgeeft terwijl u deze typen items in gebruik hebt.

REST-antwoord

Als dit lukt, retourneert deze methode de gevulde winkelwagenresource in de hoofdtekst van het antwoord.

Geslaagde antwoorden en foutcodes

Elk antwoord wordt geleverd met een HTTP-statuscode die aangeeft dat de fout is geslaagd of mislukt en andere informatie over foutopsporing. Gebruik een hulpprogramma voor netwerktracering om deze code, het fouttype en andere parameters te lezen. Zie Foutcodes voor de volledige lijst.

Responsvoorbeeld


{
    "id": "2517c51b-58cd-4abe-87ed-3ab812401ab4",
    "creationTimestamp": "2023-07-11T21:16:11.55149Z",
    "lastModifiedTimestamp": "2023-07-11T21:16:11.5515713Z",
    "expirationTimestamp": "2023-07-18T21:16:17.2480482Z",
    "lastModifiedUser": "9db12087-fbc3-481c-8965-73d44ff88e27",
    "status": "Active",
    "lineItems": [
        {
            "id": 0,
            "catalogItemId": "CFQ7TTC0LF8S:0001:CFQ7TTC0VZW5",
            "quantity": 1,
            "currencyCode": "USD",
            "billingCycle": "monthly",
            "termDuration": "P1Y",
            "provisioningContext": {},
            "orderGroup": "0",
            "pricing": {
                "listPrice": 30.4,
                "discountedPrice": 30.4,
                "proratedPrice": 30.4,
                "price": 30.4,
                "extendedPrice": 364.8
            }
        }
    ],
    "links": {
        "self": {
            "uri": "/customers/ebd8b4c2-4069-46a8-bd70-123d6dec3e39/carts/2517c51b-58cd-4abe-87ed-3ab812401ab4",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "objectType": "Cart"
    }
}