次の方法で共有


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

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

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

  • パートナー センター

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

[前提条件]

  • パートナー センター認証で説明されている資格証明。 このシナリオでは、スタンドアロン アプリとアプリ + ユーザーの両方の資格情報を使った認証がサポートされています。

  • 顧客 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": "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 文字列 イエス 顧客を識別する GUID 形式の顧客 ID。

要求ヘッダー

詳細については、「パートナー センター REST ヘッダー」を参照してください。

リクエストの本文

注文

次の表では、要求本文の Order プロパティについて説明します。

プロパティ タイプ 必須 Description
id 文字列 いいえ 注文の正常な作成時に指定される注文識別子。
referenceCustomerId 文字列 いいえ 顧客識別子。
billingCycle 文字列 いいえ パートナーがこの注文に対して請求される頻度を示します。 サポートされている値は、 BillingCycleType で見つかったメンバー名です。 既定値は、注文の作成時に "Monthly" または "OneTime" です。 このフィールドは、注文が正常に作成されると適用されます。
lineItems OrderLineItem リソースの配列 イエス 顧客が購入しているオファーの明細リスト (数量を含む)。
通貨コード 文字列 いいえ 読み取り専用。 注文時に使用される通貨。 注文が正常に作成されると適用されます。
作成日 datetime いいえ 読み取り専用。 注文が作成された日付を日時形式で指定します。 注文が正常に作成されると適用されます。
状態 文字列 いいえ 読み取り専用。 注文の状態。 サポートされている値は、 OrderStatus で見つかったメンバー名です。
links OrderLinks いいえ Order に対応するリソース リンク。
attributes ResourceAttributes いいえ Order に対応するメタデータ属性。
PartnerOnRecordAttestationAccepted ブール値 イエス 構成証明の完了を確認します

OrderLineItem

次の表では、要求本文の OrderLineItem プロパティについて説明します。

API を使用してカートをチェックアウトすると、品目は カートに入れた順序で処理されます。 注文は、同じ種類の商品がカートに 2 つあり、1 つはプロモーション ID を持ち、もう 1 つは (たとえば、異なる条件で) ない場合に、New To Offer 制約によるプロモーションの適格性に影響を与える可能性があります。 複数のアイテムを購入手続きする場合は、プロモーションの対象となる商品項目をカートの最初に配置してください。

名前 タイプ 必須 Description
lineItemNumber 整数 (int) イエス コレクション内の各行項目は、0 から count-1 までの一意の行番号を取得します。
offerId 文字列 イエス オファー識別子。 オファーの可用性が適切なセグメント用であることを確認します。
subscriptionId 文字列 いいえ サブスクリプション識別子。
parentSubscriptionId 文字列 いいえ Optional. アドオン オファーの親サブスクリプションの ID。 PATCH にのみ適用されます。
フレンドリーネーム 文字列 いいえ Optional. あいまいさを解消するためにパートナーによって定義されたサブスクリプションのフレンドリ名。
整数 (int) イエス ライセンス ベースのサブスクリプションのライセンスの数。
customTermEndDate DateTime いいえ 新しいサブスクリプションの最初の請求期間の終了日。
partnerIdOnRecord 文字列 いいえ 間接プロバイダーが間接リセラーに代わって注文を行う場合は、間接リセラーの PartnerID のみをこのフィールドに設定します ( 間接 プロバイダーの ID は設定しません)。 これにより、インセンティブを適切に計算できます。
provisioningContext Dictionary<string、string> いいえ カタログ内の一部の項目のプロビジョニングに必要な情報。 SKU の provisioningVariables プロパティは、カタログ内の特定のアイテムに必要なプロパティを示します。
links OrderLineItemLinks いいえ 読み取り専用。 注文明細に対応するリソース リンク。
attributes ResourceAttributes いいえ OrderLineItem に対応するメタデータ属性。
renewsTo オブジェクトの配列 いいえ RenewsTo リソースの配列。
AttestationAccepted ブール (bool) いいえ オファーまたは SKU の条件に対する契約を示します。 SkuAttestationProperties または OfferAttestationProperties enforceAttestation が True のオファーまたは SKU にのみ必要です。
AdditionalPartnerIdsOnRecord String いいえ 間接プロバイダーが間接リセラーに代わって注文を行う場合は、このフィールドに 追加間接リセラーのみの PartnerID を設定します (間接プロバイダーの ID は設定しません)。 インセンティブは、これらの他のリセラーには適用されません。 最大 5 つの間接リセラーのみを入力できます。 この値は、ヨーロッパの国/地域内で取引する適用可能なパートナーのみです。
scheduledNextTermInstructions オブジェクト いいえ 試用版サブスクリプションの次の用語の指示を定義します。 パートナーは、更新時に対応する有料サブスクリプションが持つ期間、billingFrequency、数量を指定できます。

partnerIdOnRecord は、間接プロバイダーが間接リセラーに代わって注文を行う場合にのみ提供する必要があります。 これは、間接リセラーの PartnerID のみを格納するために使用されます (間接プロバイダーの ID は保存しません)。

RenewsTo

次の表では、Microsoft Marketplace オファーの要求本文の RenewsTo プロパティについて説明します。

プロパティ タイプ 必須 Description
termDuration 文字列 いいえ 更新期間の ISO 8601 表現。 現在サポートされている値は 、P1M (1 か月) と P1Y (1 年) です。
ScheduledNextTermInstructions

この表は、新しいコマース エクスペリエンス (NCE) のライセンスベース試用オファーに関する要求本文の scheduledNextTermInstructions プロパティを説明しています。 値が指定されていない場合、試用版は年間期間、月単位の請求、25 個のライセンスを使用して有料サブスクリプションに更新されます。

プロパティ タイプ 必須 Description
製品 アレイ いいえ 試用版サブスクリプションが更新されるオファーと、有料サブスクリプションの期間と請求頻度を指定する配列。
整数 (int) いいえ 試用版オファーが更新されると、対応する有料サブスクリプションに含まれるライセンス数量。
Product

次の表では、NCE ライセンス ベースの試用版オファーの要求本文の productTerm プロパティについて説明します。 この配列に値が指定されていない場合、試用版は年単位の月単位の請求で有料サブスクリプションに更新されます。

プロパティ タイプ 必須 Description
productId 文字列 いいえ 試用版が更新される有料サブスクリプションの製品を表現するためにフォーマットされた 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 リソースを返します。

注文に 1 つ以上のサブスクリプションが含まれている場合、対応するサブスクリプションが API 呼び出し時にプロビジョニングされている場合にのみ、それぞれのサブスクリプション ID 値が REST 応答に表示されます。 サブスクリプションのプロビジョニングは非同期的に行われるため、サブスクリプション ID 値が Create Order 呼び出しの REST 応答に常に表示されるとは限りません。 ただし、それぞれのサブスクリプションがプロビジョニングされると、そのサブスクリプション ID 値には、Get Orders と Get Order by ID API 呼び出しを通じてアクセスできます。

応答の成功とエラー コード

各応答には、成功または失敗とより多くのデバッグ情報を示す 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"
  }
}