Ответ 200 OK, а платёж не прошёл: почему «интеграция работает» — неверный вывод
Вы проверяете интеграцию с платёжным провайдером и получаете такой ответ:
HTTP/1.1 200 OK
{
"status": "error",
"code": "LIMIT_EXCEEDED",
"message": "daily limit reached",
"payment_id": null
}
В тикете коллега написал: «API отвечает 200, интеграция работает, проблема на стороне клиента».
Что здесь не так?
- HTTP-код говорит лишь о том, что запрос принят и обработан; бизнес-результат лежит в теле, а там отказ по дневному лимиту
- Ничего: код 200 OK — исчерпывающий признак успешно выполненной операции, дальше в тело ответа можно не смотреть
- Провайдер обязан отдавать 4xx при отказе, поэтому до исправления на его стороне обращение можно закрыть
- Поле payment_id пустое из-за ошибки сериализации ответа, сам платёж при этом прошёл и деньги списаны
