Help us understand the problem. What is going on with this article?

ドル決済サービスStripeの全容をざっくり把握する

More than 3 years have passed since last update.

jenwz4_1w6QnIeurylkQdD4HWS5777Bn7e1k_bTkR9U.png

この記事は Goodpatch Advent Calendar 2015 13日目の投稿です。
昨日は@hayato-k さんによる「Android 開発はじめました - けどちょっと躓いた」でした。

Stripeってなに

StripeはWeb決済サービスです。
https://stripe.com/
アメリカのサービスですが、ドル以外の各国の通貨に対応した実装ができます(後にも書きますが日本円はまだ…)。

Web決済というとpaypalとかで手間なく実現できるイメージですが、自前で実装するとこんな良さがあるみたいです。

  • 手数料がちょっと安い
  • 自サイト内でフォームが完結(決済サービスのアカウントをユーザーが作らなくてもいい)
  • アクセス解析ツールをフォームに仕込める

どうやって決済するの

クレカ入力フォームは、よくある感じでHTMLをコピってライブラリを読み込めば簡単にできるみたいです。自前でUIを用意することももちろんできます。

クレカ情報入力後は以下のような流れになってます。

  1. Webで入力されたクレカ情報をjsライブラリを通してStripeに投げる
  2. Stripeがクレカ情報をセキュアなトークンにしてくれる
  3. トークンを自サーバに投げてStripeの課金APIを叩く
  4. 成功コールバックで課金データをユーザーに紐付ける

定期購読形式での支払いの時はさらにこんな流れが付いてきます。

  1. 定期購読の時期が来るとStripeが自動で課金を行う
  2. 課金のステータス(成功か失敗か)をWebhookで渡される
  3. Webhookの内容次第で自サーバでは次月分の課金データを紐付ける

StripeAPIざっくり概要

本家ドキュメントが割といい感じですが、英語だったりできることがやたら多かったりするので超簡単にまとめました。

スクリーンショット 2015-12-12 1.47.14.png

Customer

顧客情報。

ここからカード情報や支払い履歴を辿れる。
顧客が支払う際の通貨とかemailとかも保存しておける。

Cards

カード情報。

カード会社とか発行国とか。
もちろんカードナンバーみたいな秘密にしたいやつは入ってない。

Charge

一度で払いきるタイプの支払い。
金額を指定して顧客に紐付ける。

Plan

定期課金の料金プラン。ベーシックとかプロとかみたいな。

生成と削除処理に関しては管理画面からできるけど、プログラムで一気に自動生成したいときとかはAPIを通して操作できる。

Subscription

支払いの、定期購読型のほう(1ヶ月ごとに支払いみたいなやつ)。
プランを指定して顧客に紐付ける。

Invoice

請求書のイメージ。

あんまり明示的に作ることはなくて、Subscriptionを作るとこいつが自動で生成されてる。
Subscriptionの期間が来ると、これに記載されている金額の引き落としが発生する。

InvoiceItem

請求書に記載される商品一つ一つの情報といったようなイメージ。

こいつも明示的に作ることあんまりはない。
InvoiceとInvoiceItemは1対多だけど、何もしなければ1つしか紐付かない。

Invoiceが生成された後、Subscriptionの引き落とし期間が来る前にInvoiceItemを追加で紐付けておくと複数紐付く。
期間が来た時、その時点までに作られたInvoiceItemsの合計を一つのInvoiceが一気に引き落としてくれる。

管理側の都合とかで、消費税は別々に集計できるようにしたいときとかに
Invoice = 実際の金額のInvoiceItem + 消費税のInvoiceItem
みたいになるようにしておくといいとか、そんな感じの用途だと思う。

https://stripe.com/docs/api#invoiceitems

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
スクリーンショット 2015-12-12 1.48.18.png

その他のStripeの作品もこちらで公開されています。
https://dribbble.com/stripe

円決済に対応

円決済機能もついたら日本でも幅広く使われるんじゃないでしょうか。今後の展開が気になります。
円決済にも対応したみたいです
https://stripe.com/japan

ちなみに現時点で円決済を似たような方法でやりたい場合はWebPayがいいと思います。
https://webpay.jp/

WebPayはサービス終了したので、Stripe以外ならPAY.JPがオススメです。
https://pay.jp/

tanishi
Goodpatch2014年入社。主にjsとruby
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした