この記事は Goodpatch Advent Calendar 2015 13日目の投稿です。
昨日は@hayato-k さんによる「Android 開発はじめました - けどちょっと躓いた」でした。
Stripeってなに
StripeはWeb決済サービスです。
https://stripe.com/
アメリカのサービスですが、ドル以外の各国の通貨に対応した実装ができます(後にも書きますが日本円はまだ…)。
Web決済というとpaypalとかで手間なく実現できるイメージですが、自前で実装するとこんな良さがあるみたいです。
- 手数料がちょっと安い
- 自サイト内でフォームが完結(決済サービスのアカウントをユーザーが作らなくてもいい)
- アクセス解析ツールをフォームに仕込める
どうやって決済するの
クレカ入力フォームは、よくある感じでHTMLをコピってライブラリを読み込めば簡単にできるみたいです。自前でUIを用意することももちろんできます。
クレカ情報入力後は以下のような流れになってます。
- Webで入力されたクレカ情報をjsライブラリを通してStripeに投げる
- Stripeがクレカ情報をセキュアなトークンにしてくれる
- トークンを自サーバに投げてStripeの課金APIを叩く
- 成功コールバックで課金データをユーザーに紐付ける
定期購読形式での支払いの時はさらにこんな流れが付いてきます。
- 定期購読の時期が来るとStripeが自動で課金を行う
- 課金のステータス(成功か失敗か)をWebhookで渡される
- Webhookの内容次第で自サーバでは次月分の課金データを紐付ける
StripeAPIざっくり概要
本家ドキュメントが割といい感じですが、英語だったりできることがやたら多かったりするので超簡単にまとめました。
Customer
顧客情報。
ここからカード情報や支払い履歴を辿れる。
顧客が支払う際の通貨とかemailとかも保存しておける。
Cards
カード情報。
カード会社とか発行国とか。
もちろんカードナンバーみたいな秘密にしたいやつは入ってない。
Charge
一度で払いきるタイプの支払い。
金額を指定して顧客に紐付ける。
Plan
定期課金の料金プラン。ベーシックとかプロとかみたいな。
生成と削除処理に関しては管理画面からできるけど、プログラムで一気に自動生成したいときとかはAPIを通して操作できる。
Subscription
支払いの、定期購読型のほう(1ヶ月ごとに支払いみたいなやつ)。
プランを指定して顧客に紐付ける。
Invoice
請求書のイメージ。
あんまり明示的に作ることはなくて、Subscriptionを作るとこいつが自動で生成されてる。
Subscriptionの期間が来ると、これに記載されている金額の引き落としが発生する。
InvoiceItem
請求書に記載される商品一つ一つの情報といったようなイメージ。
こいつも明示的に作ることあんまりはない。
InvoiceとInvoiceItemは1対多だけど、何もしなければ1つしか紐付かない。
Invoiceが生成された後、Subscriptionの引き落とし期間が来る前にInvoiceItemを追加で紐付けておくと複数紐付く。
期間が来た時、その時点までに作られたInvoiceItemsの合計を一つのInvoiceが一気に引き落としてくれる。
管理側の都合とかで、消費税は別々に集計できるようにしたいときとかに
Invoice = 実際の金額のInvoiceItem + 消費税のInvoiceItem
みたいになるようにしておくといいとか、そんな感じの用途だと思う。
This is useful for combining several charges to minimize per-transaction fees or having Stripe tabulate your usage-based billing totals.
Stripeのいいところ
APIが多いからうまく使えば色々できる
- クーポンによるディスカウント機能
- 商品の個数とか税率がいくらとかトライアル期間はいつまでとか
- 定期課金の場合は何ヶ月ごとに引き落とし処理するか指定できる
これらを設定するオプションが用意されているのでそれを利用すれば実装できちゃいます。
あとbitcoin決済のAPIもあってカッコいいと思いました。使わないけど。
アプリがカッコいい
技術的な話じゃないですが。。
Stripeアカウントを所有していないかたもこちらのiPhoneアプリ紹介サイトで覗けます。
https://stripe.com/dashboard/iphone
その他のStripeの作品もこちらで公開されています。
https://dribbble.com/stripe
円決済に対応
円決済機能もついたら日本でも幅広く使われるんじゃないでしょうか。今後の展開が気になります。
円決済にも対応したみたいです
https://stripe.com/japan
ちなみに現時点で円決済を似たような方法でやりたい場合はWebPayがいいと思います。
https://webpay.jp/
WebPayはサービス終了したので、Stripe以外ならPAY.JPがオススメです。
https://pay.jp/