Подтверждение принятия клиентом условий Клиентского соглашения Майкрософт с помощью API Центра партнеров

Область применения: Центр партнеров

Вне области применения: Центр партнеров, управляемый 21Vianet | Центр партнеров для Microsoft Cloud for US Government

Центр партнеров поддерживает проверку принятия клиентом условий Клиентского соглашения Майкрософт только в общедоступном облаке Майкрософт.

В этой статье объясняется, как подтвердить или проверить принятие клиентом условий Клиентского соглашения Майкрософт.

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

  • Если вы используете SDK Центра партнеров для .NET, требуется версия 1.14 или более поздняя.

Важно!

По состоянию на июнь 2023 г. последняя версия пакета SDK для .NET для Центра партнеров 3.4.0 теперь архивируется. Вы можете скачать выпуск пакета SDK из GitHub вместе с файлом чтения, содержащим полезные сведения.

Партнерам рекомендуется продолжать использовать REST API Центра партнеров.

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

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

  • Дата (dateAgreed) принятия клиентом условий Клиентского соглашения Майкрософт.

  • Сведения о пользователе из организации клиента, который принял Клиентское соглашение Майкрософт. В том числе:

    • Имя
    • Фамилия
    • Адрес электронной почты
    • Номер телефона (необязательно)
  • Если для клиента будут изменены следующие значения, в Центре партнеров можно будет создать другое соглашение для этого клиента: имя, фамилия, адрес электронной почты, номер телефона. В других случаях из-за дублирования сведений о клиенте партнеры получат следующий код ошибки:

{
"code": 600061,
"message": "A partner confirmed agreement already exists for the customer.",
"description": "A partner confirmed agreement already exists for the customer.",
"errorName": "PartnerConfirmedAgreementAlreadyExists",
"isRetryable": false,
"parameters": {},
"errorMessageExtended": "InternalErrorCode=600061"
}

.NET

Чтобы подтвердить или проверить принятие клиентом условий Клиентского соглашения Майкрософт, сделайте следующее:

  1. Получите метаданные для Клиентского соглашения Майкрософт. Для этого требуется значение templateId Клиентского соглашения Майкрософт. Дополнительные сведения см. в статье Получение метаданных для Клиентского соглашения Майкрософт.

    // IAggregatePartner partnerOperations;
    
    string agreementType = "MicrosoftCustomerAgreement";
    
    var microsoftCustomerAgreementDetails = partnerOperations.AgreementDetails.ByAgreementType(agreementType).Get().Items.Single();
    
  2. Создайте объект Agreement с информацией о подтверждении.

  3. Примените коллекцию IAgreggatePartner.Customers и вызовите метод ById с указанным значением customer-tenant-id.

  4. Укажите свойство Agreements, а затем вызовите метод Create или CreateAsync.

    // string selectedCustomerId;
    
    var agreementToCreate = new Agreement
    {
        DateAgreed = DateTime.UtcNow,
        TemplateId = microsoftCustomerAgreementDetails.TemplateId,
        PrimaryContact = new Contact
        {
            FirstName = "Tania",
            LastName = "Carr",
            Email = "someone@example.com",
            PhoneNumber = "1234567890"
        }
    };
    
    Agreement agreement = partnerOperations.Customers.ById(selectedCustomerId).Agreements.Create(agreementToCreate);
    

Полный пример этой процедуры представлен в классе CreateCustomerAgreement проекта тестового консольного приложения.

Запрос REST

Чтобы подтвердить или проверить принятие клиентом условий Клиентского соглашения Майкрософт, сделайте следующее:

  1. Получите метаданные для Клиентского соглашения Майкрософт. Для этого требуется значение templateId Клиентского соглашения Майкрософт. Дополнительные сведения см. в статье Получение метаданных для Клиентского соглашения Майкрософт.

  2. Создайте ресурс Agreement, чтобы проверить, принял ли клиент условия Клиентского соглашения Майкрософт. Для этого используется следующий синтаксис запроса REST.

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

Метод URI запроса
POST {baseURL}/v1/customers/{customer-tenant-id}/agreements HTTP/1.1

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

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

Имя. Тип Обязательное поле Description
customer-tenant-id GUID Да Это значение customer-tenant-id в формате GUID, то есть идентификатор для определения клиента.

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

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

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

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

Имя. Тип Описание
Соглашение объект Сведения, предоставленные партнером для подтверждения принятия клиентом условий Клиентского соглашения Майкрософт.

Соглашение

В этой таблице описаны минимально необходимые поля для создания ресурса Agreement.

Свойство Тип Описание
primaryContact Контактные данные Сведения о пользователе из организации клиента, который принял Клиентское соглашение Майкрософт, в том числе: firstName, lastName, email и phoneNumber (необязательно).
dateAgreed Строка в формате даты и времени UTC Дата принятия соглашения клиентом.
templateId строка Уникальный идентификатор типа соглашения, принятого клиентом. Чтобы получить templateId для Клиентского соглашения Майкрософт, можете извлечь метаданные соглашения для Клиентского соглашения Майкрософт. Дополнительные сведения см. в статье Получение метаданных для Клиентского соглашения Майкрософт.
type строка Тип соглашения, принятого клиентом. Используйте значение MicrosoftCustomerAgreement, если клиент принял условия Клиентского соглашения Майкрософт.

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

POST https://api.partnercenter.microsoft.com/v1/customers/14876998-c0dc-46e6-9d0c-65a57a6c32ec/agreements HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json
MS-RequestId: 94e4e214-6b06-4fb7-96d1-94d559f9b47f
MS-CorrelationId: ab993325-1605-4cf4-bac4-fb584142a31b
{
    "primaryContact": {
        "firstName": "Tania",
        "lastName": "Carr",
        "email": "someone@example.com",
        "phoneNumber": "1234567890"
    },
    "templateId": "117a77b0-9360-443b-8795-c6dedc750cf9",
    "dateAgreed": "2018-06-14T00:00:00.000Z",
    "type": "MicrosoftCustomerAgreement"
}

Ответ REST

Если запрос выполнен успешно, этот метод возвращает ресурс Agreement.

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

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

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

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

HTTP/1.1 201 Created
Content-Length: 261
Content-Type: application/json
MS-RequestId: 94e4e214-6b06-4fb7-96d1-94d559f9b47f
MS-CorrelationId: ab993325-1605-4cf4-bac4-fb584142a31b
{
    "userId": "3d6f2c09-eb40-48ca-a4b3-d24c9c007531",
    "primaryContact": {
        "firstName": "Tania",
        "lastName": "Carr",
        "email": "someone@example.com",
        "phoneNumber": "1234567890"
    },
    "templateId": "117a77b0-9360-443b-8795-c6dedc750cf9",
    "dateAgreed": "2018-06-14T00:00:00.000Z",
    "type": "MicrosoftCustomerAgreement"
}