Stripe & Firebase による支払い処理のチュートリアル
はじめに
Firebase 公式ドキュメント Firebase による支払い処理 を試した際のメモ。
TL;DR
- 公式ドキュメントを試した
- Firebase 側のデータがどうなるか、外観カスタマイズはどうするか、などについて簡単に確認した内容をメモ
目次
環境・条件
1 | $ sw_vers |
詳細
チュートリアル
基本的に Firebase による支払い処理 の手順で進める。
試した際のリポジトリ: 17number/stripe-payment-with-firebase-example
Stripe アカウント作成
https://dashboard.stripe.com/register でアカウントを作成。
作成後、ダッシュボードでテスト用の API キー/シークレット をメモしておく。
Firebase プロジェクト作成
Firebase Console でプロジェクト作成。
Blaze プランにアップグレード
サイドバーの一番下から Blaze プランにアップグレードする。Google アカウントでクレカ未設定だと設定画面が挟まるかも。
予算アラートは必要に応じて設定する。(試してみる程度なら不要、本番環境だとあった方が良さげ)
Authentication 設定
Authentication で Google, メールを有効化
Firestore 設定
Firestore を有効化。ロケーションは asia-northeast1
(東京) を選択した(※1)
サンプルコード設定
ダウンロード
サンプルリポジトリからソースコードをダウンロードする。(DL用 直リンク)
自分はダウンロード後 src
配下に展開した。(が、正直プロジェクトルートで良さげ)
Firebase プロジェクトとの紐付け
展開したディレクトリに移動して、firebase use --add
コマンドを実行し、プロジェクトを選択
1 | $ cd src |
Stripe キー設定
パブリックキー
src/public/javascript/app.js
内の Stripe の公開鍵を設定
1 | -const STRIPE_PUBLISHABLE_KEY = '<YOUR STRIPE PUBLISHABLE KEY>'; |
シークレットキー
Stripe のシークレットキーを firebase functions:config:set
コマンドで設定
1 | $ firebase functions:config:set stripe.secret=<YOUR STRIPE SECRET KEY> |
パッケージインストール
Functions(Cloud Functions for Firebase) で利用するパッケージをインストール
1 | $ cd functions && npm i && cd - |
デプロイ
参考:
firebase deploy
コマンドでデプロイ。
1 | $ firebase deploy |
デプロイ成功したら Hosting URL が表示される、基本的には https://<project id>.web.app
のはず。
動作確認
Hosting URL にアクセスすると、公式デモサイト と同じ画面が表示される。
ユーザー登録
適当にメールアドレスでユーザー登録する。なお、デモアプリではメールアドレス確認は行われない。
登録後はこんな画面に遷移する。
Authentication にユーザー登録されており、
Firestore にもデータが作成される。
カード登録
カード登録を実行する。
Firestore に payment_methods
サブコレクションが作られる。
支払い
支払いを実行すると、画面下の Payments 部分に履歴が表示される。
Firestore には payments
サブコレクションが作られる。
実装内容/構成 などについて
なぐり書きなので間違っているかもしれないことに留意。
- デモページは
public/
配下が Firebase Hosting によってホストされている- 画面や動作を変更したい場合は
public/index.html
やpublic/javascript/app.js
を編集して再デプロイ - Authentication や Firestore の変更をトリガーにデータ描画
- 画面や動作を変更したい場合は
- Firestore に保持するデータ構造を変更したい場合は
public/javascript/app.js
とfunctions/index.js
を編集して再デプロイ- どちらかが(もしくは相互に)参照しているはずなので、不整合が発生しないように要注意
- Stripe API の実行(Stripe SDK を叩いてる)箇所は Cloud Functions(
functions/index.js
内)onCreate
,onUpdate
,onDelete
などの Cloud Firestore トリガー を利用- Authentication にユーザーが追加されたら Stripe の顧客登録
- Firestore に支払い方法が追加されたら Stripe でも支払い方法を追加
- Firestore に決済データが追加されたら Stripe で決済処理を実行
- etc
まとめ
- 公式ドキュメントを試した
- Firebase 側のデータがどうなるか、外観カスタマイズはどうするか、などについて簡単に確認した内容をメモ
その他・メモ
サブスクリプションについて
公式 Extension を試した。
決済システムの導入にあたって
以下も合わせて要確認
- 「これは革命」とまでは言わないけれど、Webサービスへのサブスク導入がめちゃめちゃ楽なのでぜひ知って欲しいStripeのFirebase Extensions
- 決済システムを作るまえにこれだけは知っておこう - shiodaifuku.io
参考文献
関連記事
- Stripe & Firebase によるサブスクリプションのメモ
- Chrome 拡張機能で Firebase Authentication の認証
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- axios で unable to verify the first certificate の対応方法
- Node.js で firebase-admin を使ってサーバからプッシュ通知
- NestJS のチュートリアル
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア