こんにちは、
将来のインスタンスでの使用を想定して、現在このプラグインを試しており、問題が発生しました。
私の Stripe アカウントは新規で未検証のため、テストデータを使用しており、Stripe ダッシュボードの「Developers」からデータを消去できます。
問題点は、Stripe 側でデータを消去しても、フォーラムインスタンス側の同じデータが削除されないことです。これにより、ユーザーの「請求 > 支払い」ページがクラッシュする可能性があります。
再現手順
- 課金プランを作成する
- ユーザーをそのプランに加入させる。Stripe は
cus_abcd1234567890のようなcustomer_idを発行する - Stripe ダッシュボードでデータを消去する
- ユーザーの請求ページを再度開くと、
/s/user/paymentの読み込み中にクラッシュし、ウェブブラウザのコンソールに以下のレスポンステキストが表示される:
{\\\"errors\\\":[\\\"No such customer: 'cus_abcd1234567890'\\\"]}
インスタンスのデータベースを調査したところ、私が以前に行った複数のデータ消去に関連するデータが、以下のテーブルに残っていることが確認できました:
discourse_subscriptions_customers:ユーザーの請求ページでクラッシュを引き起こすdiscourse_subscriptions_productsdiscourse_subscriptions_subscriptions
後者の 2 つのテーブルはクラッシュを引き起こしていないようですが、期限切れのデータがまだ含まれています。
discourse_subscriptions_customers 内の問題のある行を手動で削除すれば、ユーザーのクラッシュは解決します。しかし、SQL クエリを通じて行うのは複雑で危険であり、特に経験の浅いユーザーにとっては困難です。
なお、Stripe ダッシュボードからユーザー情報を手動で削除した場合は、この問題は発生しません。Stripe はユーザーに関する情報をアーカイブとして保持し、「完全に削除済み」としてマークします。
提案される解決策
可能であれば、Stripe がテストデータが消去されたことを Discourse に通知し、それらのテーブル内のデータを削除する仕組みを実装してください。
あるいは、
プラグインオプションに「テストデータを消去」ボタンを追加し、大きな赤い警告ラベルを表示して、管理者が何をしているか理解していることを確認できるようにしてください。