Поделиться через


Создание заказа для клиента непрямого торгового посредника

Как создать заказ для клиента косвенного торгового посредника.

Необходимые компоненты

  • Учетные данные, описанные в статье о проверке подлинности в Центре партнеров. Этот сценарий поддерживает только проверку подлинности с использованием учетных данных приложений и пользователей.

  • Идентификатор клиента (customer-tenant-id). Если вы не знаете идентификатор клиента, его можно найти в Центре партнеров, выбрав рабочую область "Клиенты" , затем клиент из списка клиентов, а затем учетная запись. На странице "Учетная запись клиента" найдите идентификатор Майкрософт в разделе "Сведения о учетной записи клиента". Идентификатор Майкрософт совпадает с идентификатором клиента (customer-tenant-id).

  • Идентификатор предложения для покупки элемента.

  • Идентификатор клиента косвенного торгового посредника.

C#

Чтобы создать заказ для клиента косвенного торгового посредника:

  1. Получите коллекции непрямых торговых посредников, у которых есть отношения с партнером, вошедшим в систему.

  2. Получите локальную переменную для элемента в коллекции, которая соответствует идентификатору косвенного торгового посредника. Этот шаг помогает получить доступ к свойству MpnId торгового посредника при создании заказа.

  3. Создайте экземпляр объекта Order и задайте свойству ReferenceCustomerID идентификатор клиента для записи клиента.

  4. Создайте список объектов OrderLineItem и назначьте список свойству LineItems заказа. В каждой позиции в строке заказа содержатся сведения о покупке для одного предложения. Обязательно заполните свойство PartnerIdOnRecord в каждом элементе строки с помощью PartnerID косвенного торгового посредника. Необходимо наличие по крайней мере одной позиции в строке заказа.

  5. Получите интерфейс для заказа операций, вызвав метод IAggregatePartner.Customers.ById с идентификатором клиента для идентификации клиента, а затем извлеките интерфейс из свойства Orders.

  6. Вызовите метод Create или CreateAsync, чтобы создать заказ.

Пример C#

// IAggregatePartner partnerOperations;
// string customerId;
// string offerId;
// string indirectResellerId;

// Get the indirect resellers with a relationship to the signed-in partner.
var indirectResellers = partnerOperations.Relationships.Get(PartnerRelationshipType.IsIndirectCloudSolutionProviderOf);

// Find the matching reseller in the collection.
var selectedIndirectReseller = (indirectResellers != null && indirectResellers.Items.Any()) ?
    indirectResellers.Items.FirstOrDefault(reseller => reseller.Id.Equals(indirectResellerId, StringComparison.OrdinalIgnoreCase)) :
    null;

// Prepare the order and populate the PartnerIdOnRecord with the reseller's Partner Id.
var order = new Order()
{
    ReferenceCustomerId = customerId,
    LineItems = new List<OrderLineItem>()
    {
        new OrderLineItem()
        {
            OfferId = offerId,
            FriendlyName = "New offer purchase.",
            Quantity = 5,
            PartnerIdOnRecord = selectedIndirectReseller != null ? selectedIndirectReseller.MpnId : null
        }
    }
};

// Place the order.
var createdOrder = partnerOperations.Customers.ById(customerId).Orders.Create(order);

Пример: проект тестового консольного приложения: класс примеров пакета SDK Центра партнеров: PlaceOrderForCustomer.cs

Запрос REST

Синтаксис запроса

Способ URI запроса
POST {baseURL}/v1/customers/{customer-id}/orders HTTP/1.1

Параметры универсального кода ресурса (URI)

Используйте приведенный ниже параметр пути, чтобы определить клиента.

Имя. Type Обязательно Описание
customer-id строка Да Отформатированная строка GUID, определяющая клиента.

Заголовки запросов

Дополнительные сведения см. в статье о заголовках REST Центра партнеров.

Текст запроса

Порядок

В этой таблице описываются свойства order в тексте запроса.

Имя. Type Обязательно Описание
id строка Нет Идентификатор заказа, предоставленный при успешном создании заказа.
referenceCustomerId строка Да Идентификатор клиента.
billingCycle строка Нет Частота, с которой партнеру выставляются счета за заказ. Значение по умолчанию — "Ежемесячно" и применяется при успешном создании заказа. Поддерживаемые значения: имена участников в BillingCycleType. Примечание. Функция ежегодного выставления счетов пока недоступна. Поддержка ежегодного выставления счетов ожидается в ближайшее время.
lineItems массив объектов Да Массив ресурсов OrderLineItem.
creationDate строка Нет Дата создания заказа в формате "дата-время". Применено к успешному созданию заказа.
атрибутов объект No Содержит ObjectType: Order

OrderLineItem

В этой таблице описываются свойства OrderLineItem в тексте запроса.

Имя. Type Обязательно Описание
lineItemNumber INT Да Для каждой позиции в строке коллекции имеется уникальный номер строки от 0 до "число-1".
offerId строка Да Идентификатор предложения.
subscriptionId строка Нет Идентификатор подписки.
parentSubscriptionId строка Нет Необязательно. Идентификатор родительской подписки в дополнительном предложении. Применяется только к PATCH.
friendlyName строка Нет Необязательно. Понятное имя подписки, определенной партнером, чтобы помочь диамбигуировать.
quantity INT Да Количество лицензий для подписки на основе лицензий.
partnerIdOnRecord строка Нет Если косвенный поставщик помещает заказ от имени косвенного торгового посредника, заполните это поле только партнером косвенного торгового посредника (никогда не идентификатор косвенного поставщика). Это гарантирует правильное ведение учета по программам поощрения. Сбой предоставления торговых посредников PartnerID не приводит к сбою заказа. Однако торговый посредник не записывается, и в результате расчеты стимулов могут не включать продажу.
атрибутов объект No Содержит ObjectType:"OrderLineItem".

Пример запроса

POST https://api.partnercenter.microsoft.com/v1/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/orders HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 02109f46-3ff2-4be4-9f37-b2eb6d58d542
MS-CorrelationId: 85195ae6-3de5-4978-abd4-7be2fbfe4c84
X-Locale: en-US
Content-Type: application/json
Host: api.partnercenter.microsoft.com
Content-Length: 410
Expect: 100-continue

{
    "Id": null,
    "ReferenceCustomerId": "c501c3c4-d776-40ef-9ecf-9cefb59442c1",
    "BillingCycle": "unknown",
    "LineItems": [{
            "LineItemNumber": 0,
            "OfferId": "DB2E705F-B82A-4024-A3D5-D88E12F2DB35",
            "SubscriptionId": null,
            "ParentSubscriptionId": null,
            "FriendlyName": "New offer purchase.",
            "Quantity": 5,
            "PartnerIdOnRecord": "4847383",
            "Attributes": {
                "ObjectType": "OrderLineItem"
            }
        }
    ],
    "CreationDate": null,
    "Attributes": {
        "ObjectType": "Order"
    }
}

Ответ REST

В случае успешного выполнения текст ответа содержит заполненный ресурс Order .

Коды успешного выполнения и ошибок в ответе

Каждый ответ сопровождается кодом состояния HTTP, обозначающим успешное или неудачное выполнение, и дополнительными сведениями для отладки. Используйте средство трассировки сети, чтобы просматривать этот код, тип ошибки и дополнительные параметры. Полный список см. в разделе "Коды ошибок Центра партнеров".

Пример ответа

HTTP/1.1 201 Created
Content-Length: 831
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 85195ae6-3de5-4978-abd4-7be2fbfe4c84
MS-RequestId: 02109f46-3ff2-4be4-9f37-b2eb6d58d542
MS-CV: Nd3Oum/L5EywtKQK.0
MS-ServerId: 020021921
Date: Mon, 10 Apr 2017 23:02:24 GMT

{
    "id": "3eddcac6-63b2-4c40-b0b6-f47e18301492",
    "referenceCustomerId": "c501c3c4-d776-40ef-9ecf-9cefb59442c1",
    "billingCycle": "monthly",
    "lineItems": [{
            "lineItemNumber": 0,
            "offerId": "DB2E705F-B82A-4024-A3D5-D88E12F2DB35",
            "subscriptionId": "42226ED6-070A-4E0F-B80C-4CDFB3E97AA7",
            "friendlyName": "New offer purchase.",
            "quantity": 5,
            "partnerIdOnRecord": "4847383",
            "links": {
                "subscription": {
                    "uri": "/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/subscriptions/42226ED6-070A-4E0F-B80C-4CDFB3E97AA7",
                    "method": "GET",
                    "headers": []
                }
            }
        }
    ],
    "creationDate": "2017-04-10T16:02:25.983-07:00",
    "links": {
        "self": {
            "uri": "/customers/c501c3c4-d776-40ef-9ecf-9cefb59442c1/orders/3eddcac6-63b2-4c40-b0b6-f47e18301492",
            "method": "GET",
            "headers": []
        }
    },
    "attributes": {
        "etag": "eyJpZCI6IjNlZGRjYWM2LTYzYjItNGM0MC1iMGI2LWY0N2UxODMwMTQ5MiIsInZlcnNpb24iOjF9",
        "objectType": "Order"
    }
}