問題の説明
顧客がサブスクリプションを購入したにもかかわらず、グループに追加されなかったという苦情がありました。
TL;DR
ユーザーのメールアドレスが(どういうわけか?)Stripe のメールアドレスと一致しない場合、サブスクリプションは付与されません。Stripe のメールアドレスを変更すると、問題は解決します。
調査
以下を確認しました。
- すべてのサブスクリプションが表示される概要では、サブスクリプションは存在します。
- ユーザーのプロフィールには支払い履歴があります。
- ユーザーのプロフィールにはサブスクリプションがありません!
- データベースではすべて正常に見えます。Stripe ID がどの程度機密であるか不明なため、ID を一部編集しました。
db0731=# select * from discourse_subscriptions_subscriptions where external_id='sub_1Lf285...9YA0';
-[ RECORD 1 ]-----------------------------\nid | 944
customer_id | 944
external_id | sub_1Lf285...9YA0
created_at | 2022-09-06 13:47:57.074098
updated_at | 2022-09-06 13:47:57.074098
db0731=# select * from discourse_subscriptions_customers where user_id=62443;
-[ RECORD 1 ]---------------------------\nid | 944
customer_id | cus_MN...sc
product_id | prod_MH451u0JeKHoMv
user_id | 62443
created_at | 2022-09-06 13:47:57.057455
updated_at | 2022-09-06 13:47:57.057455
ユーザー ID は該当するユーザーと一致します。
Stripe では、メタデータは一致していますが、メールアドレスは一致していません!
Stripe のメールアドレスを Discourse のメールアドレスと一致するように変更すると、問題が解決します。サブスクリプションはすぐにユーザーのプロフィールに表示されます。
何らかの理由で、プラグインはメールアドレスでサブスクリプションを検索するために Stripe に問い合わせています。
なぜこのように機能するのか理解できません。
- メタデータが存在するのに、なぜメタデータで一致させないのでしょうか?
- すべての情報はすでにデータベースに存在するため、そもそも Stripe に問い合わせる必要はないのではないでしょうか?
表示上の問題だけでなく、結局のところユーザーはグループにも追加されていませんでした。



