Chính sách MonetizeLimitsCheck

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Tổng quan

Chính sách MonetizationLimitsCheck cho phép bạn thực thi các giới hạn kiếm tiền đối với các lệnh gọi API do nhà phát triển ứng dụng thực hiện.

Sau đây là một số trường hợp mà chính sách được kích hoạt:

  • Nếu nhà phát triển ứng dụng truy cập vào API kiếm tiền chưa mua gói thuê bao cho sản phẩm API được liên kết
  • Tài khoản của nhà phát triển không có đủ số dư.
  • Nhà phát triển đã vượt quá giới hạn số lượng giao dịch.

Để biết thông tin về cách đính kèm chính sách vào proxy API của bạn, hãy xem phần Áp dụng giới hạn kiếm tiền đối với proxy API.

Phần tử <MonetizationLimitsCheck>

Chỉ định chính sách MonetizeLimitsCheck.

Giá trị mặc định Không áp dụng
Bắt buộc? Bắt buộc
Loại Loại phức tạp
Phần tử mẹ Không áp dụng
Phần tử con <DisplayName>
<FaultResponse>
<IgnoreUnresolvedVariables>
<Variables>

Bảng sau đây cung cấp nội dung mô tả tổng quan về các phần tử con của <MonetizationLimitsCheck>:

Phần tử con Bắt buộc? Nội dung mô tả
<DisplayName> Không bắt buộc Tên tuỳ chỉnh cho chính sách.
<FaultResponse> Không bắt buộc Chỉ định thông báo phản hồi được trả về ứng dụng yêu cầu khi lỗi phát sinh.
<IgnoreUnresolvedVariables> Không bắt buộc Xác định xem quá trình xử lý có dừng khi gặp một biến chưa được giải quyết hay không.
<Variables> Không bắt buộc Chỉ định các biến luồng để kiểm tra giới hạn kiếm tiền.

Phần tử <MonetizationLimitsCheck> sử dụng cú pháp sau:

Cú pháp

<?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>

Ví dụ:

Ví dụ sau đây cho thấy định nghĩa của chính sách MonetizationLimitsCheck:

<?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>

Phần tử này có các thuộc tính chung cho tất cả các chính sách:

Thuộc tính Mặc định Bắt buộc? Nội dung mô tả
name Không áp dụng Bắt buộc

Tên nội bộ của chính sách. Giá trị của thuộc tính name có thể chứa chữ cái, số, dấu cách, dấu gạch nối, dấu gạch dưới và dấu chấm. Giá trị này không được vượt quá 255 ký tự.

Nếu muốn, hãy sử dụng phần tử <DisplayName> để gắn nhãn chính sách trong trình chỉnh sửa proxy của giao diện người dùng quản lý bằng một tên ngôn ngữ tự nhiên khác.

continueOnError sai Không bắt buộc Đặt thành "false" để trả về lỗi khi một chính sách không thành công. Đây là hành vi dự kiến đối với hầu hết các chính sách. Đặt thành "true" để tiếp tục thực thi luồng ngay cả sau khi chính sách không hoạt động.
enabled true Không bắt buộc Đặt thành "true" để thực thi chính sách này. Đặt thành "false" để "tắt" chính sách này. Chính sách sẽ không được thực thi ngay cả khi vẫn được liên kết với một luồng.
async   sai Không được dùng nữa Thuộc tính này không còn được dùng nữa.

Tham chiếu phần tử con

Phần này mô tả các phần tử con của <MonetizationLimitsCheck>.

<DisplayName>

Sử dụng cùng với thuộc tính name để gắn nhãn cho chính sách này bằng một tên khác nghe tự nhiên hơn trong trình chỉnh sửa proxy giao diện người dùng quản lý.

Phần tử <DisplayName> là phần tử chung cho mọi chính sách.

Giá trị mặc định không áp dụng
Bắt buộc? Không bắt buộc. Nếu bạn bỏ qua <DisplayName>, giá trị của thuộc tính name của chính sách sẽ được sử dụng
Loại Chuỗi
Phần tử mẹ <PolicyElement>
Phần tử con Không có

Phần tử <DisplayName> sử dụng cú pháp sau:

Cú pháp

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

Ví dụ:

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

Phần tử <DisplayName> không có thuộc tính hoặc phần tử con.

<IgnoreUnresolvedVariables>

Xác định xem có nên dừng xử lý chính sách hay không khi Apigee gặp phải một biến chưa được giải quyết.

Giá trị mặc định Đúng
Bắt buộc? Không bắt buộc
Loại Boolean
Phần tử mẹ <MonetizationLimitsCheck>
Phần tử con Không có

Để bỏ qua các biến chưa được giải quyết và tiếp tục xử lý, hãy đặt giá trị thành true; nếu không, hãy đặt giá trị false. Giá trị mặc định là true.

Việc đặt <IgnoreUnresolvedVariables> thành true sẽ khác với việc đặt continueOnError của phần tử <MonetizationLimitsCheck> thành true. Nếu bạn đặt continueOnError thành true, Apigee sẽ không chỉ bỏ qua các lỗi về biến mà còn bỏ qua tất cả các lỗi.

Phần tử <IgnoreUnresolvedVariables> sử dụng cú pháp sau:

Cú pháp

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

Ví dụ:

Ví dụ sau đây thiết lập <IgnoreUnresolvedVariables> thành false:

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>

<Variables>

Chỉ định các biến luồng mà bạn muốn tìm nạp thực thể hoặc tên tài nguyên trong quá trình thực thi chính sách.

Bạn chỉ có thể chỉ định phần tử <Product> trong phần tử <Variables>. Apigee lấy tên sản phẩm API từ biến luồng được chỉ định trong phần tử <Product>. Nếu bạn không chỉ định phần tử <Variables>, thì theo mặc định, Apigee sẽ lấy tên sản phẩm API từ biến ngữ cảnh apiproduct.name. Bằng cách sử dụng tên sản phẩm API, Apigee sẽ nhận được gói giá tương ứng cho sản phẩm và tiến hành kiểm tra hạn mức kiếm tiền.

Giá trị mặc định Không áp dụng
Bắt buộc? Không bắt buộc
Loại Loại phức tạp
Phần tử mẹ <MonetizationLimitsCheck>
Phần tử con <Product>

Phần tử <Variables> sử dụng cú pháp sau:

Cú pháp

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

Ví dụ:

Ví dụ sau đây lấy tên sản phẩm API từ biến luồng tuỳ chỉnh myproductvar.name có trong luồng proxy API của bạn.

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

Bạn có thể thiết lập các biến luồng tuỳ chỉnh bằng cách dùng các chính sách như AssignMessage hoặc JavaScript.

<Product>

Chỉ định biến có tên sản phẩm API.

Giá trị mặc định Không áp dụng
Bắt buộc? Không bắt buộc
Loại Chuỗi
Phần tử mẹ <Variables>
Phần tử con Không có

Phần tử <Product> sử dụng cú pháp sau:

Cú pháp

<Product>VARIABLE_NAME</Product>

Ví dụ:

Ví dụ sau đây lấy tên sản phẩm API từ biến luồng tuỳ chỉnh myproductvar.name có trong luồng proxy API của bạn.

<Product>myproductvar.name</Product>

Bạn có thể thiết lập các biến luồng tuỳ chỉnh bằng cách dùng các chính sách như AssignMessage hoặc JavaScript.

<FaultResponse>

Xác định thông báo phản hồi được trả về ứng dụng yêu cầu nếu xảy ra lỗi. Bạn có thể tuỳ chỉnh tin nhắn trả lời dựa trên yêu cầu của mình. Để biết thêm thông tin về phần tử và tất cả các phần tử con của phần tử đó, hãy xem FaultResponse.

Biến luồng

Nếu bạn đặt thuộc tính ContinueOnError của phần tử <MonetizationLimitsCheck> thành true (đúng) thì sẽ không có lỗi nào xảy ra. Trong trường hợp này, các biến luồng mint.limitsViolated, mint.isDeveloperSuspendedmint.limitsPolicyError sẽ được đặt tự động. Bạn có thể dùng các biến này để xử lý thêm trường hợp ngoại lệ nếu cần.