やりたいこと
決済サービスの一つである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からのレスポンスはあらかじめ規定されたものが返されるため、データの永続化を含む検証は難しいみたいです。