使用自定义属性配置费率方案

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
info

简介

在某些情况下,您可能需要交易计数器基于变量或自定义值。 例如,您可能需要:

  • 根据 API 调用消息中提供的值,向开发者收取可变金额。例如,您可能希望根据 API 请求中传输的字节数 向应用开发者收费。
  • 将多个 API 调用捆绑到单个交易中。

使用具有自定义属性的费率方案,您可以识别 API 调用消息中充当计数器的值,该值用于计算交易次数和费用。

支持以下具有自定义属性的费率方案:

  • 具有自定义属性的费率卡
  • 具有自定义属性的可调节通知

每个费率方案最多可以设置 10 个自定义属性。

了解自定义属性计算

自定义属性值如何计入费率方案交易次数和费用 取决于结算模式,如下表所示。

结算模式 自定义属性计算
固定费率和分级费率

custom attribute number * rate = charge to developer

对于固定费率,自定义属性数量将成为与费率相乘的交易次数。对于分级费率,某个级别中的交易次数会按自定义属性数量递增,并且开发者需要为该交易次数付费。例如,如果消息中的自定义属性值为 10, 则开发者需要为 10 笔交易付费,并且当前级别计数会增加 10 笔交易。如果开发者在当前 级别中仅剩余 6 笔交易,则 6 乘以该级别的费率。剩余的 4 笔交易将进入下一级别 并乘以该级别的费率。

在分级费率方案中,如果最后一个分级费率级别有限制(不是“无限”),并且 交易超出该限制,则会发生以下两种情况:

捆绑

由于捆绑是按组收费,而不是按交易收费,因此会进行以下 计算:

custom attribute number = amount added to bundle count

例如,如果消息中的自定义属性数量为 10,则 捆绑中使用的交易次数会增加 10。如果开发者在当前捆绑中仅剩余 6 笔交易,则该捆绑已满,下一个 捆绑计数会增加 4。系统会收取下一个捆绑的费率(如果有) 。

如果最后一个捆绑有限制(不是“无限”),并且交易超出该 限制,则会发生以下两种情况:

可调节通知

对于可调节通知,会进行以下计算:

custom attribute number = amount added to transaction count

例如,如果消息中的自定义属性数量为 10,则交易总数会增加 10。

费率方案从何处获取 自定义属性值

交易记录政策(在 API 产品捆绑中)会告知创收功能在 消息中何处查找自定义属性值。您可以在 API 产品捆绑的交易记录政策的“自定义属性” 部分中定义自定义属性。

然后,您可以选择费率方案中的自定义属性,前提是您已创建包含交易记录政策的 API 产品捆绑,并且该政策中定义了 自定义属性。

以下是大致流程:

  1. 添加 API 产品时定义自定义属性。
  2. 创建包含该产品的 API 产品捆绑。
    在 API 产品捆绑的交易记录政策中,添加将用于定义费率方案的自定义属性。
  3. 创建费率方案(类型为费率卡或可调节通知) 为 API 产品捆绑,并指定 自定义评级参数

下图显示了交易记录政策中定义的 自定义属性与费率卡方案配置之间的关系。具有自定义属性的费率方案的 可调节通知关系类似,但分级费率值不适用。

如何在消息中生成自定义 属性值

交易记录政策可以在多个位置查找自定义属性值, 例如响应标头、响应正文或响应中的预定义流变量。 (请求不可用,因为在您收到成功 响应之前,交易不是正式的。)以下示例向您展示了如何向消息添加带有响应标头和 其数值。在这两种情况下,我们都将结合变量使用 Assign Message 政策

向响应标头添加请求载荷大小

在每个消息请求中,都有一个 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(Private Cloud)

如需使用经典版 Edge 界面创建具有自定义属性的费率卡方案,请执行以下步骤:

  1. 在 API 产品的交易记录政策中,添加将用于定义费率方案的自定义属性。如需了解详情,请参阅本主题中的简介以及创建交易记录政策。针对要包含在 API 软件包中的每个 API 产品执行此操作。
  2. 在 API 产品和交易记录政策完全按照您想要的方式配置后,创建一个包含该产品的 API 软件包。请参阅创建 API 软件包
  3. 为 API 软件包创建费率方案,并选择费率卡 具有自定义属性 费率方案类型。
  4. 点击费率卡 链接。系统随即会打开“费率卡”窗口。

  5. 在“自定义属性”下拉菜单中选择一个自定义属性。该菜单列出了在交易记录政策中为产品创建的自定义 属性。系统会根据每笔交易中选定的自定义属性的值向开发者收费。
    (属性值 * 费率 = 向开发者收取的费用)
  6. (可选)设置免费增值方案,如指定费率卡方案 详细信息中所述。
  7. 设置结算模式,如指定费率卡方案 详细信息中所述。不过请注意,对于“具有自定义属性的费率卡”费率方案类型, 结算模式基于您选择的自定义属性。例如,如果您选择“固定费率”作为结算模式,则系统会根据自定义属性(例如每笔交易中传输的字节数)向开发者收取固定费率,而不是每笔交易收取固定费率。如需了解详情,请参阅计算
  8. 点击保存 草稿
    只有在您完全确定方案是最终方案时,才发布该方案。如需了解如何设置发布日期和发布方案,请参阅发布 费率方案

如需了解详情,请参阅 使用界面指定费率卡方案详细信息

使用界面配置具有自定义属性的可调节通知方案

配置具有自定义属性的可调节通知方案,如下所述。

Edge

如需使用 Edge 界面配置具有自定义属性的费率卡方案,请执行以下操作:

  1. 添加 API 产品时定义自定义属性。
  2. 创建包含该产品的 API 产品捆绑。请参阅创建 API 产品捆绑
    在 API 产品捆绑的交易记录政策中,添加将用于定义费率方案的自定义属性。如需了解详情,请参阅本主题中的简介以及创建交易记录政策
  3. 为 API 产品捆绑创建费率方案,并 指定自定义评级参数

如需了解详情,请参阅使用界面配置可调节通知方案

经典版 Edge(Private Cloud)

如需使用经典版 Edge 界面配置具有自定义属性的费率卡方案,请执行以下操作:

  1. 在 API 产品的交易记录政策中,添加将用于定义费率方案的自定义属性。如需了解详情,请参阅本主题中的简介以及创建交易记录政策。针对要包含在 API 软件包中的每个 API 产品执行此操作。
  2. 在 API 产品和交易记录政策完全按照您想要的方式配置后,创建一个包含该产品的 API 软件包。请参阅创建 API 软件包
  3. 为 API 软件包创建费率方案,并选择可调节 具有自定义属性的通知费率方案类型。
  4. 点击详细信息 链接。系统随即会打开“可调节通知” 窗口。

  5. 自定义属性 下拉菜单中选择一个自定义属性。该菜单 列出了在交易记录政策中为产品创建的自定义属性。系统会根据每笔交易中选定的 自定义属性的值计算开发者的交易总数。
  6. 汇总依据 设置为汇总交易量的时间段。选择介于 1 到 24 个月之间的数字。此值默认为 1 个月。
  7. 点击 Apply and Close
  8. 点击保存 草稿
    只有在您完全确定方案是最终方案时,才发布该方案。如需了解如何设置发布日期和发布方案,请参阅发布 费率方案

如需了解详情,请参阅 使用界面指定可调节通知方案详细信息

使用 API 指定具有自定义属性的费率方案的详细信息

执行以下前提步骤:

  1. 在 API 产品的交易记录政策中,添加将用于定义费率方案的自定义属性。如需了解详情,请参阅本主题中的简介以及创建交易记录政策。针对要包含在 API 软件包中的每个 API 产品执行此操作。
  2. 在 API 产品和交易记录政策完全按照您想要的方式配置后,创建一个包含该产品的 API 软件包。请参阅创建 API 软件包

接下来,您可以使用 API 创建费率方案。

您可以在创建费率方案时指定具有自定义属性的费率方案的详细信息。您可以在对 /organizations/{org_name}/monetization-packages/{package_id}/rate-plans 的调用中的请求正文内指定 ratePlanDetails 属性中的详细信息。在 详细信息中,您可以指定一个评级参数值,用于标识自定义 属性的名称。您还可以指定一个评级参数值,用于在指定的时间间隔内汇总自定义属性 。

如需查看费率方案详细信息选项的完整列表,请参阅费率方案 详细信息配置设置

例如,以下代码基于名为 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