決済APIならStripeがおすすめです。概要メモ。
Stripeの紹介と概要メモ
メモ
仕事でStripeをよく使いますが、便利なので紹介記事を書きます。情報量が多いので段々更新していきますので、最初ちょっとメモの走り書きみたいな部分も多いと思います、すみませんm( )m
概要
普及している決済API(らしい)
APIが比較的わかりやすい(という印象)なので実装負担が少ない。
Djangoでも使えるのでPythonユーザーにはプラス(Django1.9、Django2.0で動作確認済。PHPでもRubyでもOKで、かなりカバー範囲広い。)
決済会社がなくなるケースもあるが、Stripeは世界的に大きい会社みたいなので、API消滅リスク相対的に低め。(例WebPayは日本だけで展開してたが、サービス終了してしまった。ドキュメントが日本語でいいなと思って使おうかとした矢先のニュースでビビった。自分は使ってないけど、別の決済APIをつかうコード変更は想像しただけですごくすごーく面倒・・・)
ドキュメントが英語しかない(2018年8月8日現在。)ので日本語ドキュメントがほしい場合はGoogle翻訳などを活用する必要あり
基本的な仕組み
- 基本的な仕組みは都度決済、定期購読、カード情報の変更など色々な処理を実装するのに、常に2つに分けられる。シンプルだと思う。①checkout.js(stripe.js)をフロントエンドのHTMLに設置(HTMLの
<form>
。サーバーサイドのコードにカード情報を秘密のトークンにして送信できる。これにより生の情報は常にstripe側が保管し、開発者はカード情報漏洩リスクを取らなくてよくなるという優れもの) ②サーバーサイドにトークンを送って、そのトークンを元にカード所有者別にStripeのAPIで決済処理ができる。
最低限おさえるべきオブジェクト
- できるオブジェクト①顧客オブジェクト(親)-紐付き-②カードオブジェクト(子) ③商品オブジェクト(親。単発取引なら③でおわり)-紐付き-④プランオブジェクト(子。定期購読の場合。定期購読商品の内容)
顧客オブジェクト生成時の基本事項
- 顧客オブジェクト(親)-カードオブジェクト(子)(一番最初の登録時には顧客オブジェクトとカードオブジェクトは同時に生成される(Checkout.jsから生成されるトークンにより。)。
定額課金の場合のAPIの仕組み
- 定期購読オブジェクト <= 顧客オブジェクト(親)と商品オブジェクト(親)-プランオブジェクト(子)を引数に生成