github grandvan709/yookassa-to-mynalog 3.4.1

4 hours ago

Исправление синхронизации возвратов. Обновление рекомендуется всем, у кого включены возвраты (REFUNDS_ENABLED='true').

🐛 Что было сломано

При каждом запуске синхронизация возвратов падала с ошибкой ЮKassa:

[BadRequestError] {'description': 'Invalid request parameter',
                   'parameter': 'createdBefore;createdAfter',
                   'code': 'invalid_request'}

Платежи при этом обрабатывались нормально, но общий статус сервиса уходил в degraded, а контейнер — в unhealthy. В Telegram и на почту при каждом запуске приходило уведомление об ошибке.

Спасибо @gamers65 за подробный отчёт (#39).

🔍 Причина

ЮKassa принимает фильтры created_at.* только в ISO 8601 с суффиксом Z (по документации — 2018-07-18T10:51:18.139Z).

Сервис записывал checkpoint возвратов через datetime.now(timezone.utc).isoformat(), то есть в offset-нотации ...+00:00, и подставлял это значение в запрос как есть. Для платежей замена на Z выполнялась явно, поэтому они работали.

✅ Что исправлено

Все метки времени перед отправкой в ЮKassa приводятся к UTC с суффиксом Z общей функцией. Заодно корректно обрабатываются метки без таймзоны и в зоне, отличной от UTC.

Ничего делать руками не нужно: нормализация применяется и к уже сохранённым checkpoint'ам, поэтому состояние старого формата чинится само при первом запуске. Сбрасывать state или переустанавливать сервис не требуется.

📦 Обновление

cd /opt/yookassa-to-mynalog && sudo docker compose pull && sudo docker compose up -d

После запуска статус вернётся в ok, а контейнер — в healthy.

Полный список изменений: 3.4.0...3.4.1

Don't miss a new yookassa-to-mynalog release

NewReleases is sending notifications on new releases.