# Перепродажа расширений

## Продажа лицензий на Plesk вместе с лицензиями на расширения

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

Подробности реализации

1. Необходимо, чтобы Plesk и расширения, которые вы хотите перепродавать, были доступны как товары в вашем интернет-магазине.

2. Когда клиент делает заказ, вам надо обратиться в KA через KA Partner API и запросить лицензии для приобретаемых товаров.

3. KA создаст запрашиваемые лицензии и отправит вам единый код активации для этих лицензий. Обратите внимание, что в KA есть две версии Partner API: v1 и v3.

   1. Partner API v1 (устаревшая версия, не рекомендуется):

      1. Позволяет запрашивать основной ключ для Plesk и несколько дополнительных ключей для расширений в одном вызове (смотрите createKey()).

      2. Использует единый код активации для основной лицензии на Plesk и дополнительных лицензий.

   2. Partner API v3 (рекомендуется):

      1. Позволяет запрашивать только один ключ (либо основной ключ для Plesk, либо дополнительный ключ для расширения) в одном вызове (смотрите Creating a License Key).

      2. Использует единый код активации для основной лицензии на Plesk и дополнительных лицензий (дополнительные ключи, запрашиваемые в отдельных вызовах API, присоединяются к основной лицензии. Код активации для основной лицензии на Plesk активирует также и присоединенные дополнительные ключи).

4. После того как ваш магазин получит код активации, вы можете, например, выдать код клиенту (через интерфейс интернет-магазина или по электронной почте). Также (предпочтительный вариант) вы можете активировать лицензии, запустив команду CLI на том экземпляре Plesk, который вы создали для клиента. Вы можете активировать лицензии через CLI, используя утилиту “license” (Plesk для Linux, Plesk для Windows).

## Встроенные продажи расширений

Используйте этот метод, если вы хотите продавать расширения в вашем онлайн-магазине дополнительно к уже предоставленным экземплярам Plesk. Когда один из ваших клиентов нажимает кнопку “Купить сейчас” в каталоге расширений в Plesk, он автоматически перенаправляется в интернет-магазин, где может завершить заказ.

### Интеграция с KA

1. Когда клиент делает заказ, вам надо обратиться в KA через KA Partner API и запросить лицензии для приобретаемого расширения. Передайте номер основного ключа Plesk в качестве аргумента в вызове API.

2. KA создаст запрашиваемую лицензию на расширение и присоединит ее к основной лицензии на Plesk.

3. Вы можете использовать либо Partner API v1, либо v3 для запроса лицензий:

   1. Partner API v1 (устаревшая версия, не рекомендуется): Создайте лицензию на расширение и присоедините ее к основной лицензии на Plesk в одном вызове (смотрите описание createKey())

   2. Partner API v3 (рекомендуется): Создайте лицензию на расширение и присоедините ее к основной лицензии на Plesk в одном вызове (смотрите главу «Creating a License Key»)

После того, как вы заказали лицензию на расширение через Partner API, она присоединяется к основной лицензии на Plesk. Лицензия на расширение будет установлена на сервере Plesk в следующий раз, когда Plesk подключится к KA, чтобы обновить основную лицензию на Plesk (обычно это занимает от дня до месяца). Клиент также может выполнить следующие шаги, чтобы установить лицензию на расширение сразу (это можно сделать, например, в интерфейсе вашего интернет-магазина):

1. Click Tools & Settings in the Navigation Pane.

2. Нажать Информация о лицензии (в разделе Plesk).

3. Нажать Получить ключи, чтобы установить новый лицензионный ключ в Plesk.

### Перенаправление клиентов в ваш интернет-магазин

По умолчанию, когда клиент нажимает кнопку “Купить сейчас” в каталоге расширений в Plesk, он переходит в интернет-магазин Plesk, а не в ваш интернет-магазин. Вы можете изменить это поведение, указав имя хоста вашего интернет-магазина в файле panel.ini. Как только вы измените имя хоста интернет-магазина, все ссылки “Купить сейчас” и другие возможные ссылки на дополнительные предложения, отображаемые в интерфейсе расширений, будут вести напрямую в ваш интернет-магазин.

Чтобы изменить URL-адрес интернет-магазина, открываемого по ссылке «Купить сейчас», откройте для редактирования файл `panel.ini` и добавьте следующую строку в раздел `[extensions]`:

    [extensions]
    buyUrl = "https://shop.com"

где «shop.com» – доменное имя вашего интернет-магазина.

Вот пример того, как это работает:

- Исходный URL-адрес, используемый расширением:

      https://go.plesk.com/buy-plesk-ext/some-extension-name?kn=PLESK.12345678.0001&token=U29NZVVuaXF1ZUdVSUQxMjM%3D&product-id=SomeProductID

  Измененный URL-адрес, используемый расширением после того, как вы указали имя хоста вашего интернет-магазина в `panel.ini`: `https://shop.com/?extension-id=some-extension-name&kn=PLESK.12345678.0001&token=U29NZVVuaXF1ZUdVSUQxMjM%3D&product-id=SomeProductID`

Процесс покупки лицензии будет выглядеть так же, как для моделей лицензирования «Единое предложение» и «Разные предложения»:

Теперь каждый раз, когда клиент нажимает кнопку “Купить сейчас”, он будет перенаправлен в ваш интернет-магазин. Удостоверьтесь в том, что ваш интернет-магазин может обрабатывать параметры, передаваемые в измененных URL-адресах:

Имя параметра | Пример | Описание
--- | --- | ---
`extension-id` | `extension-id=some-extension-name` | Идентификатор расширения. Вы можете просмотреть список расширений и их идентификаторов (“кодов”) здесь. Выберите подходящую константу Partner API для запрашиваемого расширения и включите ее в вызов Partner API. Список констант Partner API доступен здесь: Partner API v1 (Excel, JSON) Partner API v3 (Excel, JSON) Пожалуйста, имейте в виду, что “Extension ID” соответствует `extension-id` в файлах формата Excel, а “extensionId” соответствует `extension-id` в файлах формата JSON.
`kn` | `kn=PLSK.12345678.0001` | Номер основного ключа Plesk. Передайте этот номер ключа как номер родительского ключа (parent key) в вызове Partner API.
`token` | `token=U29NZVVuaXF1ZUdVSUQxMjM%3D` | Необязательные параметры. Требуются только для модели лицензирования “Индивидуальные предложения”. В этой модели лицензирования владельцы сайтов могут покупать продукты и услуги самостоятельно по необходимости. Это делается путем добавления в интерфейс Plesk ссылки, которая позволяет конечным пользователям делать заказы. Сначала конечный пользователь выбирает нужный сайт, затем выбирает нужный продукт среди продуктов, предлагаемых расширением, а затем переходит в интернет-магазин для завершения заказа. Параметр `product-id` содержит идентификатор продукта, выбранного клиентом. Выберите подходящую константу Partner API для запрашиваемого расширения и продукта и включите ее в вызов Partner API. Чтобы найти подходящую константу Partner API по extension-id и product-id, используйте следующие ссылки: Partner API v1 (Excel, JSON) Partner API v3 (Excel, JSON) Пожалуйста, имейте в виду, что значения “Extension ID” и “Extension Product ID” соответствуют значениям `extension-id` и `product-id` в файлах формата Excel, а значения “extensionId” и “extensionProductId” соответствуют значениям `extension-id` и `product-id` в файлах формата JSON. Параметр `token` генерируется самим расширением и содержит уникальный идентификатор заказа. Этот идентификатор необходим расширению, чтобы отслеживать статус заказа на стороне независимого поставщика (ISV). Этот параметр должен обрабатываться следующим образом: Сначала его необходимо декодировать в соответствии с механизмом URL-кодирования. Затем его необходимо декодировать в соответствии с кодировкой BASE64. Затем его надо передать в KA в вызове Partner API: Partner API v1: Используйте параметр “guid” в createKey() call. Partner API v3: Используйте параметр “activationInfo” в License Key Structure (Full).
`product-id` | `product-id=SomeProductID` |

Вот как выглядит процесс покупки лицензии для модели лицензирования «Индивидуальные предложения»:

Примечание

Эта функциональность затрагивает только те расширения, продаваемые Plesk, которые используют “go.plesk.com” в качестве целевого имени хоста. Если расширение продается независимым поставщиком напрямую, используемые в нем ссылки “Купить сейчас” и другие возможные ссылки на дополнительные приложения не будут затронуты.

### Как задать набор расширений, которые вы хотите показывать и продавать

Как только вы изменили URL-адрес для ссылок “Купить сейчас” (как описано выше), все платные расширения, включая те, что будут добавлены через каталог расширений в будущем, будут ссылаться на ваш магазин, даже если вы их ещё не настроили. Вы можете сделать так, чтобы ваши клиенты видели только те платные расширения, которые вы готовы продавать, настроив интеллектуальный прокси-сервер для каталога расширений Plesk. Этот прокси-сервер будет получать данные из каталога расширений, отфильтровывать расширения, которые вы не готовы продавать, и отправлять измененные данные на ваши установки Plesk.

Подробности реализации

1. Установите сервер (физический или виртуальный), на котором будет работать прокси-сервер.

2. Загрузите скрипт для прокси-сервера на этот сервер. Эта ссылка содержит инструкции, объясняющие, как развертывать скрипт и использовать его.

3. Настройте прокси-сервер так, чтобы через него проходили только те платные расширения, которые должны быть видны на ваших серверах Plesk. Этот прокси-сервер работает как белый список – вам надо указать идентификаторы платных расширений, который надо отображать в Plesk, все остальное не будет видно.

   Примечание

   Прокси-сервер действует только на те расширения, у которых кнопка “Купить сейчас” ведет на https://go.plesk.com. Бесплатные расширения и расширения, у которых кнопка “Купить сейчас” ведет в другое место, не учитываются при работе прокси-сервера. Они продолжат быть видимыми в каталоге расширений на ваших серверах Plesk независимо от настроек прокси-сервера.

4. Измените URL-адрес каталога расширений на всех ваших серверах Plesk так, чтобы он указывал на адрес прокси-сервера. Для этого добавьте следующую строку в файл panel.ini:

       [extensions]
       catalog.url = http://<proxy-address>:8080

5. Когда в каталоге расширений станет доступно новое расширение, и вы настроите свой интернет-магазин на его продажу, измените настройки прокси-сервера, добавив идентификатор соответствующего расширения, чтобы это расширение проходило через прокси-сервер и было доступно вашим клиентам. Обратите внимание, что данные каталога кэшируются на серверах Plesk. Новые расширения появятся не сразу.

Приведенная ниже схема показывает, как можно использовать прокси-скрипт с каталогом расширений: