StripeWebhooks
StripeWebhooks is a Rails engine for dealing with data posted from Stripe via Webhooks.
Goals
- Provide an endpoint for capturing POST data from Stripe
- Verify authenticity of data by checking against the Stripe API
- Run callbacks in response to desired events
- Enable an app to "catch up" with missed events in the case of a server outage
- Store as little Stripe data locally as possible
Requirements
- Stripe 1.23 or higher
- Rails 4.2
- Ruby 2.2
Installation
First, install and configure the stripe gem according to their instructions. Then:
-
Add the gem to your Gemfile
gem 'stripe_webhooks'
-
Run bundle install
-
Copy the database migrations to your rails project
bundle exec rake railties:install:migrations rake db:migrate
-
Mount the engine in your routes.rb file
mount StripeWebhooks::Engine => "/stripe_webhooks"
-
Restart your application
Configuration
Once the gem has been installed and configured, log in to your Stripe account and configure the webhook with your application endpoint.
The stripe_webhooks
gem will capture and process events using ActiveJob. The default behavior for ActiveJob is to run tasks immediately; It is strongly recommended that you configure a background queue instead. See the ActiveJob docs for a list of available queueing back ends.
Callbacks
Create a callback object using the generator, which accepts a name argument followed by a list of stripe event types.
rails g stripe_webhooks:callback Customer customer.created customer.updated customer.deleted
See the official documentation for a list of possible events.
This will creates a new callback object at app/callbacks/NAME_callback.rb
. A callback is a simple ruby object with a handles_events
declaration and a #run
method.
class CustomerCallback < ApplicationCallback
handles_events 'customer.created', 'customer.updated', 'customer.deleted'
def run(event)
# do useful stuff here!
end
end