





Stripeとは
Stripeは決済代行サービスです。
通常決済機能はPCI DSSだったり不正検知だったり単なるWebサービスの機能より高いレベルが求められますが、Stripeを使うことでリスクを最小化できます。
API、用語の種類について
Stripeの公式ドキュメントはよく書かれていますが、シンプルな名前を好むゆえに混同しやすかったり、歴史的経緯が省かれているので少し補足します。
プロダクト名 | API | (あえて冗長に名前をつけるなら) | 説明 |
---|---|---|---|
Payment | Charges API | (SimplePayment API) | 3Dセキュア未サポートの古いAPI |
Payment | Payment Intent API | (Payment API) | 3Dセキュアに対応している新API |
Checkout | (Payment with Builtin UI) | Payment Intent APIのラッパー. Stripeの画面で決済 | |
Element | (Payment with Custom UI) | Checkoutより画面をカスタマイズしたい場合に使用 |
Charges API
古いAPIです。Payment Intent APIへの移行が推奨されています。
日本語で"チャージする"というと電子マネーに貯める側に使うことが多いですが、Stripeの用語では支払う側に使います。
Payment Intent API
新APIです。最近のWeb上の決済ではクレジットカードの番号とCVCを入力するだけでは不十分で3Dセキュアなど追加の認証が必要になり、Payment Intent APIはそのフローに対応しています。
欧州ではPSD2(欧州決済サービス指令第2版)の法規変更によりこのフローをサポートすることが必須になっています。
Checkout
Stripe Paymentの上記APIを使うと柔軟性は得られるのですが、画面のほとんどを自前で用意する必要があります。
Stripe Checkoutでは金額やメタ情報を元に生成したセッションをurlに渡すことで、Stripe側が後は対応してくれます。素のAPIだとアプリもサポートしているのですが、CheckoutはWebのみ対応しています。
Element
Checkoutよりはカスタマイズしたいという場合にはElementを使います。Reactが使えます。
その他
Stripeは決済が完了すると設定したurlにイベントとして情報を返してくれます。
自分がStripeのAPIを呼ぶだけでなく、Stripeから返ってくるイベントを受け取る口も実装する必要があります。