營利限制檢查政策

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

總覽

MonetizeLimitsCheck 政策可讓您針對應用程式開發人員發出的 API 呼叫強制執行營利限制。

觸發政策的一些情況如下:

  • 如果存取營利 API 的應用程式開發人員未購買相關聯 API 產品的訂閱方案
  • 開發人員帳戶的餘額不足。
  • 開發人員的交易量已超過交易量上限。

如要瞭解如何將政策附加至 API Proxy,請參閱「強制執行 API Proxy 的營利限制」一文。

<MonetizationLimitsCheck> 個元素

指定 MonetizeLimitsCheck 政策。

預設值 不適用
是否必填? 必要
類型 複雜類型
父項元素 不適用
子元素 <DisplayName>
<FaultResponse>
<IgnoreUnresolvedVariables>
<Variables>

下表提供 <MonetizationLimitsCheck> 子項元素的概要說明:

子元素 必填與否 說明
<DisplayName> 選用 政策的自訂名稱。
<FaultResponse> 選用 指定提出錯誤時傳回給要求用戶端的回應訊息。
<IgnoreUnresolvedVariables> 選用 判斷發生未解析的變數時,是否要停止處理作業。
<Variables> 選用 指定要檢查營利限制的流程變數。

<MonetizationLimitsCheck> 元素使用下列語法:

語法

<?xml version="1.0" encoding="UTF-8"?>
<MonetizationLimitsCheck async="false" continueOnError="false" enabled="true" name="POLICY_NAME">
    <DisplayName>DISPLAY_NAME</DisplayName>
    <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
    <Variables>
        <Product>VARIABLE_NAME</Product>
    </Variables>
    <FaultResponse>
        <Set>
            <Payload contentType="text/xml">
                <error>
                    <messages>
                        <message>MESSAGE_TEXT</message>
                        <message>MESSAGE_TEXT</message>
                    </messages>
                </error>
            </Payload>
            <StatusCode>HTTP_STATUS</StatusCode>
            <ReasonPhrase>REASON_TEXT</ReasonPhrase>
        </Set>
    </FaultResponse>
</MonetizationLimitsCheck>

範例

下列範例說明 MonetizeLimitsCheck 政策定義:

<?xml version="1.0" encoding="UTF-8"?>
<MonetizationLimitsCheck async="false" continueOnError="false" enabled="true" name="Monetization-Limits-Check">
    <DisplayName>Monetization Limits Check</DisplayName>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Variables>
        <Product>myproductvar.name</Product>
    </Variables>
	<FaultResponse>
	        <Set>
	            <Payload contentType="text/xml">
	                <error>
	                    <messages>
	                        <message>Developer has reached usage quota</message>
	                        <message>Is Developer Suspended - {monetizationLimits.isDeveloperSuspended} </message>
	                    </messages>
	                </error>
	            </Payload>
	            <StatusCode>403</StatusCode>
	            <ReasonPhrase>Forbidden</ReasonPhrase>
	        </Set>
	</FaultResponse>
 </MonetizationLimitsCheck>

此元素在所有政策中皆包含下列屬性:

屬性 預設 必填與否 Description
name 必要

政策的內部名稱。name 屬性的值可以包含英文字母、數字、空格、連字號、底線和半形句號。這個值不得超過 255 個字元。

或者,您也可以使用 <DisplayName> 元素,在管理 UI Proxy 編輯器中,以不同的自然語言名稱來標示政策。

continueOnError false 選填 如果設為「false」,當政策失敗時會傳回錯誤。多數政策預期的行為如下。如果設為「true」,則在政策失敗後,仍會繼續執行流程。
enabled true 選填 設為「true」即可強制執行政策。將政策設為「false」,即可「關閉」政策。即使政策已附加至流程,系統也不會強制執行這項政策。
async   false 已淘汰 這項屬性已淘汰。

子項元素參照

本節將說明 <MonetizationLimitsCheck> 的子元素。

<DisplayName>

在管理 UI Proxy 編輯器中,除了 name 屬性,可用以其他自然更自然的名稱為政策加上標籤。

<DisplayName> 元素適用於所有政策。

預設值 n/a
是否必填? 選用設定。如果省略 <DisplayName>,則會使用政策的 name 屬性值
類型 字串
父項元素 <PolicyElement>
子元素

<DisplayName> 元素使用下列語法:

語法

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

範例

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> 元素沒有屬性或子元素。

<IgnoreUnresolvedVariables>

決定當 Apigee 遇到未解析的變數時,是否應停止處理政策。

預設值
是否必填? 選用
類型 布林值
父項元素 <MonetizationLimitsCheck>
子元素

如要忽略未解析的變數並繼續處理,請將值設為 true,否則請設為 false。預設值為 true

<IgnoreUnresolvedVariables> 設為 true 與將 <MonetizationLimitsCheck> 元素的 continueOnError 設為 true 不同。如果您將 continueOnError 設為 true,Apigee 不僅會忽略變數錯誤,還會忽略所有錯誤。

<IgnoreUnresolvedVariables> 元素使用下列語法:

語法

<IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>

範例

以下範例將 <IgnoreUnresolvedVariables> 設為 false

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>

<Variables>

指定要在政策執行期間擷取的實體或資源名稱的流程變數。

您只能指定 <Variables> 元素中的 <Product> 元素。Apigee 會從 <Product> 元素中指定的流程變數取得 API 產品名稱。如果未指定 <Variables> 元素,Apigee 預設會從 apiproduct.name 內容變數取得 API 產品名稱。透過使用 API 產品名稱,Apigee 會取得產品對應的費率方案,並執行營利限制檢查。

預設值 不適用
是否必填? 選用
類型 複雜類型
父項元素 <MonetizationLimitsCheck>
子元素 <Product>

<Variables> 元素使用下列語法:

語法

<Variables>
    <Product>VARIABLE_NAME</Product>
</Variables>

範例

以下範例會從 API Proxy 流程中的 myproductvar.name 自訂流程變數取得 API 產品名稱。

<Variables>
    <Product>myproductvar.name</Product>
</Variables>

您可以使用 AssignMessageJavaScript 等政策設定自訂流程變數。

<Product>

指定有 API 產品名稱的變數。

預設值 不適用
是否必填? 選用
類型 字串
父項元素 <Variables>
子元素

<Product> 元素使用下列語法:

語法

<Product>VARIABLE_NAME</Product>

範例

以下範例會從 API Proxy 流程中的 myproductvar.name 自訂流程變數取得 API 產品名稱。

<Product>myproductvar.name</Product>

您可以使用 AssignMessageJavaScript 等政策設定自訂流程變數。

<FaultResponse>

定義發生錯誤時傳回給要求用戶端的回應訊息。您可以根據需求自訂回應訊息。如要進一步瞭解該元素及其所有子元素,請參閱 FaultResponse

流程變數

如果您將 <MonetizationLimitsCheck> 元素的 ContinueOnError 屬性設為 true,則不會引發錯誤。在這種情況下,系統會自動設定資料流變數 mint.limitsViolatedmint.isDeveloperSuspendedmint.limitsPolicyError。如有需要,這些變數可用於執行進一步的例外狀況處理。