Stripe Checkoutのローカルテスト環境をDockerで構築してみたました
決算機能を手っ取り早く実装するならStripe一択なのかなと思うくらいココ最近サービス自体はよく見聞きしてたのですが、今更ながらに自分でも調査する必要ができたためローカルでStripe Checkoutのテスト環境を作ってみました。
といってもほとんど公式で公開しているサンプルを使っているだけで難しいことは何もしていません。
またStripeのアカウント作成方法や商品の設定方法などは他にもたくさん情報があると思いますので、ここでは記載していません。
サンプルコードの取得
GitHubからサンプルコードを取得します。
今回は定期支払(サブスクリプション)のコードを使用しました。
git cloneかzipで任意のディレクトリにコードを配置します。
$ git clone https://github.com/stripe-samples/checkout-single-subscription
$ ls
checkout-single-subscription
Dockerコンテナの起動
今回はサーバーサイドPythonで動作するアプリを作りたいと思います。
配置したコードのルートにある .env.example を Python のディレクトリにコピーします。
$ cd checkout-single-subscription/
$ cp .env.example client-and-server/server/python/.env
dockerコンテナを起動します。Python3.7のdockerイメージを使用しました。(3.8だとサーバー起動時にflaskのエラーになったため3.7にしています。深くは追ってません。)
$ docker run --rm -it -v $PWD:/var/stripe -p 4242:4242 python:3.7 bash
dockerコンテナ内でサーバーを起動します。
cd /var/stripe/client-and-server/server/python/ # マウントしたディレクトリに移動
pip install -U pip # pipのアップグレード
pip install -r requirements.txt # ライブラリのインストール
export FLASK_APP=server.py
python3 -m flask run --port=4242 --host=0.0.0.0 # サーバーの起動(ローカルブラウザからアクセスできるようにホストを0.0.0.0にします)
参考
http://localhost:4242/ にアクセスするとサンプルの画面が表示されます。
環境情報の設定
このままではStripeの設定がダミーになっているため .env ファイルの内容を自分のStripeの設定に変更します。
- APIキーの設定
Stripeの「開発→APIキー」を参照しセットします。
# Stripe keys
STRIPE_PUBLISHABLE_KEY=pk_12345 # 公開可能キー
STRIPE_SECRET_KEY=sk_12345 # シークレットキー
- 商品の設定
Stripeの「商品」を参照し作成済みの商品IDをセットします。(一旦BASIC_PRICE_IDのみセットします)
BASIC_PRICE_ID=price_12345 # 商品ID
※Stripe Checkout では利用できる商品の料金体系が限られているようです。
- 設定の反映
Dockerコンテナ内でサーバを再起動して設定を反映します。(Ctrl+Cで停止)
python3 -m flask run --port=4242 --host=0.0.0.0
動作確認
サンプル画面をリロードして「Basic subscription」のボタンを押すと Stripe Checkout の購入画面に遷移できると思います。
テスト用のカード番号などを入力して申し込みを行うと購入が完了しStripe側に購入情報が反映されると思います。
※今回画面側はサンプルのまま使用しましたが、商品などに合わせて適宜修正してください。
まとめ
全くStripeをさわったことがない状態からStripe側の設定なども含めていろいろ調べながらでしたが、かなり簡単に環境ができました。商品の設定や購入情報をテストするだけの場合、今回作った環境で十分テストできると思います。
公式のドキュメント、APIリファレンスなどもわかりやすくとても助かります。
とはいえまだまださわり始めたばかりで他にももっといろいろできそうなので、いろいろ使っていきたいと思います。
Stripeありがたい。
2020-08-11 追記
GitHubにdocker-composeで環境を構築するソースコードを公開しました。
この記事が気に入ったらサポートをしてみませんか?