구독 플러그인의 조용한 구독 실패

플러그인: discourse-subscriptions 버전: 최신 (최신 상태 확인됨) Discourse 버전: 3.5.4

버그 요약: 특정 엣지 케이스에서 플러그인이 유효한 결제 수단을 연결하지 않은 채 PaymentIntent를 생성하여 최종 사용자에게 구독 실패가 조용히 발생하게 됩니다.

재현 단계:

  1. 고객의 Stripe 고객 프로필에 만료된 카드가 저장되어 있음

  2. 고객이 구독을 시도하거나 결제 수단을 업데이트함

  3. 플러그인이 PaymentIntent를 생성하지만 새 카드 정보를 Stripe에 전달하지 못함

  4. resource_missing 또는 payment_intent_incompatible_payment_method 오류로 거래가 실패함

Stripe 오류 로그:

resource_missing: This customer has no attached payment source or default 
payment method.

payment_intent_incompatible_payment_method: A payment method of type card 
was expected to be present, but this PaymentIntent does not have a payment 
method and none was provided.

Stripe에서 확인한 내용:

  • Stripe 계정은 정상 상태이며, Stripe 측에 문제가 없음

  • PaymentIntent가 결제 수단 없이 생성됨

  • 플러그인이 일부 경우 pm_ 결제 수단 객체가 아닌 card_ 객체를 전달하고 있음 — 이는 Stripe의 현재 API에서 서로 교환 가능하지 않음

추가 맥락:

  • 활성 멤버 약 18,000명의 커뮤니티에서 월평균 약 2회 발생

  • 이 플러그인은 호스트 레벨에서 수정할 수 없는 내장 플러그임 (Communiteq과 확인됨)

  • 일반 체크아웃은 정상 작동하며, 실패는 고객이 유효하지 않거나 만료된 카드를 보유하고 있어 새 결제를 시도할 때 특정적으로 발생함

  • 우회 방법은 호스트된 Stripe 인보이스를 수동으로 보내는 것이지만, 이는 사용자의 Discourse 그룹을 자동으로 할당하는 웹후크를 트리거하지 않아 두 번째 수동 단계를 생성함

요청 사항: 고객의 기존 카드가 만료되었거나 유효하지 않을 때의 결제 수단 핸드오프 수정. 새 카드 입력이 제출 전에 PaymentIntent에 올바르게 연결되는 적절한 pm_ 결제 수단 객체를 생성하도록 보장해야 함.

3개의 좋아요

버그 보고해 줘서 고마워요, 토크!

이 내용을 Contribute > Bug 채널로 옮겼어요. 여기서 제때 주목을 받을 수 있기를 바랍니다.

4개의 좋아요