メールの不一致によりサブスクリプションが見つかりません

問題の説明

顧客がサブスクリプションを購入したにもかかわらず、グループに追加されなかったという苦情がありました。

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 に問い合わせる必要はないのではないでしょうか?

表示上の問題だけでなく、結局のところユーザーはグループにも追加されていませんでした。

「いいね!」 2