고객 주문으로 카트 만들기
적용 대상: 파트너 센터 | 21Vianet에서 운영되는 파트너 센터 | Microsoft Cloud for US Government 파트너 센터
카트에 고객에 대한 주문을 추가할 수 있습니다. 현재 판매할 수 있는 제품에 대한 자세한 내용은 클라우드 솔루션 공급자 프로그램의 파트너 제품을 참조하세요.
참고 항목
카트는 초기 생성 후 7일 후에 만료됩니다.
필수 조건
자격 증명(파트너 센터 인증에서 설명). 이 시나리오는 독립 실행형 앱과 App+사용자 자격 증명을 모두 사용하여 인증을 지원합니다.
고객 ID (
customer-tenant-id
). 고객의 ID를 모르는 경우 고객 작업 영역을 선택하고 고객 목록에서 고객을 선택한 다음 계정을 선택하여 파트너 센터에서 조회할 수 있습니다. 고객 계정 페이지의 고객 계정 정보 섹션에서 Microsoft ID를 찾습니다. Microsoft ID는 고객 ID(customer-tenant-id
)와 동일합니다.
C#
고객에 대한 주문을 만들려면 다음을 수행합니다.
Cart 개체를 인스턴스화합니다.
CartLineItem 개체 목록을 만들고 목록을 카트의 LineItems 속성에 할당합니다. 각 카트 품목에는 한 제품에 대한 구매 정보가 포함됩니다. 카트 품목이 하나 이상 있어야 합니다.
고객 ID를 사용하여 IAggregatePartner.Customers.ById 메서드를 호출하여 고객을 식별한 다음 Cart 속성에서 인터페이스를 검색하여 카트 작업에 대한 인터페이스를 가져옵니다.
Create 또는 CreateAsync 메서드를 호출하여 카트를 만듭니다.
증명을 완료하고 다른 재판매인을 포함하려면 다음 샘플 요청 및 응답 샘플을 참조하세요.
요청 샘플
{
"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"
}
]
}
]
}
응답 샘플
{
"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# 예
// 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
파트너 센터 Java SDK를 사용하여 파트너 센터 리소스를 관리할 수 있습니다. 파트너 커뮤니티에서 유지 관리하며 Microsoft에서 공식적으로 지원하지 않는 오픈 소스 프로젝트입니다. 문제가 발생한 경우 커뮤니티에서 도움을 받거나 GitHub에서 문제를 열 수 있습니다.
고객에 대한 주문을 만들려면 다음을 수행합니다.
Cart 개체를 인스턴스화합니다.
CartLineItem 개체 목록을 만들고 목록을 카트의 품목에 할당합니다. 각 카트 품목에는 한 제품에 대한 구매 정보가 포함됩니다. 카트 품목이 하나 이상 있어야 합니다.
고객 ID를 사용하여 IAggregatePartner.getCustomers().byId 함수를 호출하여 고객을 식별한 다음 getCart 함수에서 인터페이스를 검색하여 카트 작업에 대한 인터페이스를 가져옵니다.
create 함수를 호출하여 카트를 만듭니다.
Java 예제
// 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
파트너 센터 PowerShell 모듈을 사용하여 파트너 센터 리소스를 관리할 수 있습니다. 파트너 커뮤니티에서 유지 관리하며 Microsoft에서 공식적으로 지원하지 않는 오픈 소스 프로젝트입니다. 문제가 발생한 경우 커뮤니티에서 도움을 받거나 GitHub에서 문제를 열 수 있습니다.
고객에 대한 주문을 만들려면 다음을 수행합니다.
Cart 개체를 인스턴스화합니다.
CartLineItem 개체 목록을 만들고 목록을 카트의 품목에 할당합니다. 각 카트 품목에는 한 제품에 대한 구매 정보가 포함됩니다. 카트 품목이 하나 이상 있어야 합니다.
New-PartnerCustomerCart 명령을 실행하여 카트를 만듭니다.
# $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 요청
요청 구문
메서드 | 요청 URI |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/carts HTTP/1.1 |
URI 매개 변수
다음 경로 매개 변수를 사용하여 고객을 식별합니다.
속성 | Type | 필수 | 설명 |
---|---|---|---|
customer-id | string | 예 | 고객을 식별하는 GUID 형식의 고객 ID입니다. |
요청 헤더
자세한 내용은 파트너 센터 REST 헤더를 참조하세요.
요청 본문
이 표에서는 요청 본문의 Cart 속성에 대해 설명합니다.
속성 | 형식 | 필수 | 설명 |
---|---|---|---|
id | string | 아니요 | 카트를 성공적으로 만들 때 제공되는 카트 식별자입니다. |
creationTimeStamp | DateTime | 아니요 | 카트를 만든 날짜(날짜-시간 형식)입니다. 카트를 성공적으로 만들 때 적용됩니다. |
lastModifiedTimeStamp | DateTime | 아니요 | 카트가 마지막으로 업데이트된 날짜(날짜-시간 형식)입니다. 카트를 성공적으로 만들 때 적용됩니다. |
expirationTimeStamp | DateTime | 아니요 | 카트가 만료되는 날짜(날짜-시간 형식)입니다. 카트를 성공적으로 만들 때 적용됩니다. |
lastModifiedUser | string | 아니요 | 카트를 마지막으로 업데이트한 사용자입니다. 카트를 성공적으로 만들 때 적용됩니다. |
lineItems | 개체의 배열 | 예 | CartLineItem 리소스의 배열입니다. |
PartnerOnRecordAttestationAccepted | Boolean | 예 | 증명 완료 확인 |
이 표에서는 요청 본문의 CartLineItem 속성에 대해 설명합니다.
속성 | 형식 | 필수 | 설명 |
---|---|---|---|
id | string | 아니요 | 카트 품목에 대한 고유 식별자입니다. 카트를 성공적으로 만들 때 적용됩니다. |
catalogId | string | 예 | 카탈로그 항목 식별자입니다. 카탈로그 항목의 가용성이 올바른 세그먼트인지 확인합니다. |
friendlyName | string | 아니요 | 선택 사항. 명확하게 구분하기 위해 파트너가 정의한 항목의 이름입니다. |
promotionId | string | 아니요 | 선택 사항. 대부분의 NCE 프로모션은 자동 적용되지만 선택적 프로모션(예: Bridge to the Cloud 2)이 카트 품목에 적용하려면 파트너는 카트에 추가 요청에 프로모션 ID를 포함해야 합니다. |
quantity | int | 예 | 라이선스 또는 인스턴스 수입니다. |
currencyCode | string | 아니요 | 통화 코드입니다. |
billingCycle | Object | 예 | 현재 기간에 대해 설정된 청구 주기 형식입니다. |
customTermEndDate | DateTime | 아니요 | 새 구독을 공동 작성하려는 기존 구독의 종료 날짜입니다. |
participants | 개체 문자열 쌍 목록 | 아니요 | 구매에 대한 PartnerID(PartnerId on Record) 컬렉션입니다. |
provisioningContext | <사전 문자열, 문자열> | 아니요 | 카탈로그의 일부 항목에 대한 프로비전에 필요한 정보입니다. SKU의 provisioningVariables 속성은 카탈로그의 특정 항목에 필요한 속성을 나타냅니다. |
orderGroup | string | 아니요 | 함께 배치할 수 있는 항목을 나타내는 그룹입니다. |
error | Object | 아니요 | 오류가 있는 경우 카트를 만든 후에 적용됩니다. |
renewsTo | 개체의 배열 | 아니요 | RenewsTo 리소스의 배열입니다. |
AttestationAccepted | Boolean | 아니요 | 제안 또는 sku 조건에 대한 규약을 나타냅니다. SkuAttestationProperties 또는 OfferAttestationProperties enforceAttestation이 True인 제품 또는 sku에만 필요합니다. |
transaction_reseller | 문자열 | 아니요 | 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우 이 필드를 간접 재판매인의 PartnerID로만 채웁니다(간접 공급자의 ID는 안 됨). 이렇게 하면 인센티브에 대한 적절한 회계가 보장됩니다. |
additional_transaction_reseller | 문자열 | 아니요 | 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우 이 필드를 추가 간접 재판매인의 PartnerID로만 채웁니다(간접 공급자의 ID가 없음). 이러한 추가 재판매인에게는 인센티브가 적용되지 않습니다. 최대 5개의 간접 재판매인만 입력할 수 있습니다. 이는 EU/EFTA 국가/지역 내에서 거래하는 해당 파트너만 해당합니다. |
이 표에서는 요청 본문의 RenewsTo 속성에 대해 설명합니다.
속성 | 형식 | 필수 | 설명 |
---|---|---|---|
termDuration | string | 아니요 | 갱신 기간의 ISO 8601 표현입니다. 현재 지원되는 값은 P1M (1개월) 및 P1Y (1년)입니다. |
요청 예시
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: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
}
},
{
/* Azure Reserved Instance */
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"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"
}
}
]
}
Important
2023년 6월 현재 최신 파트너 센터 .NET SDK 릴리스 3.4.0이 보관됩니다. 유용한 정보가 포함된 추가 정보 파일과 함께 GitHub에서 SDK 릴리스를 다운로드할 수 있습니다.
파트너는 파트너 센터 REST API를 계속 사용하는 것이 좋습니다.
REST 응답
성공하면 이 메서드는 응답 본문에 채워진 Cart 리소스를 반환합니다.
응답 성공 및 오류 코드
각 응답에는 성공 또는 실패 및 디버깅 정보를 나타내는 HTTP 상태 코드가 함께 제공됩니다. 네트워크 추적 도구를 사용하여 이 코드, 오류 유형 및 기타 매개 변수를 읽습니다. 전체 목록은 오류 코드를 참조하세요.
응답 예제
HTTP/1.1 201 Created
Content-Length: 764
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"scope": "shared"
},
"orderGroup": "0"
},
{
"id": 2,
"catalogItemId": "DZH318Z0BQ36:004J:DZH318Z08B8X",
"quantity": 1,
"currencyCode": "USD",
"billingCycle": "one_time",
"termDuration": "P3Y",
"provisioningContext": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"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"
}
}
새 상거래 라이선스 기반 서비스의 예
참고 항목
라이선스 기반 서비스에 대한 새로운 상거래 환경에는 많은 새로운 기능이 포함되며 모든 CSP(클라우드 솔루션 공급자)에서 사용할 수 있습니다. 자세한 내용은 새 상거래 환경 개요를 참조하세요.
요청 예시
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"
}
]
}
Important
Azure 플랜 및 영구 소프트웨어 품목은 termDuration 속성을 지원하지 않습니다. 이러한 유형의 항목을 사용하는 동안에는 이 항목을 포함하지 않습니다.
REST 응답
성공하면 이 메서드는 응답 본문에 채워진 Cart 리소스를 반환합니다.
응답 성공 및 오류 코드
각 응답에는 성공 또는 실패 및 기타 디버깅 정보를 나타내는 HTTP 상태 코드가 함께 제공됩니다. 네트워크 추적 도구를 사용하여 이 코드, 오류 유형 및 기타 매개 변수를 읽습니다. 전체 목록은 오류 코드를 참조하세요.
응답 예제
{
"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"
}
}