Loyaltyscripts и php

LoyaltyScripts и PHP-скрипты-примеры

LoyaltyScripts — набор сервисных методов для массовых операций над бонусами и кошельками через API (пересчёт балансов, перенос бонусов, ручное начисление). Используются техподдержкой и разработкой при разборе инцидентов.

  • URL: https://app.remarked.ru/api/v2/ls
  • Исходники скриптов: app/helpers/LoyaltyScripts
  • Авторизация: Bearer Token. Токен в документацию не выносится (доступы хранятся во внутренней базе знаний, раздел 18).

Формат запроса

{
  "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
$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 внутренней БЗ).