📚 RM.Loyalty.docs
➕ Новая статья
Редактирование: loyaltyscripts-и-php
Путь:
09_Справочник_API/loyaltyscripts-и-php.md
Содержимое (Markdown)
# LoyaltyScripts и PHP-скрипты-примеры **LoyaltyScripts** — набор сервисных методов для массовых операций над бонусами и кошельками через API (пересчёт балансов, перенос бонусов, ручное начисление). Используются техподдержкой и разработкой при разборе инцидентов. - **URL:** `https://app.remarked.ru/api/v2/ls` - **Исходники скриптов:** `app/helpers/LoyaltyScripts` - **Авторизация:** Bearer Token. *Токен в документацию не выносится (доступы хранятся во внутренней базе знаний, раздел 18).* ## Формат запроса ```json { "method": "reloadBonusesBalanceV2", "params": { "point": 347000, "wallet_id": 119 } } ``` ## Список методов | Метод | Описание | Параметры | |---|---|---| | `reloadBonusesBalanceV2` | Пересчёт «Бонусов всего» | `point`, `wallet_id` | | `moveBonusesBalance` | Перенос бонусов с кошельков iiko/keeper | `point`, `wallet_id` | | `moveBonusesBalanceByGuestsIds` | То же, по списку ID гостей | `point`, `wallet_id`, `guests` | | `reloadBonusesBalanceByIdsV2` | Пересчёт кошельков по ID гостей | `point`, `guests` | | `createWalletsAndTransferBonuses` | Создание кошельков + перенос бонусов | `point`, `wallet_id`, `provider` | | `refillBonusesByGuestId` | Начисление бонусов с записью и комментарием | `point`, `wallet_id`, `provider`, `sum`, `comment`, `guests` | | `getDishesGroups` | Иерархия групп для блюд | `point`, `dishes` | ## Параметры | Параметр | Тип | Описание | |---|---|---| | `point` | int | Поинт (для сети — общий) | | `wallet_id` | int | ID кошелька (из БД или ЛК при редактировании) | | `guests` | array | Массив ID гостей | | `dishes` | array | Массив ID блюд | | `provider` | string | `rkeeper` или `iiko` | | `sum` | int | Сумма бонусов (> 0) | | `comment` | string | Комментарий, виден во вкладке «Бонусы ПЛ» | ## Пример PHP-вызова Скрипт обращается к LoyaltyScripts по HTTP. Токен берётся из защищённого конфига/переменной окружения и в коде не хранится. ```php <?php $url = 'https://app.remarked.ru/api/v2/ls'; $token = getenv('REMARKED_LS_TOKEN'); // токен из защищённого окружения, не хардкодить $payload = [ 'method' => 'refillBonusesByGuestId', 'params' => [ 'point' => 347000, 'wallet_id' => 119, 'provider' => 'iiko', 'sum' => 500, 'comment' => 'Компенсация по обращению', 'guests' => [40404100, 40404101], ], ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer ' . $token, ], CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE), ]); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $data = json_decode($response, true); // Проверять не только HTTP-код, но и поле status/message внутри JSON-ответа echo "HTTP {$status}: {$response}\n"; ``` > **Безопасность:** токены LoyaltyScripts и любых API-методов не указываются в коде и документации. Используйте переменные окружения или защищённое хранилище (доступы — раздел 18 внутренней БЗ).
💾 Сохранить
Отмена