パートナー センター API を使用して顧客の注文を作成する

適用対象: パートナー センター | 21Vianet が運営するパートナー センター | Microsoft Cloud for US Government のパートナー センター

Azure 予約 VM インスタンス製品の注文の作成は、次の場合にのみ適用されます

  • パートナー センター

現在販売可能な内容については、クラウド ソリューション プロバイダー プログラムのパートナー オファーを参照してください

前提条件

  • パートナー センターの認証に関するページで説明している資格情報。 このシナリオでは、スタンドアロンの App と App+User の両方の資格情報を使用した認証がサポートされています。

  • 顧客 ID です (customer-tenant-id)。 顧客の ID がわからない場合は、[顧客] ワークスペースを選択し、顧客の一覧から顧客を選択し、[アカウント] を選択して、パートナー センター検索できます。 顧客の [アカウント] ページで、[顧客アカウント情報] セクションで Microsoft ID をします。 Microsoft ID は、顧客 ID (customer-tenant-id) と同じです。

  • オファー識別子。

C#

顧客の注文を作成するには:

  1. Order オブジェクトをインスタンス化し、ReferenceCustomerID プロパティを顧客 ID に設定して顧客を記録します。

  2. OrderLineItem オブジェクトのリストを作成し、そのリストを注文の LineItems プロパティに割り当てます。 各注文品目には 1 つのプランの購入情報が含まれています。 少なくとも 1 つの注文品目が必要です。

  3. 操作を順序付けるインターフェイスを取得します。 最初に、顧客 ID を指定して IAggregatePartner.Customers.ById メソッドを呼び出して、顧客を識別します。 次に、Orders プロパティからインターフェイスを取得します。

  4. Create メソッドまたは CreateAsync メソッドを呼び出し、Order オブジェクトを渡します。

  5. 構成証明を完了し、追加のリセラーを含めるには、次のサンプル要求と応答のサンプルを参照してください。

要求の例

{
    "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": "fcddfa52-1da8-4529-d347-50ea51e1e7be",
            "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", "5198C069-3DAA-403A-8660-5BE11BFD12EE" },
                { "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 パラメーター

次のパス パラメーターを使用して顧客を指定します。

名前 タイプ 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 いいえ 省略可能。 曖昧さをなくすためにパートナーが定義したサブスクリプションのフレンドリ名。
数量 int はい ライセンス ベースのサブスクリプションのライセンス数。
customTermEndDate DateTime いいえ 新しいサブスクリプションの最初の請求期間の終了日。
partnerIdOnRecord string いいえ 間接プロバイダーが間接リセラーに代わって注文を行う場合は、間接リセラーの PartnerID のみを このフィールドに設定します (間接プロバイダーの ID は設定しません)。 これにより、インセンティブを正しく計算できます。
provisioningContext ディクショナリ<文字列、文字列> いいえ カタログ内の一部の項目のプロビジョニングに必要な情報。 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": "3D5ECED6-1151-44C7-AEE6-70A4BB725666",
        "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 ステータス コードと、追加のデバッグ情報が付属しています。 このコード、エラーの種類、追加のパラメーターを読み取るには、ネットワーク トレース ツールを使用します。 完全な一覧については、パートナー センターのエラー コードを参照してください

応答の例

HTTP/1.1 201 Created
Content-Length: 788
Content-Type: application/json; charset=utf-8
MS-CorrelationId: b593cbb7-b358-4b31-81fc-e60b9c277a7f
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"
    }
}