Ключ идемпотентности — external_id
При создании платежа вы передаёте external_id — ваш собственный идентификатор заказа. Пара (мерчант, external_id) уникальна. Если вы повторитеPOST /integration/transactions с тем же external_id, Cashera не создаст новую транзакцию, а вернёт уже существующую.
Это позволяет безопасно повторять запрос при таймаутах и сетевых сбоях: вы либо создадите платёж, либо получите тот, что уже был создан по этому external_id.
Поведение
- Новый external_id → создаётся транзакция, ответ
201 Created. - Существующий external_id → возвращается ранее созданная транзакция с её текущим статусом.
- Тело при повторе игнорируется — возвращается исходная транзакция, даже если сумма или метод отличаются.
# Тот же external_id — вернётся уже созданная транзакцияcurl -X POST .../integration/transactions \-H "X-Api-Key: $CASHERA_API_KEY" \-d '{ "amount": 49900, "currency": "RUB","payment_method": "sbp","external_id": "order-10428" }'
Генерируйте external_id на стороне вашей системы и привязывайте строго к одному заказу. Не переиспользуйте его для разных платежей — иначе получите ссылку на старую транзакцию.
Поиск по external_id
По этому же идентификатору можно в любой момент запросить статус через GET /integration/transactions/by-external-id/{externalId}, не сохраняя uuid Cashera на своей стороне.