파트너 센터 API를 사용하여 고객에 대한 주문 만들기
적용 대상: 파트너 센터 | 21Vianet에서 운영되는 파트너 센터 | Microsoft Cloud for US Government 파트너 센터
Azure 예약 VM 인스턴스 제품에 대한 주문 만들기는 다음에만 적용됩니다.
- 파트너 센터
현재 판매할 수 있는 제품에 대한 자세한 내용은 클라우드 솔루션 공급자 프로그램의 파트너 제품을 참조하세요.
필수 조건
자격 증명(파트너 센터 인증에서 설명). 이 시나리오는 독립 실행형 앱과 App+사용자 자격 증명을 모두 사용하여 인증을 지원합니다.
고객 ID (
customer-tenant-id
). 고객의 ID를 모르는 경우 고객 작업 영역을 선택하고 고객 목록에서 고객을 선택한 다음 계정을 선택하여 파트너 센터에서 조회할 수 있습니다. 고객 계정 페이지의 고객 계정 정보 섹션에서 Microsoft ID를 찾습니다. Microsoft ID는 고객 ID(customer-tenant-id
)와 동일합니다.제품 식별자입니다.
C#
고객에 대한 주문을 만들려면 다음을 수행합니다.
Order 개체를 인스턴스화하고 ReferenceCustomerID 속성을 고객 ID로 설정하여 고객을 기록합니다.
OrderLineItem 개체 목록을 만들고 순서의 LineItems 속성에 목록을 할당합니다. 각 주문 품목에는 하나의 제품에 대한 구매 정보가 포함됩니다. 주문 품목이 1개 이상 있어야 합니다.
작업을 정렬하는 인터페이스를 가져옵니다. 먼저 고객 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 |
---|---|
POST | {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1 |
URI 매개 변수
다음 경로 매개 변수를 사용하여 고객을 식별합니다.
속성 | Type | 필수 | 설명 |
---|---|---|---|
customer-id | string | 예 | 고객을 식별하는 GUID 형식의 고객 ID입니다. |
요청 헤더
자세한 내용은 파트너 센터 REST 헤더를 참조하세요.
요청 본문
순서
이 표에서는 요청 본문의 Order 속성에 대해 설명합니다.
속성 | 형식 | 필수 | 설명 |
---|---|---|---|
id | string | 아니요 | 주문을 성공적으로 만들 때 제공되는 주문 식별자입니다. |
referenceCustomerId | string | 아니요 | 고객 식별자입니다. |
billingCycle | string | 아니요 | 파트너가 이 주문에 대해 청구되는 빈도를 나타냅니다. 지원되는 값은 BillingCycleType에 있는 멤버 이름입니다. 기본값은 주문 생성 시 "월별" 또는 "OneTime"입니다. 이 필드는 주문을 성공적으로 만들 때 적용됩니다. |
lineItems | OrderLineItem 리소스 배열 | 예 | 수량을 포함하여 고객이 구매하는 제품의 항목별 목록입니다. |
currencyCode | string | 아니요 | 읽기 전용. 주문을 할 때 사용되는 통화입니다. 주문을 성공적으로 만들 때 적용됩니다. |
creationDate | 날짜/시간 | 아니요 | 읽기 전용. 주문이 만들어진 날짜(날짜-시간 형식)입니다. 주문을 성공적으로 만들 때 적용됩니다. |
status | string | 아니요 | 읽기 전용. 주문의 상태입니다. 지원되는 값은 OrderStatus에 있는 멤버 이름입니다. |
링크 | OrderLinks | 아니요 | 주문에 해당하는 리소스 링크입니다. |
attributes | ResourceAttributes | 아니요 | Order에 해당하는 메타데이터 특성입니다. |
PartnerOnRecordAttestationAccepted | Boolean | 예 | 증명 완료 확인 |
OrderLineItem
이 표에서는 요청 본문의 OrderLineItem 속성에 대해 설명합니다.
참고 항목
partnerIdOnRecord는 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우에만 제공해야 합니다. 간접 재판매인의 PartnerID만 저장하는 데 사용됩니다(간접 공급자의 ID는 절대로 저장되지 않습니다).
속성 | Type | 필수 | 설명 |
---|---|---|---|
lineItemNumber | int | 예 | 컬렉션의 각 품목은 0에서 count-1까지 계산되는 고유한 줄 번호를 가져옵니다. |
offerId | string | 예 | 제품 식별자입니다. 제품이 올바른 세그먼트에 적합한지 확인합니다. |
subscriptionId | string | 아니요 | 구독 식별자입니다. |
parentSubscriptionId | string | 아니요 | 선택 사항. 추가 기능 제품의 부모 구독 ID입니다. PATCH에만 적용됩니다. |
friendlyName | string | 아니요 | 선택 사항. 명확하게 구분하기 위해 파트너가 정의한 구독의 이름입니다. |
quantity | int | 예 | 라이선스 기반 구독에 대한 라이선스 수입니다. |
customTermEndDate | DateTime | 아니요 | 새 구독의 첫 번째 청구 기간 종료 날짜입니다. |
partnerIdOnRecord | string | 아니요 | 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우 이 필드를 간접 재판매인의 PartnerID로만 채웁니다(간접 공급자의 ID는 안 됨). 이렇게 하면 인센티브에 대한 적절한 회계가 보장됩니다. |
provisioningContext | <사전 문자열, 문자열> | 아니요 | 카탈로그의 일부 항목에 대한 프로비전에 필요한 정보입니다. SKU의 provisioningVariables 속성은 카탈로그의 특정 항목에 필요한 속성을 나타냅니다. |
링크 | OrderLineItemLinks | 아니요 | 읽기 전용. 주문 품목에 해당하는 리소스 링크입니다. |
attributes | ResourceAttributes | 아니요 | OrderLineItem에 해당하는 메타데이터 특성입니다. |
renewsTo | 개체의 배열 | 아니요 | RenewsTo 리소스의 배열입니다. |
AttestationAccepted | bool | 아니요 | 제안 또는 sku 조건에 대한 규약을 나타냅니다. SkuAttestationProperties 또는 OfferAttestationProperties enforceAttestation이 True인 제품 또는 sku에만 필요합니다. |
AdditionalPartnerIdsOnRecord | 문자열 | 아니요 | 간접 공급자가 간접 재판매인을 대신하여 주문을 하는 경우 이 필드를 추가 간접 재판매인의 PartnerID로만 채웁니다(간접 공급자의 ID가 없음). 이러한 추가 재판매인에게는 인센티브가 적용되지 않습니다. 최대 5개의 간접 재판매인만 입력할 수 있습니다. 이는 EU/EFTA 국가/지역 내에서 거래하는 해당 파트너만 해당합니다. |
RenewsTo
이 표에서는 요청 본문의 RenewsTo 속성에 대해 설명합니다.
속성 | 형식 | 필수 | 설명 |
---|---|---|---|
termDuration | string | 아니요 | 갱신 기간의 ISO 8601 표현입니다. 현재 지원되는 값은 P1M (1개월) 및 P1Y (1년)입니다. |
요청 예제
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
}
]
}
REST 응답
성공하면 메서드는 응답 본문에 Order 리소스를 반환합니다.
주문에 하나 이상의 구독이 포함된 경우 해당 구독이 API 호출 시 프로비전된 경우에만 해당 구독 ID 값이 REST 응답에 표시됩니다. 프로비전 구독은 비동기적으로 발생하므로 구독 ID 값이 주문 만들기 호출의 REST 응답에 항상 표시되지 않을 수 있습니다. 그러나 각 구독이 프로비전되면 주문 가져오기 및 ID별 주문 가져오기 API 호출을 통해 구독 ID 값에 액세스할 수 있습니다.
응답 성공 및 오류 코드
각 응답에는 성공 또는 실패와 추가 디버깅 정보를 나타내는 HTTP 상태 코드가 함께 제공됩니다. 네트워크 추적 도구를 사용하여 이 코드, 오류 유형 및 추가 매개 변수를 읽을 수 있습니다. 전체 목록은 파트너 센터 오류 코드를 참조 하세요.
응답 예제
HTTP/1.1 201 Created
Content-Length: 788
Content-Type: application/json; charset=utf-8
MS-CorrelationId: aaaa0000-bb11-2222-33cc-444444dddddd
MS-RequestId: 025f4c19-217f-49d6-a056-391902c62fb3
Date: Thu, 15 Mar 2018 22:30:02 GMT
{
"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"
}
}