Как настроить тарифный план со специальными атрибутами

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Введение

В некоторых случаях счетчики транзакций должны быть основаны на переменной или пользовательском значении. Например, вам может понадобиться:

  • Взимать с разработчиков переменную сумму на основе значения, указанного в сообщении вызова API. Например, вы можете взимать плату с разработчиков приложений в зависимости от количества байтов, переданных в запросе к API.
  • Объединяйте несколько вызовов API в одну транзакцию.

С помощью тарифных планов со специальными атрибутами можно определить значение в сообщении вызова API, которое будет использоваться в качестве счетчика для расчета количества транзакций и списаний.

Поддерживаются следующие тарифные планы со специальными атрибутами:

  • Прейскурант с настраиваемым атрибутом
  • Настраиваемое уведомление с настраиваемым атрибутом

Для каждого тарифного плана можно задать не более 10 специальных атрибутов.

Как рассчитываются настраиваемые атрибуты

Как значение специального атрибута учитывается при подсчете транзакций и списании средств в рамках тарифного плана, зависит от модели оплаты. Сводная информация приведена в таблице ниже.

Модель зарядки Расчет настраиваемых атрибутов
Фиксированная ставка и ставка с учетом объема

custom attribute number * rate = charge to developer

При фиксированной ставке номер настраиваемого атрибута становится количеством транзакций, которое умножается на ставку. В случае с многоуровневой ценой количество транзакций в диапазоне увеличивается на число, указанное в настраиваемом атрибуте, и разработчик платит за это количество транзакций. Например, если значение специального атрибута в сообщении равно 10, то с разработчика взимается плата за 10 транзакций, и 10 транзакций добавляются к текущему количеству транзакций. Если у разработчика осталось всего шесть транзакций в текущем диапазоне, то шесть умножается на ставку для этого диапазона. Остальные 4 ГБ переносятся в следующий диапазон и умножаются на его тариф.

Если в тарифном плане с диапазонами объема последний диапазон имеет ограничение (не является неограниченным) и транзакция превышает это ограничение, происходят два события:

Bundles

Поскольку пакеты оплачиваются по группам, а не по транзакциям, расчет выполняется следующим образом:

custom attribute number = amount added to bundle count

Например, если номер настраиваемого атрибута в сообщении равен 10, то к количеству транзакций, используемых в пакете, будет добавлено 10. Если в текущем наборе у разработчика осталось всего шесть транзакций, то набор будет заполнен, а счетчик следующего набора увеличится на четыре. Если следующий пакет есть, с вас будет списана плата за него.

Если у последнего пакета есть лимит (не "без ограничений") и транзакция превышает этот лимит, происходят два события:

Настраиваемые уведомления

Для регулируемого уведомления выполняется следующий расчет:

custom attribute number = amount added to transaction count

Например, если номер настраиваемого атрибута в сообщении равен 10, то 10 добавляется к общему количеству транзакций.

Где тарифный план получает значение пользовательского атрибута

Правила регистрации транзакций (в пакете продуктов API) указывают монетизации, где в сообщении искать значение специального атрибута. Настраиваемый атрибут определяется в разделе "Настраиваемые атрибуты" правил записи транзакций для пакета продуктов API.

Затем вы сможете выбрать этот настраиваемый атрибут в тарифном плане после того, как создадите пакет продуктов API, содержащий правило регистрации транзакций с определенным настраиваемым атрибутом.

Вот как это работает:

  1. Определите настраиваемые атрибуты при добавлении продукта API.
  2. Создайте набор продуктов API, в который входит продукт.
    В правилах регистрации транзакций для пакета продуктов API добавьте настраиваемые атрибуты, которые будут использоваться для определения тарифных планов.
  3. Создайте тарифный план типа "Тарифная сетка" или "Регулируемое уведомление" для пакета API-продуктов и укажите параметр пользовательской оценки.

На рисунке ниже показана связь между настраиваемым атрибутом, определенным в правилах регистрации транзакций, и конфигурацией тарифного плана. Настраиваемое уведомление с настраиваемым атрибутом "Тарифный план" работает похожим образом, но в этом случае значение "Диапазон объема" не применяется.

Как сгенерировать значение специального атрибута в сообщении

Правило регистрации транзакций может искать значение специального атрибута в нескольких местах, например в заголовке ответа, теле ответа или в предопределенных переменных потока в ответе. (Запрос недоступен, поскольку транзакция считается официальной только после получения успешного ответа.) Ниже приведены примеры того, как добавить заголовок ответа с его числовым значением в сообщение. В обоих случаях мы будем использовать правило "Назначить сообщение" в сочетании с переменными.

Добавление размера полезной нагрузки запроса в заголовок ответа

В каждом запросе сообщения есть переменная client.received.content.length, которая содержит количество байтов в полезной нагрузке запроса. Прикрепив политику Assign Message к ответу конечной точки прокси, мы можем создать заголовок ответа messageSize, который будет содержать значение длины:

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message 1</DisplayName>
    <Set>
        <Headers>
          <Header name="messageSize">{client.received.content.length}</Header> 
        </Headers>  
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Как добавить в заголовок значение специального атрибута приложения

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

При использовании правила Verify API Key (которое необходимо для монетизации) это значение хранится в переменной verifyapikey.{policy_name}.apprating. Используя правило Assign Message, прикрепленное к ответу конечной точки прокси, можно создать заголовок apprating, содержащий значение apprating приложения:

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message 1</DisplayName>
    <Set>
        <Headers>
          <Header name="apprating">{verifyapikey.Verify-API-Key-1.apprating}</Header> 
        </Headers>  
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Как настроить тарифный план

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

Как настроить тарифный план с помощью настраиваемого атрибута в интерфейсе

Настройте тарифные планы с собственными атрибутами, используя интерфейс Edge или классический интерфейс Edge, как описано в следующих разделах.

Edge

Чтобы настроить тарифный план с настраиваемыми атрибутами с помощью интерфейса Edge:

  1. Определите настраиваемые атрибуты при добавлении продукта API.
  2. Создайте набор продуктов API, в который входит продукт. Подробнее о том, как создавать наборы продуктов API…
    В правилах записи транзакций для пакета продуктов API добавьте специальные атрибуты, которые будут использоваться для определения тарифных планов. Подробнее об этом рассказывается во введении к этой теме и в статье Как создать правила записи транзакций.
  3. Создайте тарифный план для пакета продуктов API и укажите специальный параметр рейтинга.

Подробнее о том, как настроить тарифный план с помощью интерфейса…

Классическая версия Edge (частное облако)

Чтобы создать тарифную карту с планом настраиваемых атрибутов в классическом интерфейсе Edge, выполните следующие действия:

  1. В правилах записи транзакций для продукта API добавьте настраиваемые атрибуты, которые будут использоваться для определения тарифных планов. Подробнее об этом рассказывается во введении к этой теме и в статье Как создать правила записи транзакций. Повторите эти действия для каждого продукта API, который вы хотите включить в пакет API.
  2. После того как вы настроите продукты API и правила записи транзакций, создайте пакет API, содержащий продукт. Подробнее о том, как создать пакеты API…
  3. Создайте тарифный план для пакета API, выбрав тип тарифного плана Тарифы с настраиваемым атрибутом.
  4. Нажмите на ссылку Прайс-лист. Откроется окно "Прайс-лист".

  5. Выберите настраиваемый атрибут в раскрывающемся меню "Настраиваемый атрибут". В меню перечислены настраиваемые атрибуты, созданные для товара в правилах записи транзакций. Разработчик платит комиссию, исходя из значения выбранного настраиваемого атрибута в каждой транзакции.
    (Значение атрибута * ставка = комиссия для разработчика)
  6. При необходимости настройте план Freemium, как описано в разделе Как указать сведения о тарифном плане.
  7. Настройте модель оплаты, как описано в разделе Как указать тарифный план. Однако для тарифного плана типа "Тарифная карта со специальным атрибутом" модель ценообразования основана на выбранном вами специальном атрибуте. Например, если вы выберете модель "Фиксированная ставка", с разработчика будет взиматься фиксированная плата на основе пользовательского атрибута, например количества байтов, переданных в каждой транзакции (а не фиксированная плата за каждую транзакцию). Подробнее о вычислениях…
  8. Нажмите Сохранить черновик.
    Публикуйте план только тогда, когда вы уверены, что он окончательный. Подробнее о том, как опубликовать тарифные планы…

Подробнее о том, как указать сведения о тарифном плане с помощью интерфейса…

Как настроить план уведомлений с настраиваемыми атрибутами в интерфейсе

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

Edge

Чтобы настроить тарифный план с настраиваемыми атрибутами с помощью интерфейса Edge:

  1. Определите настраиваемые атрибуты при добавлении продукта API.
  2. Создайте набор продуктов API, в который входит продукт. Подробнее о том, как создавать наборы продуктов API…
    В правилах записи транзакций для пакета продуктов API добавьте специальные атрибуты, которые будут использоваться для определения тарифных планов. Подробнее об этом рассказывается во введении к этой теме и в статье Как создать правила записи транзакций.
  3. Создайте тарифный план для пакета продуктов API и укажите специальный параметр рейтинга.

Подробнее о том, как настроить план уведомлений с возможностью корректировки с помощью интерфейса…

Классическая версия Edge (частное облако)

Чтобы настроить тарифный план с настраиваемыми атрибутами с помощью классического интерфейса Edge:

  1. В правилах записи транзакций для продукта API добавьте настраиваемые атрибуты, которые будут использоваться для определения тарифных планов. Подробнее об этом рассказывается во введении к этой теме и в статье Как создать правила записи транзакций. Повторите эти действия для каждого продукта API, который вы хотите включить в пакет API.
  2. После того как вы настроите продукты API и правила записи транзакций, создайте пакет API, содержащий продукт. Подробнее о том, как создать пакеты API…
  3. Создайте тарифный план для пакета API, выбрав тип Уведомление о корректировке с настраиваемым атрибутом.
  4. Нажмите на ссылку Подробнее. Откроется окно "Настраиваемое уведомление".

  5. Выберите настраиваемый атрибут в раскрывающемся меню Собственный атрибут. В меню перечислены настраиваемые атрибуты, созданные для продукта в правилах записи транзакций. Общее количество транзакций разработчика рассчитывается на основе значения выбранного настраиваемого атрибута в каждой транзакции.
  6. В поле Aggregation Basis (Основа агрегирования) задайте период времени, за который будет агрегироваться объем транзакций. Выберите значение от 1 до 24 месяцев. По умолчанию задано значение "1 месяц".
  7. Нажмите Применить и закрыть.
  8. Нажмите Сохранить черновик.
    Публикуйте план только тогда, когда вы уверены, что он окончательный. Подробнее о том, как опубликовать тарифные планы…

Подробнее о том, как указать сведения о настраиваемом плане уведомлений с помощью интерфейса…

Как указать сведения о тарифном плане с настраиваемыми атрибутами с помощью API

Выполните следующие предварительные действия:

  1. В правилах записи транзакций для продукта API добавьте настраиваемые атрибуты, которые будут использоваться для определения тарифных планов. Подробнее об этом рассказывается во введении к этой теме и в статье Как создать правила записи транзакций. Повторите эти действия для каждого продукта API, который вы хотите включить в пакет API.
  2. После того как вы настроите продукты API и правила записи транзакций, создайте пакет API, содержащий продукт. Подробнее о том, как создать пакеты API…

Затем с помощью API создайте тарифный план.

При создании тарифного плана с настраиваемыми атрибутами вы указываете его детали. Вы указываете сведения в свойстве ratePlanDetails в теле запроса при вызове /organizations/{org_name}/monetization-packages/{package_id}/rate-plans. В сведениях указывается значение параметра рейтинга, которое определяет название специального атрибута. Вы также можете указать значение параметра рейтинга, которое агрегирует настраиваемый атрибут за определенный временной интервал.

Полный список вариантов настроек тарифа приведен в разделе Настройки конфигурации тарифа.

Например, следующий код создает тарифную сетку с планом на основе настраиваемого атрибута messageSize (элементы, выделенные полужирным шрифтом).

$ curl -H "Content-Type:application/json" -X POST -d \
'{
   "name": "Custom attribute-based rate card plan",
   "developer":null,
   "developerCategory":null,
   "currency": {
     "id" : "usd"
     },     
   "description": "Custom attribute-based rate card plan",
   "displayName" : "Custom attribute-based rate card plan",
   "frequencyDuration": "1",
   "frequencyDurationType": "MONTH",
   "earlyTerminationFee": "10",
   "monetizationPackage": {
      "id": "location"
        },
      "organization": {
       "id": "{org_name}"
      },    
   "paymentDueDays": "30",
   "prorate": "false",
   "published": "false",     
   "ratePlanDetails":[
      {
        "currency":{
           "id":"usd"
        },
      "duration":1,
      "durationType":"MONTH",
      "meteringType":"VOLUME",
      "paymentDueDays":"30",
      "ratingParameter":"messageSize",
      "ratingParameterUnit":"MB",
      "organization":{
         "id":"{org_name}"
      },
      "ratePlanRates":[
         {
           "rate":0.15,
           "startUnit":0,
           "type":"RATECARD",
           "endUnit":1000
         },
         {
           "rate":0.1,
           "startUnit":1000,
           "type":"RATECARD",
           "endUnit":null
         }
      ],
      "freemiumUnit":0,
      "freemiumDuration":0,
      "freemiumDurationType":"MONTH",
      "type":"RATECARD",
      "customPaymentTerm":false
      }
    ],
    "freemiumUnit":0,
    "freemiumDuration":0,
    "freemiumDurationType":"MONTH",
    "contractDuration":"1",
    "contractDurationType":"YEAR", 
    "recurringStartUnit": 1,
    "recurringType": "CALENDAR",
    "recurringFee": "10",
    "setUpFee": "10",
    "startDate": "2013-09-15 00:00:00",
    "type": "STANDARD"
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/{org_name}/monetization-packages/location/rate-plans" \
-u email:password

Ниже приведен код, который создает тарифный план "Настраиваемое уведомление с настраиваемым атрибутом" на основе настраиваемого атрибута messageSize (см. элемент, выделенный полужирным шрифтом).

$ curl -H "Content-Type:application/json" -X POST -d \
'{
     "name": "AdjustableNotification",
     "displayName": "Custom attribute-based adjustable notification plan",
     "description": "Custom attribute-based adjustable notification plan",
     "published": "true",  
     "organization": {
      "id": "myorg"
     },
     "startDate": "2016-04-15 00:00:00",
     "type": "STANDARD",
     "monetizationPackage": {
        "id": "p1",
        "name": "test"
     },
     "currency": {
        "id" : "usd",
        "name" : "USD"
     },
     "ratePlanDetails": [
        {
           "type": "USAGE_TARGET",
           "meteringType": "DEV_SPECIFIC",
           "duration": 1,
           "durationType": "MONTH",
           "ratingParameter": "messageSize",
           "ratingParameterUnit": "MB",
           "organization": {
             "id": "myorg"
           },
           "currency": {
             "id": "usd",
             "name": "USD"
           }
        }
     ]
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/monetization-packages/p1/rate-plans"  \
-u email:password