Shopifyアプリの課金とは?
Shopifyアプリの課金方法は、大きく分けてShopify内で決済する方法とShopify外で決済する方法の2つあります。
Shopify内で決済する場合、Shopifyアプリの料金は、マーチャントからShopifyに支払われ、税金や手数料を除いた料金がShopifyからアプリベンダーに支払われます。
Shopify内で決済する一番のメリットはマーチャントが課金する際にクレジットカード等の入力が不要なため、そのぶんの課金ハードルが低いことです。
デメリットは手数料をShopifyに支払う必要があることですが、現状ではよっぽど稼ぐアプリを作らない限り気にするほどではないので、Shopify内で決済させるのがよいと思います。
Shopify外で決済する場合、アプリベンダーは独自の決済フローを用意する必要があります。 こちらについては今回は触れません。以下はすべてShopify内の課金についての説明になります。
Shopifyアプリの課金の流れ
Shopifyアプリで課金するための道具はすべてShopify側が用意してくれています。 したがって、Shopifyアプリは決められたパターンの実装するだけで、簡単に課金が行なえます。
Shopifyアプリの課金はざっくりと以下の流れで行われます。
- 【アプリ】Shopifyアプリの画面内に配置された課金ボタンをユーザーがクリック
- 【サーバー】課金の種類(種類については後述します)、課金額、プラン名などを元にShopify GraphQL APIにリクエストを送る
- 【サーバー】ユーザーに課金してもらうためのURLを含むデータをAPIから受け取り、アプリに渡す
- 【アプリ】課金用のURLにリダイレクト
4で表示された課金用のページでユーザーが課金を選択したら、課金が行われます。 (もちろん、キャンセルを選択して離脱する可能性もあります)
課金の種類
Shopifyでの課金方法はいくつかあります。
1つ目は定額料金プラン(固定額プラン)です。 定額料金には月払いと年払いのどちらかを選ぶことができます。
2つ目は使用状況に基づくプランで、いわゆる従量課金と呼ばれるプランです。 何の使用状況によって、どのくらいの課金をするかはアプリが決めることができます。 (メール配信をするアプリならメールの配信量、商品販売に関連するアプリなら販売された商品金額など)
3つ目は1と2を組み合わせたプランです。 ここでは定額料金の年払いは選択できませんので、月払い + 従量課金の組み合わせのみになります。
最後は1度限りの買い切りです。 マーチャントが1度購入したら、以後ずっと使えるというものですが収益性の観点からか、あまり採用例は多くなさそうです。
- 定額料金プラン (固定額)
- 月払い
- 年払い
- 使用状況に基づくプラン (従量課金)
- 月払い + 従量課金 (年払い + 従量課金はできない)
※ サブスクリプションではないが、1度限りの買い切りも可能
Shopify公式のリファレンス も合わせて参照してください。
サブスクリプションモデルの設計
多くのアプリは定額料金または従量課金のサブスクリプションモデルを採用すると思います。 サブスクリプションモデルにおいて私たちが悩むのは「どういう価格が適切なんだろう?」や「アップグレードしてもらうにはどういうプラン設計がいいんだろう」かなと思います。
サブスクリプションモデルの設計に正解はないと思いますが、考える際に大事な制約が2つあります。 1つ目は「各マーチャントにつき、1つのサブスクリプションしか持てないこと」です。 上で説明した課金の種類に関わらず、マーチャントは1つのサブスクリプションしか持てません。 例えば、すでにAというサブスクリプションを契約しているマーチャントがBというサブスクリプションを契約した場合は、Aサブスクリプションが自動で解約され、Bサブスクリプションの契約が行われます。
課金の種類で説明した「定額料金と従量課金を組み合わせたプラン」は定額料金プランと従量課金プランの2つを契約したものではなく、定額料金と従量課金を組み合わせたプランを1つを契約することなので注意してください。
2つ目は「課金した際のサブスクリプションの内容は後から変更できないこと」です。(※ 従量課金をする際に必要な上限額は変更できます) これは僕がサブスクリプションのマスターデータのようのものがあるとイメージしていたので、ちょっと意外だっただけかもしれません。
これは裏を返せば、新規でサブスクリプションを契約するマーチャントに対しては、アプリ側は好きなタイミングで好きなプラン内容を提示できるということですので、メリットと捉えてタイムセールなどの柔軟なサブスクリプション設計が可能になります。
課金に関連するWebhook
課金に関連するWebhookはいくつかあり、それぞれを適切にハンドリングすることで課金処理をスムーズに行うことが可能になります。
これは定額料金プランと従量課金プランに関連するWebhookで、サブスクリプションの契約や解約などが行われたときに受け取ります。 statusを見ることで、決済画面で離脱したことなども判別が可能です。
ちなみにWebhookは受け取る順番が保証されないので、旧サブスクリプションの解約と新サブスクリプションの契約のWebhookが必ずこの順番で飛んでくるとは限らないので注意が必要です。
app_subscriptions/approaching_capped_amount
従量課金の上限額に近づいたときに受け取ります。マーチャントに従量課金に近づいていることを知らせて上限額をアップデートすることを促しましょう。
買い切りプランに関連するWebhookです。サブスクリプション同様statusなどが含まれます。
まとめ
今回はShopifyアプリの課金の方法とサブスクリプション設計についてご紹介しました。 Shopifyアプリの課金は決められたパターンがありますので、簡単に実装できることが伝わると嬉しいです。 また、サブスクリプション設計はとても難しいですが、ここをこだわることがアプリの機能を磨き込むことにも繋がると思いますので妥協せずにやっていきましょう!
課金に関連することで「Shopifyアプリの返金」について今後加筆する予定です。お楽しみに!