고객이 신용카드 정보를 변경하는 방법

제가 늘 애를 먹어온 부분 중 하나는 고객이 신용카드 정보를 변경하는 방법을 어떻게 안내해야 하는지였습니다. 가장 최근 이 문제가 발생했을 때, 저는 해당 고객의 구독을 취소한 뒤 새로운 구독을 만들도록 요청했습니다. 드디어 Stripe 페이지로 연결되는 링크를 생성하는 방법을 알게 되었습니다. 이 링크를 통해 고객은 자신의 청구서 내역을 확인하고, 결제 수단을 추가하며, 청구 정보(이메일 주소)를 업데이트할 수 있습니다.

구독 플러그인에 이 링크를 추가하는 PR을 제출하고 싶지만, 지금은 그 작업에 필요한 몇 시간을 확보하기가 어렵습니다. 그래서 Rails에서 수동으로 처리하는 방법을 공유합니다:

user = User.find_by_username('=USERNAME=');
sub=DiscourseSubscriptions::Customer.where(user_id: user.id).first;

Stripe.api_key = SiteSetting.discourse_subscriptions_secret_key
session=Stripe::BillingPortal::Session.create({
  customer: sub.customer_id,
  return_url: '=SITE_URL=/my/billing/subscriptions',
});
puts session.url

관련 문서 링크는 다음과 같습니다:

그리고 Stripe Login | Sign in to the Stripe Dashboard 에 접속하면 고객이 방문하여 이메일 주소를 입력할 수 있는 링크를 생성할 수 있습니다.

9개의 좋아요

Discourse Subscriptions에서 이 기능이 빠져 있다는 것을 몰랐습니다. 하지만 이건 꼭 필요한 기능입니다.

2개의 좋아요

네, 저도 그걸 몰랐어요. 이 일들이 시급한 것 같아요.

1개의 좋아요

좋아요! 이 코드를 어디에 추가해야 하나요?

1개의 좋아요

안녕하세요, 제공해 주신 코드와 사용법에 대해 좀 더 자세히 설명해 주실 수 있을까요?

또한, API를 통해 구독이 생성될 때 송부되지 않는 세금계산서를 법적으로 사용자에게 제공해야 하므로, 사용자가 이 Stripe 포털에 접근할 수 있도록 해야 합니다:

제가 찾은 임시 해결책은 Custom Hamburger Menu Links Theme Component를 사용해 Stripe 포털 링크를 추가하는 것이었습니다. 작동은 하지만, 이메일 링크를 통해 접속해야 하는 사용자에게는 큰 불편을 초래합니다.

1개의 좋아요

링크를 생성하고 시리얼라이저(serializer)에 추가한 후, 그 링크를 UX의 어딘가에 배치하는 플러그인에 코드를 넣어야 합니다. 저는 아직 이를 위한 시간을 내지 못했습니다. 레일즈(rails) 콘솔에서는 작동하지만, 그 자체로는 큰 도움이 되지 않습니다.

코드가 여전히 작동하는 것으로 보입니다.

가장 쉬운 방법은 플러그인을 포크(fork)하고 코드를 추가하는 것입니다. 더 어렵지만 훨씬 좋은 방법은 코드를 테스트와 함께 추가하여 PR(Pull Request)으로 채택되도록 하는 것입니다. 예산이 있다면 Marketplace 채널에 게시하거나 저에게 직접 연락해 주세요. 중간 단계로는, 예를 들어 링크를 시리얼라이저에 추가하는 플러그인을 만들어 현재처럼 햄버거 메뉴와 같은 UX의 어딘가에 배치할 수 있도록 하는 것입니다.

2개의 좋아요

답변과 설명 감사합니다. 불행히도 플러그인 개발에 대한 경험이 전혀 없으며, 가벼운 HTML/CSS 수정 정도만 가능하고, 필요할 경우 Rails 콘솔에서 몇 가지 명령어를 실행하는 정도만 할 수 있습니다.

지금은 제 임시 해결책으로 계속 진행할 것 같습니다. 또한, 사용자가 구독할 때 가능한 한 모든 곳에 Stripe Portal 링크를 추가할 예정입니다 (관리자 > 커스터마이즈 > 텍스트).

2개의 좋아요

해당 링크는 시간 제한이 있으므로, 리다이렉트를 수행하는 라우트를 추가하는 방식으로 구현하는 것이 좋겠습니다. 이렇게 하면 새 링크를 가져올 시점을 파악해야 하는 번거로움과, 클릭조차 되지 않을 링크를 가져오기 위해 불필요한 호출을 반복하는 문제를 피할 수 있습니다.

여전히 플러그인 형태이지만, 훨씬 간단한 PR이 될 것이라고 생각합니다.

1개의 좋아요

아, 우리가 같은 링크에 대해 이야기하고 있는 것이 아닌 것 같습니다… 당신은 아마도 제공하신 코드에서 생성된 링크에 대해 말씀하시는 것 같습니다. 저는 Stripe 대시보드에서 활성화할 수 있는 코드 없이 사용하는 고객 포털 링크에 대해 말씀드리고 있습니다. 이 링크는 포털이 활성화되어 있는 동안 유효하다고 생각합니다.

그래요. 기억이 정확하다면, 제 코드는 사용자가 이메일 주소를 입력하고 이메일로 링크를 직접 받아 보는 것(그리고 어떤 이메일 주소를 사용했는지 아는 것)을 막아주는 역할만 합니다. 그게 충분하다면, 준비는 끝난 겁니다.

참고로, 이제 플러그인에서 이 기능이 직접 지원되는 것 같습니다:

3개의 좋아요

그렇습니다! 그리고 이는 큰 도움이 됩니다(그리고 마법 링크에 대해 아무것도 하지 않은 주요 이유이기도 합니다). 다만, 결제 내역과 청구서 링크에 대한 접근 권한 문제를 해결하지는 못합니다.

3개의 좋아요