Ruby
Rails
stripe

Stripeを使って開発をするときにmockサーバーを利用する

More than 1 year has passed since last update.

やりたいこと

決済サービスの一つであるStripeを利用するサービスを開発する際に、実際のサービスAPIを利用せず開発を進められるようにします。

stripe-mockのインストール

実際のStripe APIを模倣するmockサーバーサービスがStripeによって提供されているので、これをインストールして利用できるようにします。

for macOS

homebrew を使ったインストールとサービスの有効化について紹介します。

$ brew install stripe/stripe-mock/stripe-mock
$ brew services start stripe/stripe-mock/stripe-mock

デフォルトではhttp://localhost:12111でmockサーバーが動作するようです。

mockサーバーを利用するように設定を変更する

ここでは、railsを利用する場合の設定方法について紹介します。

サービスAPIエンドポイントの設定はStripe.api_baseにあるので、development環境でrailsが動作する場合には、mockサーバーを参照するように設定を追加します。

# config/environments/development.rb

Rails.application.configure do
  # other something...
  Stripe.api_base = 'http://localhost:12111'
end

確認

rails consoleを使って動作を確認してみます。

$ bin/rails console

> Stripe.api_base
=> "http://localhost:12111"

> Stripe::Charge.list
=> 
<Stripe::ListObject:0x3fe3bb271990> JSON: {
  "data": [{
    "id":"ch_1B3q3s2eZvKYlo2CLdghKZFC",
    "amount":2000,
    "amount_refunded":0,
    "balance_transaction":"txn_1B3kCO2eZvKYlo2CQHzTvqYJ",
    "captured":false,
    "created":1234567890,
    "currency":"usd",
    "description":"My First Test Charge (created for API docs)",
    "fraud_details":{},
    "livemode":false,
    "metadata":{},
    "object":"charge",
    "paid":false,
    "refunded":false,
    ...,
  ],
  "has_more": false,
  "object": "list",
  "url": "/v1/charges"
}

mockサーバーにあらかじめ登録されていた購入データが表示されるのが確認できます。

できないこと

  • APIからのレスポンスはあらかじめ規定されたものが返されるため、データの永続化を含む検証は難しいみたいです。

参考