Discourseサブスクリプション - 「サイクル終了時にキャンセル」を明確にする

Discourseサブスクリプション - 価格変更 - サブスクリプション全体ではなく自動更新をキャンセルする方法からの議論の続きです。

機能リクエスト: ユーザーが、即時キャンセルしかできないのではなく、サイクルの終了時にサブスクリプションをキャンセルできると良いでしょう。

Stripeのドキュメントで、「サイクルの終了時にキャンセル」という見出しの下でこれを見ました。

代わりに、現在の請求期間の終了時にサブスクリプションをキャンセルしたい場合(つまり、顧客がすでに支払った期間)、cancel_at_period_end の値を true に更新します。

キャンセルが予定されているサブスクリプション(cancel_at_period_end パラメータを使用)は、cancel_at_period_endfalse に更新することで再開できます。期間終了までならいつでもサブスクリプションを再開できます。

「いいね!」 1

ユーザーが私が依頼したことを実行できることが判明しました(タイトルを「許可」から「明確にする」に変更しました)…そこで、関連する新しいものが2つあります…

機能リクエスト: デフォルトの文言で、2種類のキャンセルを明確にする必要があります。管理者インターフェースには、ユーザーインターフェースと同じ「ステータス」列が必要です。

詳細はこちら…

Discourseサブスクリプションの「キャンセル」は、誰が行うかによって2つの異なる意味を持つようです!ユーザーにとっては自動更新のキャンセルのみですが、管理者にとってはサブスクリプション全体を即座にキャンセルします。

  1. ユーザーu/.../billing/subscriptionsのゴミ箱アイコンをクリックした場合、プロンプトは「このサブスクリプションをキャンセルしてもよろしいですか?」となります。

    「はい」を選択すると、customer.subscription.updated webhookがトリガーされます。

    レスポンスの注目すべき2つの部分は"cancel_at_period_end": true"status": "active"です。ユーザーのサブスクリプションページは引き続き「ステータス:アクティブ」ですが、「更新」には「キャンセル済み」と表示されます。ユーザーはサブスクライブグループに残ります。

    残念ながら、管理者インターフェースには、自動更新がキャンセルされたことを示す表示がなく、単に「ステータス:アクティブ」と表示されます。

  2. 管理者/admin/plugins/discourse-subscriptions/subscriptionsで「キャンセル」をクリックした場合、プロンプトは再び「このサブスクリプションをキャンセルしてもよろしいですか?」(返金するかどうかも尋ねられます)。

    「はい」を選択すると、customer.subscription.deleted webhookがトリガーされます。

    レスポンスには"status": "canceled"が含まれます。サブスクリプションはすべてで削除され、ユーザーはサブスクライブグループから削除されます。