Membuat pesanan untuk pelanggan menggunakan API Pusat Mitra

Berlaku untuk: Pusat Mitra | Pusat Mitra yang dioperasikan oleh 21Vianet | Pusat Mitra untuk Microsoft Cloud untuk Pemerintah AS

Membuat pesanan untuk produk instans VM yang dipesan Azurehanya berlaku untuk:

  • Pusat Mitra

Untuk informasi tentang apa yang saat ini tersedia untuk dijual, lihat Penawaran mitra di program Penyedia Solusi Cloud.

Prasyarat

  • Detail login sebagaimana dijelaskan pada autentikasi Partner Center. Skenario ini mendukung autentikasi dengan kredensial Aplikasi mandiri dan Aplikasi+Pengguna.

  • ID pelanggan (customer-tenant-id). Jika Anda tidak mengetahui ID pelanggan, Anda dapat mencarinya di Pusat Mitra dengan memilih ruang kerja Pelanggan , lalu pelanggan dari daftar pelanggan, lalu Akun. Pada halaman Akun pelanggan, cari ID Microsoft di bagian Info Akun Pelanggan. ID Microsoft sama dengan ID pelanggan (customer-tenant-id).

  • Pengidentifikasi penawaran.

C#

Untuk membuat pesanan bagi pelanggan:

  1. Buat instans objek Pesanan dan atur properti ReferenceCustomerID ke ID pelanggan untuk merekam pelanggan.

  2. Buat daftar objek OrderLineItem , dan tetapkan daftar ke properti LineItems pesanan . Setiap item baris pesanan berisi informasi pembelian untuk satu penawaran. Anda harus memiliki setidaknya satu item baris pesanan.

  3. Dapatkan antarmuka untuk memesan operasi. Pertama, panggil metode IAggregatePartner.Customers.ById dengan ID pelanggan untuk mengidentifikasi pelanggan. Selanjutnya, ambil antarmuka dari properti Pesanan .

  4. Panggil metode Buat atau BuatAsync dan teruskan objek Pesanan .

  5. Untuk menyelesaikan pengesahan dan menyertakan pengecer lain, lihat sampel Sampel Permintaan dan Respons berikut:

Permintaan contoh

{
    "PartnerOnRecordAttestationAccepted":true, 
    "lineItems": [
        {
            "offerId": "CFQ7TTC0LH0Z:0001:CFQ7TTC0K18P",
            "quantity": 1,
            "lineItemNumber": 0,
            "PartnerIdOnRecord": "873452",
            "AdditionalPartnerIdsOnRecord":["4847383","873452"]
        }
    ],
    "billingCycle": "monthly"
}

Contoh tanggapan

{
    "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);

Sampel: Aplikasi pengujian konsol. Proyek: Kelas Sampel SDK Pusat Mitra: CreateOrder.cs

Permintaan layanan REST

Sintaksis permintaan

Metode Memohon URI
POST {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1

Parameter URI

Gunakan parameter jalur berikut untuk mengidentifikasi pelanggan.

Nama Tipe Diperlukan Description
id pelanggan string Yes ID pelanggan berformat GUID yang mengidentifikasi pelanggan.

Tajuk permintaan

Untuk informasi selengkapnya, lihat REST header di Partner Center.

Isi dari permintaan

Pesanan

Tabel ini menjelaskan properti Pesanan dalam isi permintaan.

Harta benda Tipe Diperlukan Description
id string Tidak. Pengidentifikasi pesanan yang disediakan setelah pembuatan pesanan berhasil.
referenceCustomerId string Tidak. Pengidentifikasi pelanggan.
billingCycle string Tidak. Menunjukkan frekuensi yang ditagih mitra untuk pesanan ini. Nilai yang didukung adalah nama anggota yang ditemukan di BillingCycleType. Defaultnya adalah "Bulanan" atau "OneTime" pada pembuatan pesanan. Bidang ini diterapkan setelah pembuatan pesanan berhasil.
lineItems array sumber daya OrderLineItem Yes Daftar item penawaran yang dibeli pelanggan termasuk kuantitas.
kode mata uang string Tidak. Baca-saja. Mata uang yang digunakan saat menempatkan pesanan. Diterapkan setelah pembuatan pesanan berhasil.
creationDate tanggalwaktu Tidak. Baca-saja. Tanggal pesanan dibuat, dalam format tanggal-waktu. Diterapkan setelah pembuatan pesanan berhasil.
status string Tidak. Baca-saja. Status pesanan. Nilai yang didukung adalah nama anggota yang ditemukan di OrderStatus.
links OrderLinks Tidak. Tautan sumber daya yang sesuai dengan Pesanan.
attributes ResourceAttributes Tidak. Atribut metadata yang sesuai dengan Pesanan.
PartnerOnRecordAttestationAccepted Boolean Yes Mengonfirmasi penyelesaian Pengesahan

OrderLineItem

Tabel ini menjelaskan properti OrderLineItem di isi permintaan.

Nota

Saat memeriksa keranjang melalui API, barang-barang diproses sesuai urutan mereka dimasukkan ke dalam keranjang. Pesanan dapat memengaruhi kelayakan untuk promosi dengan batasan New To Offer jika ada dua produk dengan jenis yang sama di keranjang, satu dengan ID promo dan yang lainnya tanpa ID promo (misalnya, dengan syarat yang berbeda). Pastikan untuk menempatkan item apa pun yang memenuhi syarat untuk promosi terlebih dahulu di keranjang jika Anda membeli beberapa item.

Nama Tipe Diperlukan Description
lineItemNumber int Yes Setiap item baris dalam koleksi mendapatkan nomor baris unik, menghitung dari 0 hingga hitungan-1.
offerId string Yes Pengidentifikasi penawaran. Pastikan ketersediaan penawaran adalah untuk segmen yang benar.
subscriptionId string Tidak. Pengidentifikasi langganan.
parentSubscriptionId string Tidak. Optional. ID langganan induk dalam penawaran add-on. Hanya berlaku untuk PATCH.
friendlyName string Tidak. Optional. Nama yang mudah diingat untuk langganan yang ditentukan oleh mitra untuk membantu memisahkan.
jumlah int Yes Jumlah lisensi untuk langganan berbasis lisensi.
customTermEndDate DateTime Tidak. Tanggal akhir jangka waktu penagihan pertama langganan baru.
partnerIdOnRecord string Tidak. Ketika penyedia tidak langsung menempatkan pesanan atas nama reseller tidak langsung, isi bidang ini dengan PartnerID dari reseller tidak langsung saja (tidak pernah ID penyedia tidak langsung). Ini memastikan akuntansi yang tepat untuk insentif.
provisioningContext String kamus<, string> Tidak. Informasi yang diperlukan untuk provisi untuk beberapa item dalam katalog. Properti provisioningVariables dalam SKU menunjukkan properti mana yang diperlukan untuk item tertentu dalam katalog.
links OrderLineItemLinks Tidak. Baca-saja. Tautan sumber daya yang sesuai dengan item baris Pesanan.
attributes ResourceAttributes Tidak. Atribut metadata yang sesuai dengan OrderLineItem.
renewsTo Array objek Tidak. Array sumber daya RenewsTo .
Pengesahan Diterima bool Tidak. Menunjukkan perjanjian untuk menawarkan atau kondisi sku. Diperlukan hanya untuk penawaran atau sku di mana SkuAttestationProperties atau OfferAttestationProperties enforceAttestation adalah True.
AdditionalPartnerIdsOnRecord String Tidak. Ketika penyedia tidak langsung menempatkan pesanan atas nama reseller tidak langsung, isi bidang ini dengan PartnerID dari Reseller tidak langsung tambahan saja (tidak pernah ID penyedia tidak langsung). Insentif tidak berlaku untuk pengecer lain ini. Hanya maksimal lima Reseller Tidak Langsung yang dapat dimasukkan. Nilai ini hanya berlaku mitra yang bertransaksi dalam negara/wilayah Eropa.
scheduledNextTermInstructions objek Tidak. Menentukan instruksi istilah berikutnya untuk langganan uji coba. Mitra dapat menentukan durasi jangka waktu, frekuensi penagihan, dan jumlah yang dimiliki langganan berbayar terkait saat perpanjangan.

Nota

PartnerIdOnRecord hanya boleh disediakan ketika penyedia tidak langsung melakukan pemesanan atas nama penjual tidak langsung. Ini digunakan untuk menyimpan PartnerID dari reseller tidak langsung saja (tidak pernah ID penyedia tidak langsung).

Perpanjang Ke

Tabel ini menjelaskan properti RenewsTo di isi permintaan untuk penawaran Microsoft Marketplace.

Harta benda Tipe Diperlukan Description
termDuration string Tidak. Representasi ISO 8601 dari durasi jangka waktu perpanjangan. Nilai yang didukung saat ini adalah P1M (1 bulan) dan P1Y (1 tahun).
ScheduledNextTermInstructions

Tabel ini menjelaskan properti scheduledNextTermInstructions di badan permintaan untuk penawaran uji coba berbasis lisensi New Commerce Experience (NCE). Jika tidak ada nilai yang ditentukan, uji coba diperpanjang menjadi langganan berbayar dengan jangka waktu tahunan, penagihan bulanan, dan 25 lisensi.

Harta benda Tipe Diperlukan Description
produk array Tidak. Array yang menentukan penawaran langganan uji coba diperpanjang ke dalam dan istilah dan frekuensi penagihan yang dimiliki langganan berbayar.
jumlah int Tidak. Kuantitas lisensi yang dimiliki langganan berbayar yang sesuai setelah penawaran uji coba diperpanjang.
Produk

Tabel ini menjelaskan properti productTerm dalam isi permintaan untuk penawaran uji coba berbasis lisensi NCE. Jika tidak ada nilai yang ditentukan dalam array ini, uji coba diperpanjang menjadi langganan berbayar dengan jangka waktu tahunan, tagihan bulanan.

Harta benda Tipe Diperlukan Description
ID produk string Tidak. GUID yang diformat untuk mewakili produk dari langganan berbayar yang akan diteruskan oleh masa uji coba.
skuId string Tidak. GUID yang diformat untuk mewakili SKU langganan berbayar ke mana uji coba diperbarui.
availabilityId string Tidak. GUID yang diformat untuk mewakili ketersediaan langganan berbayar yang akan diperbarui oleh uji coba.
billingCycle string Tidak. Frekuensi penagihan yang dimiliki langganan berbayar yang sesuai setelah penawaran uji coba diperpanjang.
termDuration string Tidak. Jangka waktu langganan berbayar setelah perpanjangan penawaran uji coba.

Permintaan contoh

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
}

Respons terhadap REST

Jika berhasil, metode mengembalikan sumber daya Pesanan dalam isi respons.

Jika pesanan berisi satu atau beberapa langganan, nilai ID langganan masing-masing hanya muncul di respons REST jika langganan yang sesuai disediakan pada saat panggilan API. Langganan provisi terjadi secara asinkron, dan oleh karena itu, nilai ID langganan mungkin tidak selalu terlihat dalam respons REST dari panggilan Buat Pesanan. Namun, setelah langganan masing-masing disediakan, nilai ID langganan mereka dapat diakses melalui panggilan Get Orders dan Get Order by ID API.

Kode kesalahan dan keberhasilan respons

Setiap respons dilengkapi dengan kode status HTTP yang menunjukkan keberhasilan atau kegagalan dan informasi penelusuran kesalahan lainnya. Gunakan alat pelacakan jaringan untuk membaca kode ini, jenis kesalahan, dan parameter lainnya. Untuk daftar lengkapnya, lihat Kode kesalahan Pusat Mitra.

Contoh tanggapan

{
  "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"
  }
}