Integrating Stripe Payments in Ruby on Rails
If you’re looking to accept online payments on your Ruby on Rails website, Stripe provides a powerful and secure payment processing solution. With its easy-to-use API and comprehensive documentation, integrating Stripe payments into your Rails application can be a breeze.
Step 1: Setting up Stripe Account
To get started, you’ll need a Stripe account. Visit the Stripe website and create an account if you don’t have one already. Once you’re signed in, you’ll be able to access your API keys.
Step 2: Installing the Stripe Gem
To integrate Stripe payments into your Ruby on Rails application, you’ll need to install the Stripe gem by adding it to your Gemfile:
gem 'stripe'
After adding the gem, run the following command to install it:
$ bundle install
Step 3: Configuring Stripe API Keys
In order to use Stripe, you need to configure your API keys. Open your Rails application and navigate to the config/initializers/stripe.rb
file. If the file doesn’t exist, create it.
Rails.configuration.stripe = {
publishable_key: 'your-publishable-key',
secret_key: 'your-secret-key'
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
Replace ‘your-publishable-key’ and ‘your-secret-key’ with the respective API keys from your Stripe account.
Step 4: Creating a Payment Form
Now that you have Stripe set up, you can create a payment form for your users. Assuming you have a model called ‘Order’, you could create a payment form like this:
<%= form_with(model: @order, local: true) do |form| %>
<%= form.label :card_number %>
<%= form.text_field :card_number %>
<%= form.label :expiration_date %>
<%= form.text_field :expiration_date %>
<%= form.label :cvv %>
<%= form.text_field :cvv %>
<%= form.submit 'Pay Now', class: 'btn-primary' %>
<% end %>
Note that you need to replace ‘Order’ with the appropriate model name and adjust the form fields accordingly.
Step 5: Processing Payments
To process the payment, you’ll need to handle the form submission in your controller’s action. Here’s a basic example:
class OrdersController < ApplicationController
def create
@order = Order.new(order_params)
if @order.save
charge = Stripe::Charge.create(
amount: @order.total_amount * 100,
currency: 'usd',
source: params[:order][:token],
description: 'Payment for order #' + @order.id
)
# Handle successful payment
else
# Handle payment failure
end
end
private
def order_params
params.require(:order).permit(:card_number, :expiration_date, :cvv)
end
end
In this example, the ‘create’ action creates a new order object based on the submitted form data. It then attempts to charge the provided card using the Stripe gem. You can handle the response based on the charge’s status, updating the order’s payment status accordingly.
Conclusion
By following these steps, you can easily integrate Stripe payments into your Ruby on Rails application. Stripe provides extensive documentation and resources to help you further customize your payment processing and handle advanced features like subscriptions and refunds. Happy coding!
Leave a Reply