Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версій Попередня ревізія | Попередня ревізія | ||
|
xmlagent [2020/09/21 14:55] |
xmlagent [2025/10/21 12:59] (поточний) nightfly [XMLAgent] |
||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== XMLAgent ====== | ||
| + | Для зовнішніх програм, | ||
| + | Починаючи з релізу 1.4.5 **XMLAgent REST API** тепер винесено у окремий клас і додано багацько нових викликів. | ||
| + | |||
| + | Приклади URL для створення запитів до **XMLAgent REST API** (детальніше дивіться в описі кожного запиту нижче): | ||
| + | |||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | * **? | ||
| + | |||
| + | |||
| + | За замовчуванням, | ||
| + | Для отримання даних у вигляді **JSON-документу** просто додайте GET параметр **json=true**. | ||
| + | |||
| + | |||
| + | ====== Авторизація ====== | ||
| + | |||
| + | У випадку, | ||
| + | |||
| + | * **uberlogin** | ||
| + | * **uberpassword** | ||
| + | |||
| + | |||
| + | І як приклад авторизації користувача з логіном // | ||
| + | |||
| + | < | ||
| + | ? | ||
| + | </ | ||
| + | |||
| + | Починаючи з релізу 1.4.7 доступний додатковий базовий рівень так званої " | ||
| + | Аутентифікаційний токен передається відповідним GET-параметром **uberkey**. \\ | ||
| + | Виглядає це все загалом якось так: | ||
| + | < | ||
| + | ? | ||
| + | </ | ||
| + | Так, як бачимо авторизація за логіном/ | ||
| + | Слід лише мати на увазі, що **авторизація за логіном/ | ||
| + | |||
| + | У разі помилки авторизації, | ||
| + | |||
| + | < | ||
| + | ERROR_WRONG_UBERAUTH | ||
| + | </ | ||
| + | |||
| + | з HTTP кодом 401 (починаючи з релізу Ubilling 1.2.7) | ||
| + | |||
| + | Примусова авторизація має пріоритет перед усіма стандартними типами авторизації, | ||
| + | |||
| + | Також ви можете автоматично авторизувати користувача у [[wolfdispatcher|вашому Telegram-боті]], | ||
| + | |||
| + | < | ||
| + | https:// | ||
| + | </ | ||
| + | |||
| + | Так, розділювач - символ " | ||
| + | |||
| + | ====== Трохи про " | ||
| + | Невелика порція рекомендацій, | ||
| + | * не треба вмикати XMLAgent " | ||
| + | * поточне REST API може працювати без авторизаці, | ||
| + | * не треба занадто самовпевнено думати, | ||
| + | * ніколи не відкривайте XMLAgent " | ||
| + | |||
| + | ====== Приклади запитів та відповідей ====== | ||
| + | |||
| + | ===== Загальні дані користувача ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Загальні дані користувача але з примусовою авторизацією ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Інформація про попередні платежі користувача ===== | ||
| + | < | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Платежі користувача, | ||
| + | |||
| + | < | ||
| + | \\ | ||
| + | |||
| + | ===== Списання коштів з рахунку користувача ===== | ||
| + | < | ||
| + | Цей виклик підтримує фільтрацію по даті **з - по**. Для цього треба передати відповідні параметри: | ||
| + | * **datefrom=2024-01-11** - дата **з** | ||
| + | * **dateto=2024-01-21** | ||
| + | Ці параметри абсолютно незалежні один від і одного і передавати можна будь-який з них окремо. Відповідно, | ||
| + | Також варто зазначити, | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Активні оголошення кабінету користувача ===== | ||
| + | < | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | <message unic=" | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Усі тікети користувача ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Створення support-тікету (тобто запиту в техпідтримку) ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | Так, ви все правильно здогадалися: | ||
| + | Цей запит повертає **created = success** та **ID** створеної support-заявки разі успіху або **created = error** та **ID = 0** у разі невдачі. | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Відповідь на support-тікет ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | Все теж саме, що й у минулому запиті, | ||
| + | **Слід мати на увазі**, | ||
| + | Цей запит повертає **created = success** та **ID** створеної support-заявки разі успіху або **created = error** та **ID = 0** у разі невдачі. | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Створення signup-тікету (тобто заявки на підключення)===== | ||
| + | |||
| + | < | ||
| + | **ВАЖЛИВО** \\ | ||
| + | Це єдиний на даний момент запит, який має відправлятися методом **POST** і " | ||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Варто зазначити, | ||
| + | Цей запит повертає **created = success** та **ID** створеної заявки на підключення у разі успіху або **created = error** та **ID = 0** у разі невдачі. | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Платіжні системи OpenPayz ===== | ||
| + | < | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Кредитування ===== | ||
| + | < | ||
| + | |||
| + | У разі успіху ми маємо отримати | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | У разі виникнення помилки, | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Або наприклад, | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Або як приклад, | ||
| + | < | ||
| + | http:// | ||
| + | </ | ||
| + | |||
| + | Відповідь: | ||
| + | |||
| + | <code json> | ||
| + | {" | ||
| + | </ | ||
| + | |||
| + | Також ви можете здійснити перевірку " | ||
| + | |||
| + | < | ||
| + | http:// | ||
| + | </ | ||
| + | |||
| + | Можливі коди помилок: | ||
| + | * 0 - все пройшло успішно (success) | ||
| + | * 1 - кредитування вимкнено конфігурацією (disabled) | ||
| + | * 2 - неприпустимий день для кредитування (wrong day) | ||
| + | * 3 - кредит вже встановлений (already have a credit) | ||
| + | * 4 - акаунт заморожений (account frozen) | ||
| + | * 5 - грошей на рахунку достатньо, | ||
| + | * 6 - занадто мало грошей на рахунку для того, щоб жити в кредит (not enough money) | ||
| + | * 7 - несподівана помилка (unexpected error) | ||
| + | * 8 - кредитування не доступне на поточному тарифі (not allowed on this tariff) | ||
| + | * 9 - вже користувалися кредитуванням у поточному місяці (already used in this month) | ||
| + | * 10 - не погасили попередній борг (not paid previous) | ||
| + | |||
| + | |||
| + | Починаючи з релізу Ubilling 1.2.0 набір полів, що повертаються на виклики **agentcredit** істотно розширено: | ||
| + | |||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | А саме крім результату в status і message з текстом того, що відбувається, | ||
| + | * fullmessage - повне повідомлення про успіх чи помилку в локалі кабінету за замовчуванням | ||
| + | * minday - початковий день можливості надання послуги кредитування | ||
| + | * maxday - кінцевий день можливості надання послуги кредитування | ||
| + | * creditterm - кількість днів на які буде надано кредит | ||
| + | * creditprice - вартість послуги кредитування | ||
| + | * currency - валюта кабінету користувача | ||
| + | * creditintro - короткий опис послуги в локалі кабінету за замовчуванням | ||
| + | \\ | ||
| + | |||
| + | ===== Картки поповнення ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | Якщо все пройшло успішно: | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | У разі невдачі: | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | Варто також зауважити, | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Асоційований з користувачем контрагент ===== | ||
| + | < | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Поточний тариф та всі віртуальні сервіси користувача ===== | ||
| + | < | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ===== Тарифи, | ||
| + | < | ||
| + | Потребує ввімкненого функціоналу самостійної зміни тарифу в особистому кабінеті користувача. \\ | ||
| + | Так-так: | ||
| + | Виклик повертає дані опції **TC_TARIFFSALLOWED**, | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | |||
| + | ===== Всі поточні активні тарифи та віртуальні сервіси провайдеру ===== | ||
| + | < | ||
| + | Є важливий нюанс щодо цього виклику. Оскільки мова йде про " | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ====== Заморозка/ | ||
| + | ===== Отримання даних про стан замороженості користувача ===== | ||
| + | < | ||
| + | <code xml> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Заморозка користувача ===== | ||
| + | < | ||
| + | Тут все доволі просто: | ||
| + | <code xml> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | або про те, що користувач вже заморожений: | ||
| + | <code xml> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Розморозка користувача ===== | ||
| + | < | ||
| + | Повністю ідентична по своїй суті процедура до попередньої - тільки рівно з протилежним результатом. Але є важливі нюанси: | ||
| + | * щоби цей виклик в принципі працював опція XMLAGENT_SELF_UNFREEZE_ALLOWED в userstats.ini має бути ввімкненою | ||
| + | * майте на увазі, що ця операція виконується "as is" - без усіляких додаткових перевірок(так, | ||
| + | |||
| + | Успішне виконання поверне ось такий месседж: | ||
| + | <code xml> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | якщо ж користувач НЕ заморожений - поверне отаке: | ||
| + | <code xml> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | \\ | ||
| + | |||
| + | ====== XMLAgent вимкнено конфігурацією ====== | ||
| + | |||
| + | У цьому випадку ми отримуємо помилку вигляду | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Ввімкнення ====== | ||
| + | |||
| + | Потрібно включити відповідну опцію [[userstats|userstats.ini]] | ||
| + | |||
| + | <code ini> | ||
| + | | ||
| + | </ | ||