Користувальницькькі налаштування

Налаштування сайту


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації щодо оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

gooseresistance

Це стара версія документу!


Опір Гусака

Як виглядає?

ну якось так

а ви що очікували?

Як вмикається?

За допомогою відповідної опції

alter.ini
GOOSE_RESISTANCE=1

Що дозволяє робити?

Ну для початку, можна на нього натискати

Щоб дізнатись, що в нас нема жодних стратегій

Тут ми можемо створювати “стратегії”

Звичайно ми можемо створити довільну кількість стратегій гуся

Опція “Використання прив'язок” в купі з значенням “Основний контрагент” напряму впливає на те, як вибиратиметься стратегія відносно базових прив'язок контрагентів, котрі описуються опціями AGENTS_ASSIGN та DEFAULT_ASSIGN_AGENT. У випадку, якщо чекбокс “Використання прив'язок” знято - стратегія просто собі є і є.

Кожну з них нам обов'язково необхідно налаштувати, додавши в неї всіх(!) контрагентів які будуть приймати в ній участь

Тип “розподілу” може мати наступні значення:

  • Жоден - завжди 0
  • Відсоток від суми - відсоток від суми платежа
  • Відсоток від залишку - відсоток від залишків суми платежа після обчислень
  • Абсолютне - абсолютне значення в грошах, від суми платежа
  • Залишки - те що лишилось після обчислень. Якщо агентів з цим типом розподілу більше ніж 1 залишки це залишки/кількість агентів.

Також за необхідності, для кожного контрагента в рамках кожної окремої стратегії, ми можемо заповнити низку користувацьких даних, якось так:

Також ми у будь-який момент, можемо провести натурне тестування наших стратегій

Та прослідкувати за розподілом коштів в рамках стратегії

Тут варто зазначити, що в даному прикладі користувач проживає на вулиці “Бандери”. А вона у нас де? Вірно, ось тут:

Тобто шлях вирішення того, яку стратегію буде обрано для конкретного користувача був “користувач⇒Адреса⇒Статична прив'язка / Контрагент за адресою / чи агент за замовчуванням⇒Стратегія”. У випадку, якщо б цей користувач був примусово прив'язаний до основного контрагента іншої стратегії

то і результат тестування виглядав би якось трішки інакше

У випадку, якщо не вдалось визначити стратегію на основі “Використання прив`язок” + “Основний контрагент” буде використано першу ж наявну стратегію, незалежно від її типу. Коротше всі стратегії є “Користуваче-центричними”. Також в стратегії є параметр “Тариф”. Він має пріоритет над усім іншим та ігнорує легасі-прив'язки. Тобто, якби в попередньому прикладі в користувача навіть за наявності адресного присвоєння чи присвоєного вручну контрагента був би призначений тариф Turbo - для нього було б застосовано стратегію з ID 3.

Що до порядку обробки “Розподілу коштів”, обробляються вони завжди в наступному порядку, зверху вниз:

  1. Абсолютне значення (від суми платежу віднімається значення)
  2. Відсоток від суми (від суми платежу віднімається відсоток значення)
  3. Відсоток від залишку (від залишку після п.1. та п.2. віднімається відсоток значення)
  4. Залишки (все що залишилось після п.1., п.2. та п.3. поділене на кількість агентів з цим типом)
  5. Жоден (завжди 0, просто створює присутність агента)

Для розробників

Можливі параметри:

  • username - логін користувача
  • paymentid - платіжний ID користувача
  • amount - сума коштів платежу
  • stratid - примусово вказаний ID стратегії
  • runtime - виклик рантайму ліцензії

Ясно, що один з двох параметрів username чи paymentid, на ваш розсуд є обов'язковим.

Запит:

https://billing.isp.ua/?module=remoteapi&key=UBxxxxxxxxxxxx&action=goose&username=sometestuser&amount=350

Або:

https://billing.isp.ua/?module=remoteapi&key=UBxxxxxxxxxxxx&action=goose&paymentid=123456789&amount=350

Коротко про те що відбувається в результатах та на що варто звертати увагу:

  • amount - (float) сума платежу
  • userlogin - (string) очевидно
  • paymentid - (string) теж очевидно
  • payopts - (array) масив з ключами:
    • minamount - (float) мінімально допустима сума платежу
    • maxamount - (float) максимально допустима сума платежу
    • isvalid - (bool) флажок, платіж в запиті є валідним відносно стратегії чи ніт?
    • amount -(float) власне та ж сума платежу з запиту
  • agents - (array) масив з вкладеними в нього нутрощами контрагентів з стратегії в форматі id⇒дані кожного
  • user - (array) масив з нутрощами користувача визначеного за параметрами запиту username чи paymentid якщо він існує
  • runtime - (array) вже розпакований масив рантайму ліцензії, якщо її було викликано в запиті та її встановлено в системі

Зразок того, що міститься в включі agents:

  [agents] => Array
        (
            [1] => Array
                (
                    [id] => 1
                    [bankacc] => UA111111111111111111111111111
                    [bankname] => РогиТаКопита
                    [bankcode] => 666666
                    [edrpo] => 12345678
                    [ipn] => 
                    [licensenum] => 
                    [juraddr] => Лісова 42
                    [phisaddr] => Леонтовича 13
                    [phone] => 1234567
                    [contrname] => МПП НашПровайдер
                    [agnameabbr] => 
                    [agsignatory] => 
                    [agsignatory2] => 
                    [agbasis] => 
                    [agmail] => 
                    [siteurl] => 
                    [splitamount] => 265
                    [splittype] => leftovers
                    [splitvalue] => 0
                    [extinfo] => Array
                        (
                        )
 
                    [customdata] => Array
                        (
                            [somekey] => somevalue
                            [anotherkey] => такі буковки тут теж працюють
                        )
 
                )
                .....

Особливу увагу добре би звернути там на ось ці поля:

  • splitamount - (float) вже поділена сума для кожного
  • splittype - (string) тип розподілу (absolute/percent/percentlef/leftovers/none)
  • splitvalue - (int) значення розподілу
  • extinfo - (array) легасі дані з AGENTS_EXTINFO_ON для кожного агенту
  • customdata - (array) масив користувацьких даних у форматі ключ⇒значення

Повна відповідь JSON:

{
  "amount": "350",
  "userlogin": "sometestuser",
  "paymentid": 123456789,
  "payopts": {
    "minamount": 50,
    "maxamount": 0,
    "isvalid": true,
    "amount": "350"
  },
  "id": "1",
  "name": "Базова стратегія",
  "useassigns": "1",
  "primaryagentid": "1",
  "maxamount": null,
  "tariff": "0",
  "agents": {
    "1": {
      "id": "1",
      "bankacc": "UA111111111111111111111111111",
      "bankname": "РогиТаКопита",
      "bankcode": "666666",
      "edrpo": "12345678",
      "ipn": "",
      "licensenum": "",
      "juraddr": "Лісова 42",
      "phisaddr": "Леонтовича 13",
      "phone": "1234567",
      "contrname": "МПП НашПровайдер",
      "agnameabbr": "",
      "agsignatory": "",
      "agsignatory2": "",
      "agbasis": "",
      "agmail": "",
      "siteurl": "",
      "splitamount": 265,
      "splittype": "leftovers",
      "splitvalue": "0",
      "extinfo": [],
      "customdata": {
        "somekey": "somevalue",
        "anotherkey": "такі буковки тут теж працюють"
      }
    },
    "15": {
      "id": "15",
      "bankacc": "UA333333333333333333333333333",
      "bankname": "ПриватБанк",
      "bankcode": "305299",
      "edrpo": "333333333",
      "ipn": "",
      "licensenum": "",
      "juraddr": "",
      "phisaddr": "",
      "phone": "",
      "contrname": "ФОП Нереаленко",
      "agnameabbr": "",
      "agsignatory": "",
      "agsignatory2": "",
      "agbasis": "",
      "agmail": "",
      "siteurl": "",
      "splitamount": 35,
      "splittype": "percent",
      "splitvalue": "10",
      "extinfo": [],
      "customdata": []
    },
    "24": {
      "id": "24",
      "bankacc": "UA444444444444444444444444444",
      "bankname": "ПриватБанк",
      "bankcode": "305299",
      "edrpo": "87654321",
      "ipn": "",
      "licensenum": "",
      "juraddr": "",
      "phisaddr": "",
      "phone": "",
      "contrname": "ТОВ ЧорнийЛіс",
      "agnameabbr": "",
      "agsignatory": "",
      "agsignatory2": "",
      "agbasis": "",
      "agmail": "agent@site.com",
      "siteurl": "https://ubilling.net.ua",
      "splitamount": "50",
      "splittype": "absolute",
      "splitvalue": "50",
      "extinfo": [],
      "customdata": []
    }
  },
  "user": {
    "login": "sometestuser",
    "realname": "Типу тестовий користувач",
    "Passive": "0",
    "Down": "0",
    "Password": "cepizdets",
    "AlwaysOnline": "1",
    "Tariff": "Drift",
    "TariffChange": "",
    "Credit": "0",
    "Cash": "666.75",
    "ip": "172.16.0.6",
    "mac": "98:de:d0:89:1e:31",
    "cityname": "Зловісненськ",
    "streetname": "Бандери",
    "buildnum": "22",
    "entrance": "1",
    "floor": "3",
    "apt": "124",
    "geo": "48.52782,25.05541",
    "fulladress": "Бандери 22/124",
    "phone": "8101050",
    "mobile": "+380501234567",
    "contract": "13",
    "email": "",
    "paymentid": 123456789
  },
  "runtime": []
}

Вона ж у вигляді прямого масиву

Array
(
    [amount] => 350
    [userlogin] => sometestuser
    [paymentid] => 123456789
    [payopts] => Array
        (
            [minamount] => 50
            [maxamount] => 0
            [isvalid] => 1
            [amount] => 350
        )
 
    [id] => 1
    [name] => Базова стратегія
    [useassigns] => 1
    [primaryagentid] => 1
    [maxamount] => 
    [tariff] => 0
    [agents] => Array
        (
            [1] => Array
                (
                    [id] => 1
                    [bankacc] => UA111111111111111111111111111
                    [bankname] => РогиТаКопита
                    [bankcode] => 666666
                    [edrpo] => 12345678
                    [ipn] => 
                    [licensenum] => 
                    [juraddr] => Лісова 42
                    [phisaddr] => Леонтовича 13
                    [phone] => 1234567
                    [contrname] => МПП НашПровайдер
                    [agnameabbr] => 
                    [agsignatory] => 
                    [agsignatory2] => 
                    [agbasis] => 
                    [agmail] => 
                    [siteurl] => 
                    [splitamount] => 265
                    [splittype] => leftovers
                    [splitvalue] => 0
                    [extinfo] => Array
                        (
                        )
 
                    [customdata] => Array
                        (
                            [somekey] => somevalue
                            [anotherkey] => такі буковки тут теж працюють
                        )
 
                )
 
            [24] => Array
                (
                    [id] => 24
                    [bankacc] => UA444444444444444444444444444
                    [bankname] => ПриватБанк
                    [bankcode] => 305299
                    [edrpo] => 87654321
                    [ipn] => 
                    [licensenum] => 
                    [juraddr] => 
                    [phisaddr] => 
                    [phone] => 
                    [contrname] => ТОВ ЧорнийЛіс
                    [agnameabbr] => 
                    [agsignatory] => 
                    [agsignatory2] => 
                    [agbasis] => 
                    [agmail] => agent@site.com
                    [siteurl] => https://ubilling.net.ua
                    [splitamount] => 50
                    [splittype] => absolute
                    [splitvalue] => 50
                    [extinfo] => Array
                        (
                        )
 
                    [customdata] => Array
                        (
                        )
 
                )
 
            [15] => Array
                (
                    [id] => 15
                    [bankacc] => UA333333333333333333333333333
                    [bankname] => ПриватБанк
                    [bankcode] => 305299
                    [edrpo] => 333333333
                    [ipn] => 
                    [licensenum] => 
                    [juraddr] => 
                    [phisaddr] => 
                    [phone] => 
                    [contrname] => ФОП Нереаленко
                    [agnameabbr] => 
                    [agsignatory] => 
                    [agsignatory2] => 
                    [agbasis] => 
                    [agmail] => 
                    [siteurl] => 
                    [splitamount] => 35
                    [splittype] => percent
                    [splitvalue] => 10
                    [extinfo] => Array
                        (
                        )
 
                    [customdata] => Array
                        (
                        )
 
                )
 
        )
 
    [user] => Array
        (
            [login] => sometestuser
            [realname] => Типу тестовий користувач
            [Passive] => 0
            [Down] => 0
            [Password] => cepizdets
            [AlwaysOnline] => 1
            [Tariff] => Drift
            [TariffChange] => 
            [Credit] => 0
            [Cash] => 666.75
            [ip] => 172.16.0.6
            [mac] => 98:de:d0:89:1e:31
            [cityname] => Зловісненськ
            [streetname] => Бандери
            [buildnum] => 22
            [entrance] => 1
            [floor] => 3
            [apt] => 124
            [geo] => 48.52782,25.05541
            [fulladress] => Бандери 22/124
            [phone] => 8101050
            [mobile] => +380501234567
            [contract] => 13
            [email] => 
            [paymentid] => 123456789
        )
 
    [runtime] => Array
        (
        )
 
)
gooseresistance.1727959965.txt.gz · Востаннє змінено: 2024/10/03 15:52 повз nightfly