적용 대상: 파트너 센터 | 21Vianet에서 운영되는 파트너 센터 | 미국 정부용 Microsoft 클라우드 파트너 센터
Azure 예약 VM 인스턴스 제품에 대한 주문 만들기는 다음에만 적용됩니다.
- 파트너 센터
현재 판매할 수 있는 제품에 대한 자세한 내용은 클라우드 솔루션 공급자 프로그램의 파트너 제품을 참조하세요.
필수 조건
자격 증명은 파트너 센터 인증에서 설명됩니다. 이 시나리오는 독립 실행형 앱과 App+사용자 자격 증명을 모두 사용하여 인증을 지원합니다.
고객 ID(
customer-tenant-id)입니다. 고객의 ID를 모르는 경우 고객 작업 영역, 고객 목록에서 고객, 계정을 선택하여 파트너 센터에서 조회할 수 있습니다. 고객 계정 페이지의 고객 계정 정보 섹션에서 Microsoft ID를 찾습니다. Microsoft ID는 고객 ID(customer-tenant-id)와 동일합니다.제품 식별자입니다.
C#
고객에 대한 주문을 만들려면 다음을 수행합니다.
Order 개체를 인스턴스화하고 ReferenceCustomerID 속성을 고객 ID로 설정하여 고객을 기록합니다.
OrderLineItem 개체 목록을 만들고 순서의 LineItems 속성에 목록을 할당합니다. 각 주문 품목에는 하나의 제품에 대한 구매 정보가 포함됩니다. 주문 품목이 하나 이상 있어야 합니다.
작업을 정렬하는 인터페이스를 가져옵니다. 먼저 고객 ID를 사용하여 IAggregatePartner.Customers.ById 메서드를 호출하여 고객을 식별합니다. 다음으로 Orders 속성에서 인터페이스를 검색합니다.
Create 또는 CreateAsync 메서드를 호출하고 Order 개체를 전달합니다.
증명을 완료하고 다른 재판매인을 포함하려면 다음 샘플 요청 및 응답 샘플을 참조하세요.
예제 요청
{
"PartnerOnRecordAttestationAccepted":true,
"lineItems": [
{
"offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"quantity": 1,
"lineItemNumber": 0,
"PartnerIdOnRecord": "873452",
"AdditionalPartnerIdsOnRecord":["4847383","873452"]
}
],
"billingCycle": "monthly"
}
응답 예제
{
"id": "5cf72f146967",
"alternateId": "5cf72f146967",
"referenceCustomerId": "f81d98dd-c2f4-499e-a194-5619e260344e",
"billingCycle": "monthly",
"currencyCode": "USD",
"currencySymbol": "$",
"lineItems": [
{
"lineItemNumber": 0,
"offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"termDuration": "P1M",
"transactionType": "New",
"friendlyName": "AI Builder Capacity add-on",
"quantity": 1,
"partnerIdOnRecord": "873452",
"additionalPartnerIdsOnRecord": [
"4847383",
"873452"
],
"links": {
"product": {
"uri": "/products/CFQ7TTC0LH0Z?country=US",
"method": "GET",
"headers": []
},
"sku": {
"uri": "/products/CFQ7TTC0LH0Z/skus/0001?country=US",
"method": "GET",
"headers": []
},
"availability": {
"uri": "/products/CFQ7TTC0LH0Z/skus/0001/availabilities/CFQ7TTC0K18P?country=US",
"method": "GET",
"headers": []
}
}
}
],
"creationDate": "2021-08-17T18:13:11.3122226Z",
"status": "pending",
"transactionType": "UserPurchase",
"links": {
"self": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967",
"method": "GET",
"headers": []
},
"provisioningStatus": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967/provisioningstatus",
"method": "GET",
"headers": []
},
"patchOperation": {
"uri": "/customers/f81d98dd-c2f4-499e-a194-5619e260344e/orders/5cf72f146967",
"method": "PATCH",
"headers": []
}
},
"client": {},
"attributes": {
"objectType": "Order"
}
}
IAggregatePartner partnerOperations;
string customerId;
string offerId;
var order = new Order()
{
ReferenceCustomerId = customerId,
LineItems = new List<OrderLineItem>()
{
new OrderLineItem()
{
OfferId = offerId,
FriendlyName = "new offer purchase",
Quantity = 1,
ProvisioningContext = new Dictionary<string, string>
{
{ "subscriptionId", "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" },
{ "scope", "shared" },
{ "duration", "3Years" }
}
}
}
};
var createdOrder = partnerOperations.Customers.ById(customerId).Orders.Create(order);
샘플: 콘솔 테스트 앱. 프로젝트: 파트너 센터 SDK 샘플 클래스: CreateOrder.cs
REST 요청
요청 구문
| 메서드 | URI 요청 |
|---|---|
| 게시물 | {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1 |
URI 매개 변수
다음 경로 매개 변수를 사용하여 고객을 식별합니다.
| 이름 | 유형 | 필수 | Description |
|---|---|---|---|
| customer-id | 문자열 | Yes | 고객을 식별하는 GUID 형식의 고객 ID입니다. |
요청 헤더
자세한 내용은 Partner Center REST 헤더를 참조하세요.
요청 메시지 본문
순서
이 표에서는 요청 본문의 Order 속성에 대해 설명합니다.
| 재산 | 유형 | 필수 | Description |
|---|---|---|---|
| 아이디 | 문자열 | 아니오 | 주문을 성공적으로 만들 때 제공되는 주문 식별자입니다. |
| referenceCustomerId | 문자열 | 아니오 | 고객 식별자입니다. |
| billingCycle | 문자열 | 아니오 | 파트너가 이 주문에 대해 청구되는 빈도를 나타냅니다. 지원되는 값은 BillingCycleType에 있는 멤버 이름입니다. 기본값은 주문 생성 시 "월별" 또는 "OneTime"입니다. 이 필드는 주문을 성공적으로 만들 때 적용됩니다. |
| lineItems | OrderLineItem 리소스 배열 | Yes | 수량을 포함하여 고객이 구매하는 제품의 항목별 목록입니다. |
| 통화 코드 | 문자열 | 아니오 | 읽기 전용. 주문을 할 때 사용되는 통화입니다. 주문을 성공적으로 만들 때 적용됩니다. |
| 생성 날짜 | datetime | 아니오 | 읽기 전용. 주문이 만들어진 날짜(날짜-시간 형식)입니다. 주문을 성공적으로 만들 때 적용됩니다. |
| status | 문자열 | 아니오 | 읽기 전용. 주문의 상태입니다. 지원되는 값은 OrderStatus에 있는 멤버 이름입니다. |
| links | OrderLinks | 아니오 | 주문에 해당하는 리소스 링크입니다. |
| attributes | ResourceAttributes | 아니오 | Order에 해당하는 메타데이터 특성입니다. |
| PartnerOnRecordAttestationAccepted | 불리언 (Boolean) | Yes | 증명 완료 확인 |
OrderLineItem
이 표에서는 요청 본문의 OrderLineItem 속성에 대해 설명합니다.
비고
API를 통해 카트를 체크 아웃하면 품목이 카트에 넣을 순서대로 처리됩니다. 주문은 카트에 동일한 유형의 제품이 두 개 있는 경우, 하나는 프로모션 ID가 있고 다른 하나는 없는 경우(예: 다른 조건이 있는 경우), "New To Offer" 제약 조건에 따라 프로모션 자격에 영향을 줄 수 있습니다. 여러 항목을 체크 아웃하는 경우 프로모션에 적합한 품목을 카트에 먼저 배치해야 합니다.
| 이름 | 유형 | 필수 | Description |
|---|---|---|---|
| lineItemNumber | 정수 (int) | Yes | 컬렉션의 각 품목은 0에서 count-1까지 계산되는 고유한 줄 번호를 가져옵니다. |
| offerId | 문자열 | Yes | 제품 식별자입니다. 제품의 가용성이 올바른 세그먼트에 적합한지 확인합니다. |
| subscriptionId | 문자열 | 아니오 | 구독 식별자입니다. |
| parentSubscriptionId | 문자열 | 아니오 | Optional. 추가 기능 제품의 부모 구독 ID입니다. PATCH에만 적용됩니다. |
| friendlyName | 문자열 | 아니오 | Optional. 명확하게 구분하기 위해 파트너가 정의한 구독의 이름입니다. |
| 양 | 정수 (int) | Yes | 라이선스 기반 구독에 대한 라이선스 수입니다. |
| customTermEndDate | DateTime | 아니오 | 새 구독의 첫 번째 청구 기간 종료 날짜입니다. |
| partnerIdOnRecord | 문자열 | 아니오 | 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우 이 필드를 간접 재판매 인의 PartnerID로만 채웁니다(간접 공급자의 ID는 안 됨). 이렇게 하면 인센티브에 대한 적절한 회계가 보장됩니다. |
| provisioningContext | <사전 문자열, 문자열> | 아니오 | 카탈로그의 일부 항목에 대한 프로비전에 필요한 정보입니다. SKU의 provisioningVariables 속성은 카탈로그의 특정 항목에 필요한 속성을 나타냅니다. |
| links | OrderLineItemLinks | 아니오 | 읽기 전용. 주문 품목에 해당하는 리소스 링크입니다. |
| attributes | ResourceAttributes | 아니오 | OrderLineItem에 해당하는 메타데이터 특성입니다. |
| renewsTo | 개체의 배열 | 아니오 | RenewsTo 리소스의 배열입니다. |
| AttestationAccepted | bool | 아니오 | 제안 또는 sku 조건에 대한 규약을 나타냅니다. SkuAttestationProperties 또는 OfferAttestationProperties enforceAttestation이 True인 제품 또는 sku에만 필요합니다. |
| AdditionalPartnerIdsOnRecord | String | 아니오 | 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우 이 필드를 추가 간접 재판매 인의 PartnerID로만 채웁니다(간접 공급자의 ID가 없음). 이러한 다른 재판매인에게는 인센티브가 적용되지 않습니다. 최대 5개의 간접 재판매인만 입력할 수 있습니다. 이 값은 유럽 국가/지역 내에서 거래하는 해당 파트너만 해당합니다. |
| scheduledNextTermInstructions | 객체 | 아니오 | 평가판 구독에 대한 다음 용어 지침을 정의합니다. 파트너는 갱신 시 해당 유료 구독이 가지는 기간, 청구 빈도 및 수량을 지정할 수 있습니다. |
비고
partnerIdOnRecord는 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우에만 제공해야 합니다. 간접 재판매인의 PartnerID만 저장하는 데 사용됩니다(간접 공급자의 ID는 절대로 저장되지 않습니다).
RenewsTo
이 표에서는 Microsoft Marketplace 제품에 대한 요청 본문의 RenewsTo 속성에 대해 설명합니다.
| 재산 | 유형 | 필수 | Description |
|---|---|---|---|
| termDuration | 문자열 | 아니오 | 갱신 기간의 ISO 8601 표현입니다. 현재 지원되는 값은 P1M (1개월) 및 P1Y(1 년)입니다. |
ScheduledNextTermInstructions
이 표에서는 NCE(새 상거래 환경) 라이선스 기반 평가판 제품에 대한 요청 본문의 scheduledNextTermInstructions 속성을 설명합니다. 값이 지정되지 않은 경우 평가판은 연간 기간, 월별 청구 및 25개의 라이선스를 사용하여 유료 구독으로 갱신됩니다.
| 재산 | 유형 | 필수 | Description |
|---|---|---|---|
| 제품 | 배열 | 아니오 | 평가판 구독이 갱신되는 제안과 유료 구독의 기간 및 청구 빈도를 지정하는 배열입니다. |
| 양 | 정수 (int) | 아니오 | 평가판 제안이 갱신된 후 해당 유료 구독에 있는 라이선스 수량입니다. |
제품
이 표에서는 NCE 라이선스 기반 평가판 제품에 대한 요청 본문의 productTerm 속성에 대해 설명합니다. 이 배열에 값이 지정되지 않은 경우 평가판은 연간 기간, 월별 청구를 사용하여 유료 구독으로 갱신됩니다.
| 재산 | 유형 | 필수 | Description |
|---|---|---|---|
| 제품 ID | 문자열 | 아니오 | 평가판이 갱신되어 유료 구독으로 전환될 때 이를 나타내는 형식으로 구성된 GUID입니다. |
| skuId | 문자열 | 아니오 | 평가판이 유료 구독으로 갱신될 때 이를 나타내는 SKU 형식의 GUID입니다. |
| availabilityId | 문자열 | 아니오 | 평가판이 갱신되는 유료 구독의 가용성을 나타내는 형식의 GUID입니다. |
| billingCycle | 문자열 | 아니오 | 평가판 제안이 갱신된 후 적용되는 유료 구독의 청구 주기입니다. |
| termDuration | 문자열 | 아니오 | 평가판 제품이 갱신되면 해당 유료 구독이 가지고 있는 기간입니다. |
예제 요청
POST https://api.partnercenter.microsoft.com/v1/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders HTTP/1.1
Authorization: Bearer <token>
Host: api.partnercenter.microsoft.com
Content-Length: 691
Content-Type: application/json
{
"BillingCycle": "one_time",
"CurrencyCode": "USD",
"LineItems": [
{
"LineItemNumber": 0,
"ProvisioningContext": {
"subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"scope": "shared",
"duration": "1Year"
},
"OfferId": "DZH318Z0BQ4B:0047:DZH318Z0DSM8",
"FriendlyName": "A_sample_Azure_RI",
"Quantity": 1
}
]
}
// request example where some renewal values for an NCE license-based trial are specified
http
POST https://api.partnercenter.microsoft.com/v1/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders HTTP/1.1
Authorization: Bearer <token>
Host: api.partnercenter.microsoft.com
Content-Length: 486
Content-Type: application/json
{
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LCHC:0003:CFQ7TTC0XCQC",
"quantity": 25,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"promotionId": null,
"provisioningContext": {},
"customTermEndDate": null,
"scheduledNextTermInstructions": {
"product": {
"billingCycle": "monthly",
"termDuration": "P1M"
}
}
}
],
"partnerOnRecordAttestationAccepted": true
}
REST 응답
성공하면 메서드는 응답 본문에 Order 리소스를 반환합니다.
주문에 하나 이상의 구독이 포함된 경우 해당 구독이 API 호출 시 프로비전된 경우에만 해당 구독 ID 값이 REST 응답에 표시됩니다. 프로비전 구독은 비동기적으로 발생하므로 구독 ID 값이 주문 만들기 호출의 REST 응답에 항상 표시되지 않을 수 있습니다. 그러나 각 구독이 프로비전되면 주문 가져오기 및 ID별 주문 가져오기 API 호출을 통해 구독 ID 값에 액세스할 수 있습니다.
응답 성공 및 오류 코드
각 응답에는 성공 또는 실패 및 더 많은 디버깅 정보를 나타내는 HTTP 상태 코드가 함께 제공됩니다. 네트워크 추적 도구를 사용하여 이 코드, 오류 유형 및 기타 매개 변수를 읽습니다. 전체 목록은 파트너 센터 오류 코드를 참조하세요.
응답 예제
{
"id": "Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1",
"referenceCustomerId": "b0d70a69-4c42-4b27-b17b-91a835d8686a",
"billingCycle": "one_time",
"currencyCode": "USD",
"lineItems": [
{
"lineItemNumber": 0,
"offerId": "84A03D81-6B37-4D66-8D4A-FAEA24541538",
"friendlyName": "A_sample_Azure_RI",
"quantity": 1,
"links": {
"sku": {
"uri": "/products/DZH318Z0BQ4B/skus/0047?country=US",
"method": "GET",
"headers": []
}
}
} ],
"creationDate": "2018-03-15T22:30:02.085152Z",
"status": "pending",
"links": {
"provisioningStatus": {
"uri": "/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders/Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1/provisioningstatus",
"method": "GET",
"headers": []
},
"self": {
"uri": "/customers/b0d70a69-4c42-4b27-b17b-91a835d8686a/orders/Cs_jyTxubLpvdJXdo8xcQZN6I2RsLrgZ1",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Order"
}
}
// response content for an order containing an NCE license-based trial
{
"id": "99d3777b-61da-4c95-aefa-203c248c4180",
"creationTimestamp": "2025-02-04T22:22:36.7924103Z",
"lastModifiedTimestamp": "2025-02-04T22:22:36.7924109Z",
"expirationTimestamp": "2025-02-11T22:23:34.5190698Z",
"lastModifiedUser": "b5109661-56c5-45ed-9447-f67463458a97",
"status": "Active",
"lineItems": [
{
"id": 0,
"catalogItemId": "CFQ7TTC0LCHC:0003:CFQ7TTC0XCQC",
"quantity": 25,
"currencyCode": "USD",
"billingCycle": "none",
"termDuration": "P1M",
"provisioningContext": {},
"orderGroup": "0",
"pricing": {
"listPrice": 0.0,
"discountedPrice": 0.0,
"proratedPrice": 0.0,
"price": 0.0,
"extendedPrice": 0.0
},
"scheduledNextTermInstructions": {
"product": {
"productId": "CFQ7TTC0LCHC",
"skuId": "0002",
"availabilityId": "CFQ7TTC0XL82",
"billingCycle": "monthly",
"termDuration": "P1M"
},
"quantity": 25
}
}
],
"links": {
"self": {
"uri": "/customers/81e78b53-9aa8-44e7-a041-3b15272d8f84/carts/99d3777b-61da-4c95-aefa-203c248c4180",
"method": "GET",
"headers": []
}
},
"attributes": {
"objectType": "Cart"
}
}