web-dev-qa-db-ja.com

ストライプ-無料プランで登録時にクレジットカードを必要とせずにサブスクリプションを処理する方法

Redsmin (私たちのプロジェクトの1つ)にStripeを実装し始めました。仕組みは次のとおりです。

  1. 当社の製品を使用するには、ユーザーはプラン(無料、s、m、xl、xxl ...)を選択し、ログイン/パスワードを入力する必要があります。その後、30日間の無料トライアルを試してください。ユーザーがフォームを送信すると、サーバーは、指定されたプランでクレジットカードなしでStripecreate_customerを呼び出します(クレジットカードを必要とせずに30日間無料でご利用いただけます)、返されたcustomer_idsubscription_idでユーザーモデルを更新します。

  2. ストライプイベントを受信するようにwebhookを設定し、30日後にwebhookshouldcustomer.subscription.updatedイベントとobject.status == activeを受信するようにします。 そうですか?

  3. ただし、サインアップ時にユーザーに関連付けられたカードを指定しなかったため、shouldは、customer.subscription.updatedを使用した別のobject.status == unpaidイベントの後にすばやく受信しますか?次に、ユーザーアカウントを非アクティブ化し、プラン選択ページに移動するよう強制します。

  4. それ以降、ユーザーは無料プランまたはプレミアムプランのいずれかを選択できます。

  5. #Scenario 1ユーザーが無料プランを選択した場合、私たちは自分の側でそのアカウントを再アクティブ化するだけで、ストライプの無料プランを費用0ドル。 無料プランで適切なプロセスを実装しましたか?より良い方法はありますか?

  6. #Scenario 2ユーザーがプレミアムプランを選択すると、クレジットカードフォームにリダイレクトされ、Stripeに送信され、更新されます一時的なカードトークンで顧客アカウントをストライプします。 次に何をすべきか?

    • ストライプがイベントを送信するのを待つ必要がありますか?もしそうなら、どのようなイベントですか? customer.subscription.updatedcharge.succeededobject.statusの値は何になりますか?
    • 私たちの側でユーザーアカウントを直接再アクティブ化し、ストライプからの確認を待つ必要がありますか?もしそうなら、私たちが待つべきイベント名とデータは何でしょうか?

66
FGRibreau

これを行うパート2では:

ストライプイベントを受信するようにwebhookを設定したので、30日後にwebhookはobject.status == activeのcustomer.subscription.updatedイベントを受信するはずですよね?

customer.subscription.trial_will_end webhookの実装を検討することもできます。このwebhookは、顧客の試用期間が終了する3日前に送信され、支払い情報を更新するための通知を顧客に送信できます。

このようにして、ユーザーが支払い情報を更新することにした場合、Stripeは顧客の試用期間が終了するとすぐに支払いを受け取り、中断することなくサービスの使用を継続できます。

#Scenario 1ユーザーが無料プランを選択した場合、ストライプで無料プランを0 $に設定したため、その側でアカウントを再アクティブ化するだけです。無料プランで適切なプロセスを実装しましたか?より良い方法はありますか?

これがStripeを使用して無料プランを実装する最良の方法であるとわかっている限り、必要でない限り、顧客に請求書が送信されないようにするだけです。ユーザーが無料のプランを使用している場合、ユーザーは請求期間ごとに請求書を受け取るとは思わないでしょう。

#Scenario 2ユーザーがプレミアムプランを選択した場合、ユーザーをクレジットカードフォームにリダイレクトしてから、Stripeに送信し、ストライプの顧客アカウントを一時的なカードトークンで更新します。次に何をすべきか:

  • ストライプがイベントを送信するのを待つ必要がありますか? customer.subscription.updated? charge.succeeded?その場合、object.statusの値はどうなりますか?
  • 私たちの側でユーザーアカウントを直接再アクティブ化し、ストライプからの確認を待つ必要がありますか?もしそうなら、私たちが待つべきイベント名とデータは何でしょうか?

ユーザーがプランを選択して支払い情報を更新したら、Stripeからのサブスクリプション更新への応答が成功した場合、すぐにアカウントをアクティブにします。

Stripeダッシュボードからサブスクリプション設定を構成している限り、支払いが失敗した場合の処理​​をStripeに処理させることができます。 customer.subscription.updated webhookを実装するようにしてください。これは、サブスクリプションを未払いまたはキャンセルとしてマークした場合にStripeから送信されるwebhookであり、それに応じて独自のレコードを更新できます。

41
Mike