Примеры

Простой пример с логическим оператором И:

rule: 
    3 > 2 AND 1 = 1 
-> accept;

Пример работы с черными списками:

rule: 
  inBlackList("email")
-> notify;

данная функция может принимать список параметров:

rule: 
  inBlackList("email", "fingerprint", "card_token", "bin", "ip")
-> notify;

Работа с белыми списками аналогична:

rule: check_in_white_list_rule: 
  inWhiteList("email", "fingerprint", "card_token", "bin", "ip")
-> notify;

Работа с счетчиками:

rule: 
  (count("ip", 1, days) >= 10 OR countSuccess("email", 1, days) > 5)
        AND countError("fingerprint", 1, calendar_days, "error_code") > 5
-> notify;

Вызываются функции подсчета количества операций в разрезе ip, подсчет успешных платежей в разрезе email, а также количество конкретных ошибок при оплатах.

Это работает следующим образом - если количество платежей на один ip в сутки >= 10 или количество успешных платежей на один mail за сутки > 5 и при выполнении одного из этих условий количество ошибок с кодом “error_code” на один fingerprint за календарнык сутки > 5, будет выслана уведомление.

Работа с функциями сумм производится аналогично.

Количество уникальных ip на один email

rule: unique("email", "ip") < 4
-> decline;

Определение страны по ip

rule: country() = "RU"
-> notify;

Определение суммы платежа

rule: amount() < 100
-> accept;

Работа с обработчиком ошибок

rule: 
  unique("email", "ip") < 4 -> accept
catch: decline;

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

Определение доверенного трафика

rule: isTrusted(
    paymentsConditions(
        condition("RUB", 1, 1000, 10),
        condition("EUR", 2, 20)
    ),
    withdrawalsConditions(
        condition("USD", 3, 3000, 3)
    )
) -> accept;

В случае если сумма за 1 последний год > 100 рублей и количество транзакций > 10 или количество транзакций за 2 последних года > 20 в евро или количество выплат в USD за 3 последних года по сумме > 3000 или больше 3 успешных операций, то операция будет помечена как accept.

Определение типа карты

rule: 
  cardCategory() = "credit"
-> accept;

Определение платежной системы

rule: 
  paymentSystem() = "VISA"
-> accept;

Определение рекурентного платежа

rule: 
  isRecurrent()
-> accept;

Определение мобильного платежа

rule: 
  isMobile()
-> accept;

Сравнение по шаблону и в списке

rule: cb:
  like("bin", "5536.*") AND in("pan", "9137", "1231")
-> decline;
Регулярные выражения формируются в стиле java

Пример шаблона с несколькими правилами

# принимаем платеж, если хотя бы один из указанных параметров находится в вайтлисте
rule: inWhiteList("email", "fingerprint", "card", "bin", "ip") 
-> accept; 

# отклоняем платеж, если хотя бы один из указанных параметров находится в блэклисте
rule: inBlackList("email", "fingerprint", "card", "bin", "ip") 
-> decline; 

# эти страны блочим всегда
rule: in(countryBy("bin"), "AS", "SD", "TR", "WE", "SD", "CD", "KL", "EW", "VF", "XZ", "CD") 
-> decline; 

# лимит суммы платежа 10 баксов для 
rule: amount() > 1000 AND in(countryBy("bin"), "DS", "LA", "AS") 
-> decline; 

# лимит суммы платежа 10 баксов для некоторых стран
rule: amount() > 1000 AND in(countryBy("bin"), "VC", "WE") 
-> decline;

# лимит по сумме платежа > 100 условных единиц в валюте платежа
rule: amount() > 10000 
-> decline;