이메일 불일치로 구독을 찾을 수 없음

문제 설명

구독을 등록했지만 그룹에 추가되지 않은 고객으로부터 불만을 접수받았습니다.

요약 (TL;DR)

사용자의 이메일 주소가 (어떤 이유로?) Stripe의 이메일 주소와 일치하지 않는 경우, 구독이 활성화되지 않습니다. Stripe의 이메일 주소를 수정하면 문제가 해결됩니다.

조사 결과

다음과 같은 사항을 확인했습니다.

  • 전체 구독 목록에는 해당 구독이 존재합니다.

  • 사용자의 프로필에는 결제 내역이 존재합니다.

  • 그러나 사용자의 프로필에는 구독 정보가 없습니다!!!

  • 데이터베이스에서는 모든 것이 정상으로 보입니다. Stripe ID의 기밀 수준을 정확히 모르기 때문에 ID를 일부 마스킹 처리했습니다.
db0731=# select * from discourse_subscriptions_subscriptions where external_id='sub_1Lf285...9YA0';
-[ RECORD 1 ]-----------------------------
id          | 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 ]---------------------------
id          | 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개의 좋아요