Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Ringkasan
Kebijakan MonetizationLimitsCheck memungkinkan Anda menerapkan batas monetisasi.
Secara khusus, kebijakan ini dipicu jika developer aplikasi yang mengakses API yang dimonetisasi belum membeli langganan untuk produk API terkait atau jika developer tidak memiliki saldo yang cukup. Dalam hal ini, kebijakan MonetizationLimitsCheck akan melaporkan kesalahan dan memblokir panggilan API. Untuk informasi selengkapnya, lihat Menerapkan langganan developer ke produk API.
Saat Anda melampirkan kebijakan MonetizationLimitsCheck ke proxy API, variabel alur mint.limitscheck.*
dan mint.subscription_*
akan terisi, seperti yang dijelaskan dalam referensi variabel alur mint.
Kebijakan ini merupakan Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin menimbulkan biaya atau implikasi penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.
<MonetizationLimitsCheck>
Menentukan kebijakan MonetizationLimitsCheck.
Nilai Default | T/A |
Wajib? | Wajib |
Jenis | Jenis kompleks |
Elemen Induk | T/A |
Elemen Turunan |
<DisplayName> <FaultResponse> <IgnoreUnresolvedVariables> |
Tabel berikut memberikan deskripsi tingkat tinggi untuk elemen turunan <MonetizationLimitsCheck>
:
Elemen Turunan | Wajib? | Deskripsi |
---|---|---|
<DisplayName> |
Opsional | Nama kustom untuk kebijakan. |
<FaultResponse> |
Opsional | Menentukan pesan respons yang ditampilkan ke klien yang meminta. |
<IgnoreUnresolvedVariables> |
Opsional | Mengabaikan error variabel yang belum terselesaikan dalam alur. |
Elemen <MonetizationLimitsCheck>
menggunakan sintaksis berikut:
Sintaks
<?xml version="1.0" encoding="UTF-8" standalone="no"?><MonetizationLimitsCheck continueOnError="[true|false]" enabled="[true|false]" name="policy_name"> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> <FaultResponse> <AssignVariable> <Name/> <Value/> </AssignVariable> <Add> <Headers/> </Add> <Copy source="request"> <Headers/> <StatusCode/> </Copy> <Remove> <Headers/> </Remove> <Set> <Headers/> <Payload/> <StatusCode/> </Set> </FaultResponse> <IgnoreUnresolvedVariables>VALUE</IgnoreUnresolvedVariables> </MonetizationLimitsCheck>
Contoh
Dalam contoh berikut, jika developer belum membeli langganan untuk
produk API terkait, akses ke API yang dimonetisasi diblokir, dan
Status 403
ditampilkan dengan pesan kustom.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MonetizationLimitsCheck continueOnError="false" enabled="true" name="MonetizationLimitsCheck-1"> <DisplayName>Monetization-Limits-Check-1</DisplayName> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <FaultResponse> <Set> <Payload contentType="text/xml"> <error> <messages> <message>Usage has been exceeded ({mint.limitscheck.isRequestBlocked}) or app developer has been suspended</message> </messages> </error> </Payload> <StatusCode>403</StatusCode> </Set> </FaultResponse> </MonetizationLimitsCheck>
Elemen ini memiliki atribut berikut yang umum untuk semua kebijakan:
Atribut | Default | Wajib? | Deskripsi |
---|---|---|---|
name |
T/A | Wajib |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
continueOnError |
false | Opsional | Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Perilaku ini wajar terjadi untuk
sebagian besar kebijakan. Tetapkan ke true agar eksekusi alur berlanjut meskipun setelah kebijakan gagal. Lihat juga:
|
enabled |
benar | Opsional | Tetapkan ke true untuk menerapkan kebijakan. Tetapkan ke false untuk menonaktifkan
kebijakan. Kebijakan tidak akan diterapkan meskipun tetap terlampir ke alur. |
async |
false | Tidak digunakan lagi | Atribut ini tidak digunakan lagi. |
Referensi elemen turunan
Bagian ini menjelaskan elemen turunan dari<MonetizationLimitsCheck>
.
<DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan dengan nama yang berbeda dan lebih alami.
Elemen <DisplayName>
bersifat umum untuk semua kebijakan.
Nilai Default | T/A |
Wajib? | Opsional. Jika Anda menghilangkan <DisplayName> , nilai
atribut name kebijakan akan digunakan. |
Jenis | String |
Elemen Induk | <PolicyElement> |
Elemen Turunan | Tidak ada |
Elemen <DisplayName>
menggunakan sintaksis berikut:
Sintaksis
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Contoh
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Elemen <DisplayName>
tidak memiliki atribut atau elemen turunan.
<FaultResponse>
Menentukan pesan respons yang ditampilkan ke klien yang meminta. FaultResponse menggunakan
setelan yang sama dengan <FaultResponse
>
dalam kebijakan RaiseFault.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<MonetizationLimitsCheck> |
Elemen Turunan |
<AssignVariable> <Add> <Copy> <Remove> <Set> |
<AssignVariable>
Menetapkan nilai ke variabel alur tujuan.
Jika variabel flow tidak ada, AssignVariable
akan membuatnya.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<FaultResponse> |
Elemen Turunan |
<Name> <Value> |
Misalnya, gunakan kode berikut untuk menetapkan variabel bernama myFaultVar
dalam kebijakan MonetizationLimitsCheck:
<FaultResponse> <AssignVariable> <Name>myFaultVar</Name> <Value>42</Value> </AssignVariable> </FaultResponse>
Kemudian, kebijakan dalam aturan fault dapat mengakses variabel. Misalnya, kebijakan MenetapkanMessage berikut menggunakan variabel untuk menyetel Header dalam respons fault:
<AssignMessage enabled="true" name="Assign-Message-1"> <Add> <Headers> <Header name="newvar">{myFaultVar}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
<AssignVariable>
dalam kebijakan MonetizationLimitsCheck menggunakan sintaksis yang sama dengan
Elemen <AssignVariable>
dalam kebijakan MenetapkanMessage.
<Name>
Nama variabel. Untuk informasi selengkapnya, lihat Nama dalam kebijakan MenetapkanMessage.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignVariable> |
Elemen Turunan | Tidak ada |
<Value>
Nilai variabel. Untuk informasi selengkapnya, lihat Nilai dalam kebijakan MenetapkanMessage.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignVariable> |
Elemen Turunan | Tidak ada |
<Add>
Menambahkan header HTTP ke pesan error.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<FaultResponse> |
Elemen Turunan |
<Headers> |
<Headers>
Menentukan header HTTP yang akan ditambahkan, disetel, disalin, atau dihapus.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<Add> <Copy> <Remove> <Set> |
Elemen Turunan | Tidak ada |
Contoh:
Tambahkan header
Contoh berikut menyalin nilai variabel alur request.user.agent
ke dalam {i>header<i}:
<Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add>
Tetapkan header
Contoh berikut menetapkan
header user-agent
ke variabel pesan yang ditentukan dengan
elemen <AssignTo>
.
<Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set>
Salin header - 1
Contoh berikut menyalin headerA
dari permintaan:
<Copy source='request'> <Headers> <Header name="headerA"/> </Headers> </Copy>
Salin header - 2
Contoh berikut menyalin beberapa header:
<Copy source='request'> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy>
Contoh ini menyalin "h1", "h2", dan nilai kedua dari "h3". Jika "h3" hanya memiliki satu nilai, lalu "h3" tidak disalin.
Hapus header - 1
Contoh berikut menghapus header:
<Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove>
Hapus header - 2
Contoh berikut menghapus beberapa header:
<Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove>
Contoh ini menghapus "h1", "h2", dan nilai kedua dari "h3". Jika "h3" hanya memiliki satu nilai, lalu "h3" tidak dihapus.
<Copy>
Menyalin informasi dari pesan yang ditentukan oleh
source
ke pesan error.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<FaultResponse> |
Elemen Turunan |
<Headers> <StatusCode> |
Tabel berikut menjelaskan atribut <Copy>
:
Atribut | Wajib? | Jenis | Deskripsi |
---|---|---|---|
sumber | Opsional | String |
Menentukan objek sumber salinan.
|
<StatusCode>
Menentukan kode status HTTP dalam pesan error. Anda dapat menyalin atau
menetapkan nilai dari
untuk objek yang ditentukan oleh atribut source
.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<Copy> <Set> |
Elemen Turunan | Tidak ada |
Contoh:
Salin kode status
<Copy source='response'> <StatusCode>404</StatusCode> </Copy>
Tetapkan kode status
<Set source='request'> <StatusCode>404</StatusCode> </Set>
<Remove>
Menghapus header HTTP yang ditentukan dari pesan error. Untuk menghapus semua {i>header<i}, tentukan
<Remove><Headers/></Remove>
.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<FaultResponse> |
Elemen Turunan |
<Headers> |
<Set>
Menetapkan informasi dalam pesan error.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<FaultResponse> |
Elemen Turunan |
<Headers> <Payload> <StatusCode> |
<Payload>
Menetapkan payload pesan error.
Nilai Default | T/A |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<Set> |
Elemen Turunan | Tidak ada |
Contoh:
Menyetel payload teks
<Set> <Payload contentType="text/plain">test1234</Payload> </Set>
Menetapkan payload JSON - 1
<Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set>
Menetapkan payload JSON - 2
<Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set>
Contoh ini menyisipkan variabel menggunakan variablePrefix
dan
Atribut variableSuffix
dengan karakter pembatas.
Menetapkan payload JSON - 3
<Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set>
Contoh ini menyisipkan variabel menggunakan tanda kurung kurawal. Anda dapat menggunakan tanda kurung kurawal mulai dari dengan rilis 16.08.17.
Menetapkan payload XML
<Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </Payload> </Set>
Contoh ini menyisipkan variabel menggunakan tanda kurung kurawal. Anda dapat menggunakan tanda kurung kurawal mulai dari dengan rilis 16.08.17.
<IgnoreUnresolvedVariables>
Menentukan apakah pemrosesan berhenti saat variabel yang belum terselesaikan ditemukan.
Tetapkan ke true
untuk mengabaikan variabel yang belum terselesaikan dan melanjutkan pemrosesan; jika tidak, false
. Tujuan
nilai defaultnya adalah true
.
Menyetel <IgnoreUnresolvedVariables>
ke true
berbeda dengan menyetel <MonetizationLimitsCheck>
continueOnError
hingga true
. Jika Anda menetapkan continueOnError
ke true
, Apigee akan mengabaikan semua error, bukan
hanya {i>error <i}
dalam variabel.
Elemen <IgnoreUnresolvedVariables>
menggunakan sintaksis berikut:
Sintaks
<IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
Contoh
Contoh berikut menetapkan <IgnoreUnresolvedVariables>
ke false
:
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Kode error
Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
Kode kerusakan | Status HTTP | Penyebab |
---|---|---|
mint.service.subscription_not_found_for_developer |
500 |
Error ini terjadi jika developer tidak memiliki langganan Produk API. |
mint.service.wallet_not_found_for_developer |
500 |
Error ini terjadi saat developer prabayar mencoba menggunakan API yang dimonetisasi tanpa mempertahankan dompet untuk mata uang yang ditentukan dalam paket tarif. |
mint.service.developer_usage_exceeds_balance |
500 |
Error ini terjadi saat penggunaan developer prabayar melebihi saldo dompet. |
mint.service.wallet_blocked_due_to_inactivity |
500 |
Error ini terjadi jika saldo dompet developer prabayar tidak ditambah dalam lebih dari 1,5 tahun dan developer mencoba menggunakan API. |
Variabel error
Setiap kali ada error eksekusi dalam kebijakan, Apigee akan menghasilkan pesan error. Anda dapat melihat pesan error ini dalam respons error. Sering kali, pesan error yang dihasilkan sistem mungkin tidak relevan dalam konteks produk Anda. Anda mungkin ingin menyesuaikan pesan error berdasarkan jenis error untuk membuat pesan lebih bermakna.
Untuk menyesuaikan pesan error, Anda dapat menggunakan aturan error atau kebijakan RaiseFault. Untuk mengetahui informasi tentang perbedaan antara aturan error dan kebijakan RaiseFault, lihat FaultRules vs. kebijakan RaiseFault.
Anda harus memeriksa kondisi menggunakan elemen Condition
dalam aturan error dan kebijakan RaiseFault.
Apigee menyediakan variabel error yang unik untuk setiap kebijakan dan nilai variabel error ditetapkan saat kebijakan memicu error runtime.
Dengan menggunakan variabel ini, Anda dapat memeriksa kondisi error tertentu dan mengambil tindakan yang sesuai. Untuk mengetahui informasi selengkapnya tentang cara memeriksa kondisi
error, lihat Mem-build kondisi.
Variabel | Dari mana | Contoh |
---|---|---|
fault.name |
fault.name dapat cocok dengan salah satu kesalahan yang tercantum dalam tabel Error runtime.
Nama kerusakan adalah bagian terakhir dari kode kerusakan. |
fault.name Matches "UnresolvedVariable" |
MonetizationLimitsCheck.POLICY_NAME.failed |
POLICY_NAME adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. | MonetizationLimitsCheck.monetization-limits-check-1.failed = true |
Variabel flow
Variabel alur standar berikut akan otomatis diisi saat kebijakan MonetizationLimitsCheck akan dijalankan. Untuk informasi selengkapnya, lihat variabel alur mint.
Variabel aliran | Deskripsi |
---|---|
mint.limitscheck.is_request_blocked |
true untuk permintaan yang diblokir. |
mint.limitscheck.is_subscription_found |
true jika langganan API ditemukan. |
mint.limitscheck.purchased_product_name |
Nama produk API yang dibeli. Misalnya: MyProduct . |
mint.limitscheck.status_message |
Pesan status. Misalnya: limits_check_success . |
mint.subscription_end_time_ms |
Waktu berakhir langganan produk API. |
mint.subscription_start_time_ms |
Waktu mulai langganan produk API. Misalnya: 1618433956209 . |