2013-05-29 7 views
25

사용자를 즉시 ​​대신 다운 그레이드 할 수 있습니까? 내가 API Docs을 샅샅이 살펴 봤지만 이것을 달성하는 방법을 알아 내지 못했습니다.스트라이프 : '기간 종료'에서 사용자 다운 그레이드

임시 해결책으로 현재 사용자의 가입을 즉시 취소 한 다음 더 적은 가입으로 구독하고 월말까지 평가판을 사용합니다. 그래도 작동하지 않습니다 - 나는 다운 그레이드가 요구 될 때까지 스트리밍을 사용하여 기간 종료까지 다운 그레이드를 연기 할 수 있어야합니다 (그러나 "기록"합니다).

분명히 웹 훅 콜백과 로컬에서 사용자 가입을 추적하는 방법이 있지만 가능한 경우이를 피하고 싶습니다. 누구 전에


편집

묻는다 - 나는 Temboo의 PHP SDK를 사용하고 있습니다. 그러나 나는 언어 별 접근법을 찾는 것이 아니라, 가능한 한 높은 수준의 방법을 찾고있다.

+1

나는 문제는 오래 알고 있지만, 나는 사람이 webhooks를 사용 및/또는 로컬 일을 추적 할 필요가 이렇게하고 싶은 생각합니다. 이 기능은 Stripe 내에 자동으로 존재하지 않으므로 사용자가 끝까지 무언가를 추적하고 API를 통해 업데이트하지 않고 특정 시점에 특정 동작을 실행 할 것으로 예상 할 수있는 방법이 없습니다. –

+3

@CharlieS 사실, Stripe이이 기능을 제공 할 것으로 기대하는 것이 전적으로 합리적이라고 생각합니다. 끝에서 관리하는 데 필요한 오버 헤드의 양은 중요합니다. 사용자에게 기간 종료시 지정된 계획으로 다운 그레이드하도록 요청하는 API 호출을 만들고 싶습니다. 스트라이프가 웹 훅을 핑하면 (ping) 웹 허크가 발생합니다. 그들은 이미 많은 시간 중심적 요소를 가지고 있습니다. 왜 이렇게하지 않습니까? 매우 일반적인 사용 사례이며, 지원되기를 바랍니다. – Madbreaks

답변

4

사용자가 계획에 참여할 때를 추적해야합니다. 데이터베이스에서 customer_id 옆에 날짜 필드를 유지하십시오. 이 날짜를 사용하여 가입 한 달의 날짜와 결제주기를 결정할 수 있습니다. 청구일이 31 일이면 짧은 달에 스트라이프는 해당 월의 마지막 날에 청구합니다 (https://support.stripe.com/questions/subscription-date-at-end-of-month).

이제 사용자가 다운 그레이드하려고 할 때 로그인 할 때 웹 사이트에서 작업을 완료합니다.이 다운 그레이드 요청을 기록하고이를 데이터베이스에 저장하여 "stripe_actionable_table"이라고 할 수 있습니다. 이 표에있는 것이 중요 필드는 다음과 같습니다

  • actionable_date (스트라이핑의 요청이 행동 일 - 위에서 언급 한 바와 같이 당신이 짧은 개월을 결정하기 위해 몇 가지 논리를 필요)
  • 을 stripe_customer_id
  • what_to_do (/ 취소/다운 그레이드를 업그레이드)
  • change_plan_to
  • 는 (계획 ID가 - REQ을 취소 할 경우는 null)을

그런 다음 특정 시간에 매일 실행되는 cron을 가지고이 stripe_actionable_table을 검사하고 해당 날짜가 표의 행과 일치하면 Stripe 요청을 처리합니다. 완료되면 삭제 된 행을 삭제하거나 표시 할 수 있습니다.

+7

감사합니다. 예 이것은 우리의 끝에 일을 관리하여 수행 할 수 있습니다 모든 종류의 방법이 있습니다 - 내 질문이었다, 나는 스트라이프가 자동으로 기간의 끝에서 다운 그레이드 처리를 요청할 수있는 방법이있다.그것은 일반적인 시나리오이며, webhooks *와 함께 사용하면 쉽게 될 수 있습니다. 그러나 귀하의 답변 (그리고 우리의 솔루션)이 보여주는 바와 같이 그것은 중대한 번거 로움입니다. – Madbreaks

+9

"at_period_end"매개 변수를 TRUE로 설정하여 구독을 취소하는 방법은 어떻습니까? 그런 다음 이벤트를 감지 할 수 있도록 스트라이프 이벤트를 수신 할 수있는 webhook을 설정하십시오 : "customer.subscription.deleted". 이것을 선택하면 고객을 더 낮은 가입 플랜으로 설정하십시오. – Martin

+0

또 다른 방법은 "실행 가능한 이벤트"의 열을 추적하는 것입니다. 그런 다음 사용자가 인보이스를 지불 할 때 webhook을 사용하십시오. 그런 다음 테이블을보고 변경 사항이 필요한지 확인한 다음 그 시간에 처리하십시오. –

0

스트라이프로 쉽게 할 수있는 방법이없는 것처럼 보입니다.

계획을 변경하지 않고 수량을 업데이트하고 있지만 아이디어도 적용 할 수 있습니다.

가능한 해결 방법은 다음과 같습니다 스트라이프와 비례 배분없이

  1. 업데이트 구독 양.

  2. invoice.created 이벤트까지 이전 수량으로 유지하십시오.

  3. invoice.created 이벤트를 처리, 수량 사용자와의 이전 수량에 가입 비교하고 필요한 경우를 줄일 수 있습니다. 대신 (고객이 이미 지불 한 시간의 기간 동안 즉,) 현재 청구 기간의 끝에서 구독을 취소하려는 경우

4

, 당신은 특정 날짜에 대한 조치에 취소를 at_period_end: true를 사용하여 구독을 취소 할 수 있습니다. 다른 계획로 다운 그레이드하기 위해

, 나는 주위 얻는 방법은 위의 작업을 수행 한 후 같은 날짜/시간에 끝나는 새로운 계획의 무료 평가판을 만드는 것입니다. 이렇게하면 새 계획의 재판이 종료되는 날짜와 동일한 날짜에 이전 계획이 취소됩니다 (활성 상태가됩니다).

이 스트라이프 완전히 (더 간단 이럴해야합니다) 자신의 끝을 다운 그레이드를 처리 할 수 ​​있습니다, 오히려 webhooks을 설정하거나 데이터베이스에 날짜를 추적하는 것보다.

+0

좋지 않은 생각입니다. 귀하의 전략을 올바로 이해하면 구독 기간은 원래 계획이 기한이 끝날 때까지 두 가지 계획을 갖게됩니까? 그렇다면 시험 사용이 동시에 끝난 계획에 대해 구독은 계속 활성화됩니까? – dperjar

+0

수정. 우리는 9 개월 이상 그것을 사용했고 완벽하게 작동합니다. – SneakAttaack

+0

@SneakAttaack은 좋은 생각입니다. 스트라이프 개발자에게서 나는 이것을 가지고있다 : "나는 그것이 소리보다 다루기가 더 까다 롭다고 생각한다. 임의의 시간 시험은 일반적인 고통이며, 정확한 사이클을 결코 얻지 못할 것이다. 두 구독 사이에 이상한 상태가 있음). 내 솔직한 권고는 업그레이드를 프로 - 레이트하는 것입니다. " 나의 주요 관심사는 두 구독 사이의 그 상태에 관한 것입니다. 그것에 문제가 있습니까? – Montenegrodr

0

이 스트라이프의 prorate 플래그를 사용 가능하게되었습니다.

예. false로 prorate을 설정하면

$subscription = \Stripe\Subscription::retrieve("sub_44ty4267H50z6c"); 
$itemID = $subscription->items->data[0]->id; 

\Stripe\Subscription::update("sub_44ty4267H50z6c", array(
    "items" => array(
    array(
     "id" => $itemID, 
     "plan" => "basic-plan", 
    ), 
), 
    "prorate" => false, 
)); 

, 당신은 효과적으로 현재의 기간이 끝날 때까지 계획 변경 사항을 적용하지 스트라이프을 말하고있다. 여기

공식 문서 : (아래 사용자 의견에 따라)

https://stripe.com/docs/subscriptions/upgrading-downgrading#disable-prorations

설명 : 활성 계획 즉시 (만 충전의 자신의 표현을 업데이트 할 것 스트라이프 참고 사용자가 지연됨), 사용자 자신의 응용 프로그램 내에서 활성 계획 변경을 지연 관리해야합니다.

+1

4.5 년 후, eesh. 감사합니다 – Madbreaks

+0

그냥 false로이 일괄 조정 및 설정을 테스트 한 결과 계획 변경이 지연되는 것으로 나타났습니다. 그것은 여전히 ​​플랜 및 요금을 즉시 변경합니다. 차이점은 사용하지 않은 시간에 대해서는 사용자에게 신뢰를주지 않는다는 것입니다. 문서는 이에 동의합니다. – Paludis

+0

@Paludis 질문은 "기간 종료까지 다운 그레이드를 연기하라는 질문을합니다 (그러나"다운 그레이드가 요청되는 시점에 스트라이프가 기록됨 "). 비례 배분 플래그는 즉시 스트라이프로 기록하지만 다운 그레이드가 지연된 것처럼 요금을 부과합니다. 자신의 신청서에 * 계획 변경 *을 기록하는 방법은 귀하에게 달려 있습니다. 그러나 내 대답의 문구가 어떻게 잘못 해석 될 수 있는지 봅니다. 지금 업데이트됩니다 (아직 잘못 대표되는 경우 알려주십시오). –