パートナー センター API を使用して顧客の注文を作成する
適用対象: パートナー センター | 21Vianet が運営するパートナー センター | Microsoft Cloud for US Government のパートナー センター
Azure 予約 VM インスタンス製品の順序の作成にのみ適用されますは次のとおりです。
- パートナー センター
現在販売できる内容については、クラウド ソリューション プロバイダー プログラムPartner オファーを参照してください。
前提条件
パートナー センターの認証に関するページで説明している資格情報。 このシナリオでは、スタンドアロン アプリとアプリ + ユーザーの両方の資格情報を使った認証がサポートされています。
顧客 ID です (
customer-tenant-id
)。 顧客の ID がわからない場合は、パートナー センターで [顧客] ワークスペースを選び、顧客一覧から顧客を選び、[アカウント] を選んで調べることができます。 顧客の [アカウント] ページの [顧客のアカウント情報] セクションで Microsoft ID を探します。 Microsoft ID は、顧客 ID (customer-tenant-id
) と同じです。オファー識別子。
C#
顧客の注文を作成するには:
Order オブジェクトをインスタンス化し、ReferenceCustomerID プロパティを顧客 ID に設定して顧客を記録します。
OrderLineItem オブジェクトのリストを作成し、そのリストを注文の LineItems プロパティに割り当てます。 各注文品目には 1 つのプランの購入情報が含まれています。 少なくとも 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);
サンプル: Console テスト アプリ。 Project: パートナー センター SDK サンプル Class: CreateOrder.cs
REST 要求
要求の構文
認証方法 | 要求 URI |
---|---|
投稿 | {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1 |
URI パラメーター
次のパス パラメーターを使用して顧客を指定します。
名前 | タイプ | Required | 説明 |
---|---|---|---|
customer-id | string | はい | 顧客を識別する GUID 形式の顧客 ID。 |
要求ヘッダー
詳細については、「パートナー センター REST ヘッダー」を参照してください。
要求本文
注文
次の表では、要求本文の Order プロパティについて説明します。
プロパティ | タイプ | Required | 内容 |
---|---|---|---|
id | string | いいえ | 注文の正常な作成時に指定される注文識別子。 |
referenceCustomerId | string | いいえ | 顧客 ID。 |
billingCycle | string | いいえ | この注文に対してパートナーに請求される頻度を示します。 サポートされる値は、BillingCycleType で検出されたメンバー名です。 既定値は、注文の作成時に "Monthly" または "OneTime" です。 このフィールドは、注文が正常に作成されると適用されます。 |
lineItems | OrderLineItem リソースの配列 | はい | 顧客が購入しているオファーの明細リスト (数量を含む)。 |
currencyCode | string | いいえ | 読み取り専用です。 注文時に使用される通貨。 注文が正常に作成されると適用されます。 |
creationDate | datetime | いいえ | 読み取り専用です。 注文が作成された日付 (日時形式)。 注文が正常に作成されると適用されます。 |
status | string | いいえ | 読み取り専用です。 指示の状態。 サポートされている値は、 OrderStatus で見つかったメンバー名です。 |
リンク | OrderLinks | いいえ | Order に対応するリソース リンク。 |
属性 | ResourceAttributes | いいえ | Order に対応するメタデータ属性。 |
PartnerOnRecordAttestationAccepted | Boolean | はい | 構成証明の完了を確認します |
OrderLineItem
次の表では、要求本文の OrderLineItem プロパティについて説明します。
Note
partnerIdOnRecord は、間接プロバイダーが間接リセラーに代わって注文を行う場合にのみ提供する必要があります。 これは、間接リセラーの PartnerID のみを格納するために使用されます (間接プロバイダーの ID は保存しません)。
名前 | タイプ | Required | 説明 |
---|---|---|---|
lineItemNumber | int | はい | コレクション内の各品目には、0 からカウント -1 までカウントする、一意の品目番号が与えられます。 |
offerId | string | はい | オファーの識別子。 オファーの可用性が正しいセグメント用であることを確認します。 |
subscriptionId | string | いいえ | サブスクリプション識別子です。 |
parentSubscriptionId | string | いいえ | 省略可能。 アドオン オファーの親サブスクリプションの ID。 PATCH にのみ適用されます。 |
friendlyName | string | いいえ | 省略可能。 曖昧さをなくすためにパートナーが定義したサブスクリプションのフレンドリ名。 |
quantity | int | はい | ライセンス ベースのサブスクリプションのライセンス数。 |
customTermEndDate | DateTime | いいえ | 新しいサブスクリプションの最初の請求期間の終了日。 |
partnerIdOnRecord | string | いいえ | 間接プロバイダーが間接リセラーに代わって注文を行う場合は、このフィールドに indirect リセラーの PartnerID のみを設定します (間接プロバイダーの ID は設定されません)。 これにより、インセンティブを正しく計算できます。 |
provisioningContext | Dictionary<string、string> | いいえ | カタログ内の一部の項目のプロビジョニングに必要な情報。 SKU の provisioningVariables プロパティは、カタログ内の特定のアイテムに必要なプロパティを示します。 |
リンク | OrderLineItemLinks | いいえ | 読み取り専用です。 注文明細に対応するリソース リンク。 |
属性 | ResourceAttributes | いいえ | OrderLineItem に対応するメタデータ属性。 |
renewsTo | オブジェクトの配列 | いいえ | RenewsTo リソースの配列。 |
AttestationAccepted | [bool] | いいえ | オファーまたは SKU の条件に対する契約を示します。 SkuAttestationProperties または OfferAttestationProperties enforceAttestation が True のオファーまたは SKU にのみ必要です。 |
AdditionalPartnerIdsOnRecord | String | いいえ | 間接プロバイダーが間接リセラーに代わって注文を行う場合は、このフィールドに 追加間接リセラーのみ の PartnerID を設定します (間接プロバイダーの ID は設定されません)。 インセンティブは、これらの追加リセラーには適用されません。 最大 5 つの間接リセラーのみを入力できます。 これは、EU/EFTA の国/地域内で取引する適用可能なパートナーのみです。 |
RenewsTo
次の表では、要求本文の RenewsTo プロパティについて説明します。
プロパティ | タイプ | Required | 説明 |
---|---|---|---|
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 リソースを返します。
注文に 1 つ以上のサブスクリプションが含まれている場合、対応するサブスクリプションが API 呼び出し時にプロビジョニングされている場合にのみ、それぞれのサブスクリプション ID 値が REST 応答に表示されます。 サブスクリプションのプロビジョニングは非同期的に行われるため、サブスクリプション ID 値が Create Order 呼び出しの REST 応答に常に表示されるとは限りません。 ただし、それぞれのサブスクリプションがプロビジョニングされると、そのサブスクリプション ID 値には、Get Orders と Get Order by ID API 呼び出しを通じてアクセスできます。
応答の成功とエラーのコード
各応答には、成功または失敗を示す HTTP ステータス コードと、追加のデバッグ情報が付属しています。 このコード、エラーの種類、追加のパラメーターを読み取るには、ネットワーク トレース ツールを使用します。 完全な一覧については、 Partner Center のエラー コードを参照してください。
応答の例
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"
}
}