====== Опір Гусака ====== ===== Як виглядає? ===== ну якось так {{ :gooseresistance00.png |}} а ви що очікували? ===== Як вмикається? ===== За допомогою відповідної опції GOOSE_RESISTANCE=1 ===== Що дозволяє робити? ===== Ну для початку, можна на нього натискати {{:gres1.png|}} Щоб дізнатись, що в нас нема жодних стратегій {{:gres2.png|}} Тут ми можемо створювати "стратегії" {{:gres3.png|}} Звичайно ми можемо створити довільну кількість стратегій гуся {{:gres4.png|}} Опція "Використання прив'язок" в купі з значенням "Основний контрагент" напряму впливає на те, як вибиратиметься стратегія відносно базових прив'язок контрагентів, котрі описуються опціями AGENTS_ASSIGN та DEFAULT_ASSIGN_AGENT. У випадку, якщо чекбокс "Використання прив'язок" знято - стратегія просто собі є і є. Кожну з них нам обов'язково необхідно налаштувати, додавши в неї всіх(!) контрагентів які будуть приймати в ній участь {{:gres5.png|}} Тип "розподілу" може мати наступні значення: * **Жоден** - завжди 0 * **Відсоток від суми** - відсоток від суми платежа * **Відсоток від залишку** - відсоток від залишків суми платежа після обчислень * **Абсолютне** - абсолютне значення в грошах, від суми платежа * **Залишки** - те що лишилось після обчислень. Якщо агентів з цим типом розподілу більше ніж 1 залишки це залишки/кількість агентів. Також за необхідності, для кожного контрагента в рамках кожної окремої стратегії, ми можемо заповнити низку користувацьких даних, якось так: {{:gres6.png|}} Також ми у будь-який момент, можемо провести натурне тестування наших стратегій {{:gres7.png|}} Та прослідкувати за розподілом коштів в рамках стратегії {{:gres8.png|}} Тут варто зазначити, що в даному прикладі користувач проживає на вулиці "Бандери". А вона у нас де? Вірно, ось тут: {{:gres9.png|}} Тобто шлях вирішення того, яку стратегію буде обрано для конкретного користувача був "користувач=>Адреса=>Статична прив'язка / Контрагент за адресою / чи агент за замовчуванням=>Стратегія". У випадку, якщо б цей користувач був примусово прив'язаний до основного контрагента іншої стратегії {{:gres10.png|}} {{:gres11.png|}} то і результат тестування виглядав би якось трішки інакше {{:gres12.png|}} У випадку, якщо не вдалось визначити стратегію на основі "Використання прив`язок" + "Основний контрагент" буде використано першу ж наявну стратегію, незалежно від її типу. Коротше всі стратегії є "Користуваче-центричними". Також в стратегії є параметр "Тариф". Він має пріоритет над усім іншим та ігнорує легасі-прив'язки. Тобто, якби в попередньому прикладі в користувача навіть за наявності адресного присвоєння чи присвоєного вручну контрагента був би призначений тариф Turbo - для нього було б застосовано стратегію з ID 3. Що до порядку обробки "Розподілу коштів", обробляються вони завжди в наступному порядку, зверху вниз: - Абсолютне значення (від суми платежу віднімається значення) - Відсоток від суми (від суми платежу віднімається відсоток значення) - Відсоток від залишку (від залишку після п.1. та п.2. віднімається відсоток значення) - Залишки (все що залишилось після п.1., п.2. та п.3. поділене на кількість агентів з цим типом) - Жоден (завжди 0, просто створює присутність агента) ===== Для розробників ===== Можливі параметри виклику з RemoteAPI: * **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": [], "agentsextinfo": { "5": { "id": "5", "agentid": "5", "service_type": "Internet", "internal_paysys_name": "CITY24M_RYS", "internal_paysys_id": "", "internal_paysys_srv_id": "", "paysys_token": "", "paysys_secret_key": "", "paysys_password": "", "payment_fee_info": "", "paysys_callback_url": "" }, "6": { "id": "6", "agentid": "5", "service_type": "Internet", "internal_paysys_name": "EASYPAYM_RYS", "internal_paysys_id": "", "internal_paysys_srv_id": "", "paysys_token": "", "paysys_secret_key": "", "paysys_password": "", "payment_fee_info": "", "paysys_callback_url": "" }, "7": { "id": "7", "agentid": "3", "service_type": "Internet", "internal_paysys_name": "CITY24M_CHER", "internal_paysys_id": "", "internal_paysys_srv_id": "", "paysys_token": "", "paysys_secret_key": "", "paysys_password": "", "payment_fee_info": "", "paysys_callback_url": "" }, "9": { "id": "9", "agentid": "5", "service_type": "Internet", "internal_paysys_name": "PBANKM_RYS", "internal_paysys_id": "5", "internal_paysys_srv_id": "2", "paysys_token": "", "paysys_secret_key": "", "paysys_password": "", "payment_fee_info": "subscriber", "paysys_callback_url": "" } } } Вона ж у вигляді прямого масиву 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 ( ) [agentsextinfo] => Array ( [7] => Array ( [id] => 7 [agentid] => 3 [service_type] => Internet [internal_paysys_name] => CITY24M_CHER [internal_paysys_id] => [internal_paysys_srv_id] => [paysys_token] => [paysys_secret_key] => [paysys_password] => [payment_fee_info] => [paysys_callback_url] => ) [11] => Array ( [id] => 11 [agentid] => 3 [service_type] => Internet [internal_paysys_name] => PBANKM_CHER [internal_paysys_id] => 3 [internal_paysys_srv_id] => 1 [paysys_token] => [paysys_secret_key] => [paysys_password] => [payment_fee_info] => subscriber [paysys_callback_url] => ) [6] => Array ( [id] => 6 [agentid] => 5 [service_type] => Internet [internal_paysys_name] => EASYPAYM_RYS [internal_paysys_id] => [internal_paysys_srv_id] => [paysys_token] => [paysys_secret_key] => [paysys_password] => [payment_fee_info] => [paysys_callback_url] => ) [5] => Array ( [id] => 5 [agentid] => 5 [service_type] => Internet [internal_paysys_name] => CITY24M_RYS [internal_paysys_id] => [internal_paysys_srv_id] => [paysys_token] => [paysys_secret_key] => [paysys_password] => [payment_fee_info] => [paysys_callback_url] => ) [9] => Array ( [id] => 9 [agentid] => 5 [service_type] => Internet [internal_paysys_name] => PBANKM_RYS [internal_paysys_id] => 5 [internal_paysys_srv_id] => 2 [paysys_token] => [paysys_secret_key] => [paysys_password] => [payment_fee_info] => subscriber [paysys_callback_url] => ) ) )