Рекомендации
| Что | Почему |
|---|---|
Считайте коллбеки повторяемыми и дедуплицируйте по идентификатору события (id, в прежнем конверте — event_id) | Одно событие может прийти несколько раз; идентификатор между попытками не меняется, номер попытки лежит отдельно |
| Не полагайтесь на коллбек как на единственный источник состояния | После седьмой неуспешной попытки доставка прекращается — дальше расписание вышло бы за минутное окно песочницы. Состояние всегда доступно опросом GET /invoices/{invoice_id} |
Ветвитесь по error., а не по тексту message | Текст сообщения не является частью контракта и может измениться |
Храните и invoice_id, и merchant_order_id | Первый — ключ на стороне платформы, второй — ваш; искать инвойс можно по обоим |
| Держите обработчик коллбеков быстрым | Отвечайте 2xx сразу, тяжёлую работу уносите в очередь: отправитель ждёт ответа ограниченное время и считает таймаут неуспехом |
| Закрывайте инвойс, прежде чем создавать следующий тому же клиенту | Пока предыдущий не закрыт, новый заказ получит 409 с id существующего в error.: прочитайте его или отмените. Так ведёт себя и песочница, и бой |
| Проверяйте оба исхода регулярных списаний | Песочные значения SuccessSequencePayment и FailedSequencePayment позволяют прогнать и отказ по контракту, не дожидаясь его в бою |
| Не используйте демо-доступы за пределами песочницы | Демо-логин общий для всех, кто открыл эту страницу: ваши тестовые операции видны другим, а чужие — вам |