Bagikan melalui


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 Azure hanya berlaku untuk:

  • Pusat Mitra

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

Prasyarat

  • Kredensial seperti yang dijelaskan dalam autentikasi Pusat Mitra. 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 tambahan, lihat sampel Sampel Permintaan dan Respons berikut:

Contoh permintaan

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

Minta sintaks

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

Parameter URI

Gunakan parameter jalur berikut untuk mengidentifikasi pelanggan.

Nama Tipe Wajib Deskripsi
id pelanggan string Ya ID pelanggan berformat GUID yang mengidentifikasi pelanggan.

Header permintaan

Untuk informasi selengkapnya, lihat Header REST Pusat Mitra.

Isi permintaan

Pesanan

Tabel ini menjelaskan properti Pesanan dalam isi permintaan.

Properti Tipe Wajib Deskripsi
id string No Pengidentifikasi pesanan yang disediakan setelah pembuatan pesanan berhasil.
referenceCustomerId string No Pengidentifikasi pelanggan.
billingCycle string No 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 Ya Daftar item penawaran yang dibeli pelanggan termasuk kuantitas.
currencyCode string No Baca-saja. Mata uang yang digunakan saat menempatkan pesanan. Diterapkan setelah pembuatan pesanan berhasil.
creationDate datetime No Baca-saja. Tanggal pesanan dibuat, dalam format tanggal-waktu. Diterapkan setelah pembuatan pesanan berhasil.
status string No Baca-saja. Status pesanan. Nilai yang didukung adalah nama anggota yang ditemukan di OrderStatus.
links OrderLinks No Tautan sumber daya yang sesuai dengan Pesanan.
Atribut ResourceAttributes No Atribut metadata yang sesuai dengan Pesanan.
PartnerOnRecordAttestationAccepted Boolean Ya Mengonfirmasi penyelesaian Pengesahan

OrderLineItem

Tabel ini menjelaskan properti OrderLineItem di isi permintaan.

Catatan

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).

Nama Tipe Wajib Deskripsi
lineItemNumber int Ya Setiap item baris dalam koleksi mendapatkan nomor baris unik, menghitung dari 0 hingga hitungan-1.
offerId string Ya Pengidentifikasi penawaran. Pastikan availabilitas penawaran adalah untuk segmen yang benar.
subscriptionId string No Pengidentifikasi langganan.
parentSubscriptionId string No Opsional. ID langganan induk dalam penawaran add-on. Hanya berlaku untuk PATCH.
friendlyName string No Opsional. Nama yang mudah diingat untuk langganan yang ditentukan oleh mitra untuk membantu memisahkan.
kuantitas int Ya Jumlah lisensi untuk langganan berbasis lisensi.
customTermEndDate DateTime No Tanggal akhir jangka waktu penagihan pertama langganan baru.
partnerIdOnRecord string No 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> No 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 No Baca-saja. Tautan sumber daya yang sesuai dengan item baris Pesanan.
Atribut ResourceAttributes No Atribut metadata yang sesuai dengan OrderLineItem.
renewsTo Array objek No Array sumber daya RenewsTo .
Pengesahan Diterima bool No Menunjukkan perjanjian untuk menawarkan atau kondisi sku. Diperlukan hanya untuk penawaran atau sku di mana SkuAttestationProperties atau OfferAttestationProperties enforceAttestation adalah True.
AdditionalPartnerIdsOnRecord String No 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 tambahan ini. Hanya maksimal 5 Reseller Tidak Langsung yang dapat dimasukkan. Ini hanya mitra yang berlaku yang bertransaksi dalam negara/wilayah UE / EFTA.
Perpanjang Ke

Tabel ini menjelaskan properti RenewsTo dalam isi permintaan.

Properti Tipe Wajib Deskripsi
termDuration string No Representasi ISO 8601 dari durasi jangka waktu perpanjangan. Nilai yang didukung saat ini adalah P1M (1 bulan) dan P1Y (1 tahun).

Contoh permintaan

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
    }
  ]
}

Respons REST

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

Jika pesanan berisi satu atau beberapa langganan, nilai ID langganan masing-masing hanya akan muncul di respons REST jika langganan yang sesuai telah 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 tambahan. Gunakan alat pelacakan jaringan untuk membaca kode ini, jenis kesalahan, dan parameter tambahan. Untuk daftar lengkapnya, lihat Kode kesalahan Pusat Mitra.

Contoh tanggapan

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