Интеграция с 1С
Приём платежей клуба из 1С на кошельки игроков. Доступ — токен 1С в заголовке X-1C-Token.
Проверка связи и токена #
/v1/integrations/1c/pingДоступ: Токен 1С Заголовок X-1C-Token: <токен 1С>.
Проверяет токен и возвращает счётчики принятых платежей: всего и несопоставленных (unmatched). Вызывайте при настройке обмена и перед выгрузкой.
Заголовки
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
X-1C-Token | строка | да | Токен интеграции 1С |
Пример запроса
curl -X GET "https://адрес-вашего-сервера/api/v1/integrations/1c/ping" \
-H "X-1C-Token: <токен 1С>"Ответы
| Код | detail | Значение |
|---|---|---|
| 200 | — | Успешный ответ; пример ниже |
| 401 | bad_1c_token | Неверный токен 1С или интеграция выключена |
| 422 | […] | Ошибка проверки параметров или тела: detail — список ошибок |
Пример ответа
{"ok": true, "payments": 128, "unmatched": 3}Приём пачки платежей из 1С #
/v1/integrations/1c/paymentsДоступ: Токен 1С Заголовок X-1C-Token: <токен 1С>.
Принимает пачку от 1 до 500 платежей. Платёж определяется полем ext_id (номер документа оплаты в 1С): повторная отправка того же ext_id ничего не зачисляет и возвращается с result=duplicate, поэтому пачку можно безопасно отправлять повторно. Игрок ищется по телефону: найден — сумма зачисляется на его кошелёк (applied); нет игрока с таким телефоном — платёж сохраняется как unmatched и зачисляется позже через повторное сопоставление; телефон не распознан — rejected с error=bad_phone.
Заголовки
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
X-1C-Token | строка | да | Токен интеграции 1С |
Тело запроса application/json
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
payments | массив [объект] | да | Платежи, от 1 до 500 элементов от 1; элементов до 500 |
payments[].ext_id | строка | да | Номер документа оплаты в 1С — ключ идемпотентности длина от 1; длина до 64 |
payments[].phone | строка | да | Телефон игрока: +7XXXXXXXXXX, 8XXXXXXXXXX или 10 цифр длина от 10; длина до 20 |
payments[].amount | целое | да | Сумма в целых рублях, больше 0 и не больше 1 000 000 больше 0; не больше 1000000 |
payments[].paid_at | строка (дата и время) | да | Дата и время оплаты (ISO 8601) |
payments[].purpose | строка | нет | Назначение — попадёт в историю кошелька игрока длина до 200 |
payments[].kind | строка | нет | Вид: topup, membership, booking, other (иное — other)длина до 12; по умолчанию "topup" |
Пример запроса
curl -X POST "https://адрес-вашего-сервера/api/v1/integrations/1c/payments" \
-H "X-1C-Token: <токен 1С>" \
-H "Content-Type: application/json" \
-d '{
"payments": [
{
"ext_id": "00-000123",
"phone": "+79000000001",
"amount": 3500,
"paid_at": "2026-10-02T10:15:00+03:00",
"purpose": "Бронь корта",
"kind": "booking"
}
]
}'Ответы
| Код | detail | Значение |
|---|---|---|
| 200 | — | Успешный ответ; пример ниже |
| 401 | bad_1c_token | Неверный токен 1С или интеграция выключена |
| 422 | […] | Ошибка проверки параметров или тела: detail — список ошибок |
Пример ответа
{
"ok": true,
"applied": 1,
"unmatched": 1,
"duplicate": 0,
"rejected": 0,
"items": [
{
"ext_id": "00-000123",
"phone": "+79000000001",
"amount": 3500,
"kind": "booking",
"purpose": "Бронь корта",
"paid_at": "2026-10-02T10:15:00+03:00",
"status": "applied",
"error": "",
"user_id": "3d6e9a10-5b2c-4f8e-a1d7-6c4b2e0f9a83",
"applied_at": "2026-10-02T07:15:04+00:00",
"result": "applied"
},
{
"ext_id": "00-000124",
"phone": "+79000000002",
"amount": 2000,
"kind": "topup",
"purpose": "",
"paid_at": "2026-10-02T10:20:00+03:00",
"status": "unmatched",
"error": "no_user_with_phone",
"user_id": null,
"applied_at": null,
"result": "unmatched"
}
]
}Сверка платежей #
/v1/integrations/1c/paymentsДоступ: Токен 1С Заголовок X-1C-Token: <токен 1С>.
Список принятых облаком платежей для сверки с 1С, новые первыми. Фильтры: status (applied, unmatched, rejected), since — время приёма не раньше указанного, limit — от 1 до 1000 (по умолчанию 200).
Параметры запроса
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
status | строка | нет | Фильтр статуса: applied, unmatched, rejected |
since | строка (дата и время) | нет | Время приёма не раньше (ISO 8601) |
limit | целое | нет | Сколько записей вернуть не меньше 1; не больше 1000; по умолчанию 200 |
Заголовки
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
X-1C-Token | строка | да | Токен интеграции 1С |
Пример запроса
curl -X GET "https://адрес-вашего-сервера/api/v1/integrations/1c/payments?status=unmatched&since=2026-10-01T00:00:00%2B03:00&limit=200" \
-H "X-1C-Token: <токен 1С>"Ответы
| Код | detail | Значение |
|---|---|---|
| 200 | — | Успешный ответ; пример ниже |
| 401 | bad_1c_token | Неверный токен 1С или интеграция выключена |
| 422 | […] | Ошибка проверки параметров или тела: detail — список ошибок |
Пример ответа
{
"items": [
{
"ext_id": "00-000124",
"phone": "+79000000002",
"amount": 2000,
"kind": "topup",
"purpose": "",
"paid_at": "2026-10-02T10:20:00+03:00",
"status": "unmatched",
"error": "no_user_with_phone",
"user_id": null,
"applied_at": null
}
]
}Повторно сопоставить несопоставленные платежи #
/v1/integrations/1c/payments/retryДоступ: Токен 1С Заголовок X-1C-Token: <токен 1С>.
Повторно ищет игроков для всех платежей в статусе unmatched и зачисляет найденным. Нужен после того, как игроки зарегистрировались в приложении. Тела нет.
Заголовки
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
X-1C-Token | строка | да | Токен интеграции 1С |
Пример запроса
curl -X POST "https://адрес-вашего-сервера/api/v1/integrations/1c/payments/retry" \
-H "X-1C-Token: <токен 1С>"Ответы
| Код | detail | Значение |
|---|---|---|
| 200 | — | Успешный ответ; пример ниже |
| 401 | bad_1c_token | Неверный токен 1С или интеграция выключена |
| 422 | […] | Ошибка проверки параметров или тела: detail — список ошибок |
Пример ответа
{"ok": true, "checked": 3, "applied": 1}