Привет,
Я сейчас тестирую этот плагин для будущего использования на своём экземпляре и столкнулся с проблемой.
Мой аккаунт Stripe новый и не верифицирован, поэтому он использует тестовые данные, которые я могу удалить в панели Stripe > Разработчики.
Проблема в том, что удаление данных в Stripe не удаляет те же данные на экземпляре форума. Это может привести к сбою страницы «Счёт > Оплата» пользователя.
Шаги для воспроизведения
- Создайте план подписки.
- Подпишитесь на план пользователя. Stripe выдаст ему
customer_id, напримерcus_abcd1234567890. - Очистите данные в панели Stripe.
- Повторная попытка открыть страницу оплаты пользователя приведёт к сбою при загрузке
/s/user/payment. В консоли веб-браузера появится следующий текст ответа:
{\"errors\":[\"No such customer: 'cus_abcd1234567890'\"]}
Изучив базу данных моего экземпляра, я обнаружил старые данные от нескольких очисток в следующих таблицах:
discourse_subscriptions_customers: вызывает сбой на странице оплаты пользователя.discourse_subscriptions_productsdiscourse_subscriptions_subscriptions
Последние две таблицы, похоже, не вызывают сбоев. Однако они всё ещё содержат устаревшие данные.
Ручное удаление проблемной строки (строк) в discourse_subscriptions_customers исправляет сбой у пользователя. Но выполнять это через SQL-запрос сложно и опасно, особенно для неопытных пользователей.
Также стоит отметить, что эта проблема не возникает при ручном удалении информации о пользователе из панели Stripe. Stripe всё ещё хранит архивные данные о нём и помечает его как «навсегда удалённого».
Предлагаемые решения
Если возможно, добавьте механизм, с помощью которого Stripe будет сообщать Discourse, что тестовые данные были очищены, и тогда данные в этих таблицах должны быть удалены.
Или
В настройках плагина добавьте кнопку «Очистить тестовые данные» с большим красным предупреждающим ярлыком, чтобы администратор точно понимал, что делает.