Discourse Subscriptions 플러그인과 관련하여, Stripe 자체에서 일부 설정을 변경하면 어떻게 될까요? 예를 들어, Discourse에서는 상품에 대한 플랜을 일시불(one-off) 결제로 설정할 수 없습니다. 하루, 주, 월, 또는 연 단위 구독으로만 설정할 수 있습니다. 하지만 stripe.com에 들어가면 기존 구독을 일시불 결제로 변경할 수 있습니다. 이렇게 할 수 있을까요? 이렇게 변경하면 Discourse에서 해당 플랜의 작동 방식이 어떻게 달라질까요? 일시불 결제가 되는 것일까요?
절대 가능합니다! 플랜 생성 화면에서 ‘정기 결제’ 체크박스를 해제하면 일회성 결제가 됩니다.
다만, 이미 생성된 플랜은 변경할 수 없습니다.
맞아요! 제가 실수를 했네요. 실제로 묻고 싶었던 것은 일시불 결제가 종료되고 무기한 계속되지 않는 것이 가능한지 여부입니다. 예를 들어, 5달러를 지불하면 특별한 그룹에 가입되고, 하루 정도가 지나면 구독이 종료되어 다시 지불하기 전까지 그 그룹에서 제외되는 “데일리 패스” 같은 경우를 말하는 거예요. 이런 것이 가능한가요?
불행히도, 지금은 아닙니다.
저는 플러그인에서 비슷한 작업을 수행합니다. user_group 모델에 (대략적으로) 액션을 추가하여, 사용자가 구독 그룹에 추가되면 특정 작업을 수행한 후 해당 사용자를 그룹에서 제거합니다. 질문자님의 경우, 구독이 사용자를 one-off-weeklong 그룹에 추가할 때 다음과 같이 처리하시면 됩니다.
- 해당 카테고리에 대한 권한을 부여하는
weeklong그룹에 사용자를 추가합니다. - 1주일이 지나면 사용자를
weeklong그룹에서 삭제할 작업을 추가합니다. - Redis 장애 발생 시에도 사용자를 삭제할 수 있도록, 주가 시작된 날짜를 사용자 커스텀 필드에 추가합니다.
- 사용자를
one-off-weeklong그룹에서 제거합니다.
관심 있으시다면 저에게 연락을 주시거나 Marketplace 채널에 게시글을 남겨주세요.
하지만 그것은 어리석은 방법입니다. 대신, 구독(구독인 경우) 또는 고객(일회성 결제인 경우)에 대한 콜백을 추가하세요. Customer(고객)라는 명칭은 다소 부적절합니다. 이 모델에는 stripe 고객 ID와 stripe 제품 ID가 포함되어 있습니다. 따라서 다음과 같은 작업을 수행하세요.
add_model_callback(DiscourseSubscriptions::Subscription, :after_save) do
Rails.logger.warn("Now got a subscription #{self.external_id} for #{self.customer_id}")
# do stuff
end
add_model_callback(DiscourseSubscriptions::Customer, :after_save) do
Rails.logger.warn("Customer #{self.product_id} for #{self.user_id}")
# do more stuuff
end
안녕하세요, 이 문제를 해결하셨나요?
더 자세한 안내를 받을 수 있을까요? 이 기능을 어떻게 구현하는지 알려주면 좋겠습니다. Rails에 익숙하지 않아서요. 감사합니다!
저는 그게 제가 드릴 수 있는 최고의 무료 답변이라고 생각합니다.
삭제할 필요는 없습니다. 해가 되지 않습니다. 판매한 내역의 기록으로 필요하기 때문입니다. Stripe 콘솔에서 삭제할 수 있어야 합니다.
이것이 여전히 달성하려는 목표인지, 아니면 이미 이를 수행하는 방법을 찾았는지 알 수 없습니다. 디스코urs(Discourse)에서 내장되어 자동화할 수 있는 기능은 아닌 것 같지만, 다른 방식으로 구현할 수 있을지도 모릅니다. 마치 매일 새로운 음료를 사야만 테이블에 앉을 수 있는 커피숍의 방식과 유사해 보입니다.


