# Prodamus: Получить фискальные чеки заказа

Сценарий из mcp-everything. Актуально на 2026-10-12.

Используй после оплаты, чтобы получить ссылки на чеки прихода, возврата или коррекции у оператора фискальных данных.

1. Возьми секретный ключ платёжной страницы.
2. Рассчитай `<token> = base64_encode(<timestamp> . md5(<SECRET_KEY>))`.
3. Выполни `GET /rest/receipt/getReceipts` с `order_id`, заголовками `Timestamp` и `Authorization: Bearer <token>`.
4. Обработай массив чеков; пустой массив означает, что доступных чеков нет.

```php
<?php

$domain = 'example.payform.ru';
$secretKey = 'секретный_ключ_домена';
$timestamp = (string) time();
$token = base64_encode($timestamp . md5($secretKey));

$ch = curl_init("https://{$domain}/rest/receipt/getReceipts?order_id=99990091");
curl_setopt_array($ch, [
    CURLOPT_HTTPGET => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Timestamp: {$timestamp}",
        "Authorization: Bearer {$token}",
        'Accept: application/json',
    ],
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
```

## Базовые URL

- Платёжная страница и REST API: `https://<subdomain>.payform.ru`
- Скрипт виджета: `https://widget.prodamus.ru/src/init.js`
- Стили виджета: `https://widget.prodamus.ru/src/init.css`
- Отдельного тестового URL в изученных страницах не указано: `demo_mode=1`

## Авторизация

Тип: Другое

Секретный ключ доступен в настройках платёжной страницы в блоке «Секретный ключ». Для создания платёжных ссылок, управления подписками и вызова `GET или POST /rest/payment/do/` данные запроса без поля `signature` рекурсивно приводят к строкам, сортируют по ключам, преобразуют в JSON, экранируют `/` и подписывают HMAC SHA-256. Готовые реализации `Hmac.php`, `hmac.js`, `prodamus_hmac.py`, `HmacHelper.cs`, `HmacHelper.java` и `hmac.go` опубликованы на страницах документации.

Входящий webhook подписан в заголовке `Sign`; подпись проверяется тем же секретным ключом платёжной страницы. Для оплаты по связке поддержка выдаёт отдельный ключ, привязанный к `sys`; ключ платёжной страницы используют только для первого платежа.

Для `GET /rest/receipt/getReceipts` и `GET /rest/payment-methods/getList` передаются заголовки `Timestamp` и `Authorization: Bearer <token>`, где `<token> = base64_encode(<timestamp> . md5(<SECRET_KEY>))`.

## Методы сценария

### GET /rest/receipt/getReceipts — Получить фискальные чеки

Возвращает ссылки на доступные чеки оплаченного заказа. Служебные чеки, включая чеки маркапа и агентского вознаграждения, не возвращаются.

Документация: https://help.prodamus.ru/payform/tekhnicheskaya-dokumentaciya/rest-api/api-fiskalnyy-cheki#get-/rest/receipt/getreceipts

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `Authorization` | header | string | да | Bearer <token> |
| `Timestamp` | header | string | да | Unix timestamp, использованный в токене |
| `order_id` | query | integer | да | Номер заказа в Prodamus |
| `is_demo` | query | boolean | нет | Запрос для демо-режима платёжной страницы |

Пример ответа:

```json
[
  {
    "name": "Чек прихода",
    "link": "https://lk.platformaofd.ru/web/noauth/cheque?fn=7384440900816510&fp=914366710&i=215624",
    "sum": "1.00"
  }
]
```

## Нюансы

- `urlSuccess` и клиентские редиректы не подтверждают поступление денег. Выдавай товар или доступ только после проверенного webhook с `payment_status=success`.
- Подпись запроса считается без поля `signature`; значения приводятся к строкам, ключи сортируются рекурсивно, JSON подписывается HMAC SHA-256 после экранирования `/`.
- Документация webhook называет базовым форматом `application/x-www-form-urlencoded`, а тестовый чек-лист ожидает `multipart/form-data`; для `callbackType=json` приходит `application/json`. Приёмник должен разбирать фактически выбранный формат до проверки `Sign`.
- Повторная доставка webhook допустима: поле `attempt` может увеличиваться. Обработчик должен быть идемпотентным и отвечать `HTTP 200` только после успешной обработки.
- При `subscription` корзина `products` игнорируется. После деактивации подписки от лица пользователя повторная активация невозможна; нужно оформить подписку заново.
- Оплата по связке не поддерживает тестовый режим. Для первого платежа нужен ключ страницы, для `/rest/payment/do/` — отдельный ключ от поддержки, привязанный к `sys`.
- Синхронный `{"success":true}` от `/rest/payment/do/` подтверждает только инициацию. Итог проверяется по webhook с `payment_init=api`.
- Для `GET /rest/payment-methods/getList` `Timestamp` может быть любой непустой строкой: сервер не проверяет формат или актуальность, срок запроса не ограничен и защиты от повторного воспроизведения нет.
- Тело ответа платёжной формы всегда в UTF-8, но `Content-Type` объявляет `charset=WINDOWS-1251`; это отдельно отмечено в примерах C#.
- Статусы `postMessage` гарантированно доступны для карт РФ, СБП и Сбербанк-онлайн. Для других способов оплаты используй webhook.
- Если `available_payment_methods` отфильтровал все способы, параметр игнорируется и показывается полный список; если пустой результат дал `available_payment_method_groups`, форма показывает ошибку об отсутствии методов.
- В демо-платежах защитное изменение подписи применяется только когда боевой режим формы отключил менеджер Prodamus; пользовательский демо-режим в настройках страницы на подпись не влияет.

## Другие сценарии

- [Принять разовую оплату по ссылке](https://mcp-everything.ru/integrations/prodamus/scenarios/prinyat-razovuyu-oplatu-po-ssylke.md)
- [Надёжно обработать webhook об оплате](https://mcp-everything.ru/integrations/prodamus/scenarios/nadezhno-obrabotat-webhook-ob-oplate.md)
- [Принять оплату во встроенном виджете](https://mcp-everything.ru/integrations/prodamus/scenarios/prinyat-oplatu-vo-vstroennom-vidzhete.md)
- [Создать и остановить подписку](https://mcp-everything.ru/integrations/prodamus/scenarios/sozdat-i-ostanovit-podpisku.md)
- [Списать деньги по сохранённой карте](https://mcp-everything.ru/integrations/prodamus/scenarios/spisat-dengi-po-sohranennoy-karte.md)

---

Если этого недостаточно — официальная документация: https://help.prodamus.ru/payform/tekhnicheskaya-dokumentaciya
Вся интеграция одним документом: https://mcp-everything.ru/integrations/prodamus.md
