ワダチを作る #27:有料プランの課金を作り、テスタへのお礼を決めた
前回(#26)までで、60 分のタイマー・途中の鐘・ポモドーロ・シーンと、有料にしたい機能がそろいました。今回は、いよいよ課金の仕組みを作ったところまでです。
- 課金の進め方を決めた
- 申し込み・解約・支払いの失敗・休止・退会を作った
- 無料に戻ったら、設定も戻すことにした
- Stripe のテスト環境で、つまずいたこと
- テスタへのお礼を決めた
- 季節のシーンの動きを決めた
課金の進め方を決めた
有料プランは、次の形にしました。
- 月額 300 円(税込)・月払いだけ。年払いはしません。サービスを終えるときは 3 か月前に知らせると決めてあり、年払いだと、払った期間の途中で終わることがあるからです
- 払い方は、カード・Apple Pay・Google Pay
- 休止できる。しばらく使わないときは、契約を残したまま、支払いを止められる
- 有料で使えるのは、60 分のタイマー・途中の鐘・ポモドーロ・シーン。登録できる習慣の数などの上限は、有料も無料も同じです(数で差を付けると、続けている人ほど困る形になるため)
支払いの処理は Stripe に任せ、カードの番号はワダチでは持ちません。1 つ目のサービスのハコヅミで、同じ作りの課金を先に作ってあったので、それを写しながら進めました。
進め方で大事にしたのは、「作る」と「始める」を分けたことです。開発環境と Stripe のテスト環境(サンドボックス)で全部を作って確かめ、本番には、最後に「始める」ときまで Stripe の鍵を入れません。鍵のない環境では、課金の画面も入口も出さないようにしてあります。こうしておくと、作りかけの課金を開発用のブランチに入れたまま、ほかの直しを本番に出し続けられます。
作ったもの
全部で 7 つに分けたうち、6 つを作って、開発環境で確かめました。
- 土台:Stripe から届く「契約が作られた・変わった・終わった」という知らせを受けて、会員区分を書き換える。知らせが本物かは、Stripe の署名で確かめる。同じ知らせが 2 回届いても 1 回分だけ効かせ、順番が入れ替わって届いた古い知らせでは、新しい状態を上書きしない
- 申し込みと解約:アカウントの画面の「有料プランにする」→ 確認の画面(料金・支払いの時期・解約の決まりなど)→ Stripe の支払いの画面。解約・カードの変更・領収書は、Stripe の契約管理の画面に任せる
- 支払いの失敗:カードの期限切れなどで払えなかったときは、Stripe が日を変えて何度か払い直す。そのあいだは有料のまま、アカウントの画面とトップページに知らせを出す。すべてだめなら、無料に戻る
- 休止:アカウントの画面の「休止する」「再開する」。休止のあいだは無料と同じ扱いで、払った期間の残りの日数は、再開するときの支払いから引く
- 退会・凍結:退会したら、Stripe の側の顧客も消して、引き落としを止める。Stripe で失敗したら、退会そのものを止める(データだけ消えて、引き落としが続くことがないように)。利用規約とプライバシーポリシーにも、有料プランのことを書き足した
- 有料の機能を見せる:無料の人にも、タイマーの設定に有料の機能の欄を出して、選べない形にした。「有料プランの機能です」と、申し込みへのリンクを添える

休止から再開するときの支払いが失敗すると、休止のまま、この知らせが出る
Stripe の画面はテストできないので、自動テストでは、Stripe と同じ形で答える小さな代役のサーバーを立てて、アプリの動きを確かめています。本物の Stripe との通しは、テスト環境で、自分の手で確かめました。
無料に戻ったら、設定も戻す
最初は、「有料から無料に戻っても、タイマーの設定は消さず、使うときに効かせないだけ」にしていました。60 分のタイマーなら、設定は 60 分のまま、実際には 30 分で終わる、という形です。
ところが、自分で解約を試してみると、これが分かりにくい。設定の画面には「60 分」「ポモドーロ」「夜の町」と出ているのに、タイマーを開くと、30 分のふつうのタイマーで、絵も出ない。
そこで、無料に戻ったら、設定そのものを無料の範囲の既定の値に戻すことにしました。30 分を超える時間は 30 分に、途中の鐘とシーンは「なし」に、ポモドーロは「ふつう」に。解約・支払いの失敗・休止の、どれで無料に戻っても同じです。もう一度有料にしても、元の設定には戻りません。そのことは、申し込みと休止の確認の画面に書いておきます。
Stripe のテスト環境で、つまずいたこと
Stripe には、テスト環境の中で時計を進められる「テストクロック」があります。1 か月後の更新や、払い直しの 2 週間を、その場で進めて確かめられます。便利なのですが、いくつかつまずきました。
契約を作ったのに、有料にならない。 ワダチは、契約に付けた「だれの契約か」(利用者の番号)を見て、会員区分を書き換えます。ダッシュボードで試すとき、これを契約ではなく、顧客のほうに付けていました。知らせは届いていても、だれの契約か分からないので、何もしていなかったのです。契約の側に付け直したら、すぐに有料になりました。
払えないカードにしたのに、払えてしまう。 Stripe には、登録はできて、支払いのときにだけ断られるテスト用のカードがあります。顧客のカードをこれにして、既定にしても、払えてしまう。契約を作ったときのカードが、契約そのものに付いたまま残っていたからでした。前のカードを顧客から消したら、ちゃんと失敗しました。
休止してすぐ再開すると、失敗しない。 休止から再開するときの支払いの失敗を確かめようと、払えないカードにして再開しました。ところが、成功してしまう。
これは不具合ではありませんでした。休止すると、払った期間の残り(休止した直後なら、ほぼ 1 か月分)が割引として残ります。再開すると、新しい 1 か月の請求から、その割引を引きます。休止した直後だと、請求がほぼ 0 円になり、カードからお金を取らないので、失敗しようがないのです。テストクロックで 3 週間ほど進めて、払った期間の大半を使ってから休止し、再開したら、ちゃんと「再開できませんでした」が出ました。確かめ方の手順にも、そのことを書き足しました。
テスタへのお礼を決めた
ワダチは今、ベータ版のテスタを募集しています。2 週間ほど毎日の記録に使ってもらい、最後に短いアンケートに答えてもらう、というお願いです。課金を始めるにあたって、テスタへのお礼をどうするかを決めました。
ハコヅミでは、テスタに、期間を決めて有料プランを無料にするクーポンを付けました。ただ、ワダチで同じにすると、たとえば 1 年たったときに、使えていた 60 分のタイマーやシーンが急に使えなくなり、設定も戻ってしまいます。ハコヅミは有料で増えるのが登録の数でしたが、ワダチは毎日使う機能そのものなので、取り上げられる感じが強くなります。
そこで、アンケートにご回答いただいたテスタの方は、ワダチを続けるあいだ、有料プランを無料で使えることにしました。Stripe で、期限のない 100% 割引のコードを 1 人に 1 つ作って送り、本人がそのコードで申し込みます(0 円で、カードの入力も要りません)。テスタは 10 人ほどなので、運営の負担も小さく済みます。
もう 1 つ気になったのは、アンケートにご回答いただけなかった方のことです。テスタの期間に有料の機能を使ってもらい、ご回答いただけなかった方だけが無料に戻ると、その方にとっては、やはり取り上げられる形になります。
これは、初めから「お試し」と伝えることにしました。招待のメールで「テスタの期間(○月○日まで)は、有料の機能もお試しでお使いいただけます。アンケートにお答えいただいた方は、その後も無料でお使いいただけます」と伝え、終わりの数日前にも、もう一度知らせます。期限が初めから分かっていれば、お店のお試し期間と同じで、戻っても驚かせずに済みます。
季節のシーンの動きを決めた
課金と並行して、タイマーのシーン(動く絵と曲)の「季節」シリーズの、春・秋・冬の動きを決めました。

左から、春・秋・冬
- 春:やわらかい花びらを舞わせ、川面を流れる花びら(花筏)と、水面のきらめき、左岸の草のなびきを付けた
- 秋:落ち葉を舞わせ、山道の木漏れ日を少し揺らした。初めは、落ち葉が絵に描いたように見えたので、絵から色を取った、本物らしいもみじの形にした
- 冬:雪を降らせ、雪面のきらめきと、地面を這うように流れる雪(地吹雪)、太陽の光のゆらぎを付けた
今回も、手前の桜の木や、紅葉の木そのものを揺らしてみましたが、どうしても不自然でした。前回の夏の田園でも同じでしたが、絵の中の木そのものを動かすと、雲の影が通ったように見えたり、蜃気楼のように歪んだりする。花びら・葉・雪のように描き足すものと、光や水だけを動かすのが、いちばん自然に見えます。
次は
退会・凍結と、有料の機能を見せる画面の受入を済ませたら、本番で課金を「始め」ます。特定商取引法に基づく表記のページを作り、本番の Stripe の設定を入れ、テスタへのお礼のコードで申し込めるようにします。