# Payment feature in rails
This document pretend to introduce you, with a complete example, how you can implement different payment methods with Ruby on Rails.
In the example, we will cover Stripe and Braintree two very well-known payment platforms.
# How to integrate with Stripe
Add Stripe gem to our Gemfile
gem 'stripe'
Add initializers/stripe.rb
file. This file contains the necessary keys for connecting with your stripe account.
require 'require_all'
Rails.configuration.stripe = {
:publishable_key => ENV['STRIPE_PUBLISHABLE_KEY'],
:secret_key => ENV['STRIPE_SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
# How to create a new customer to Stripe
Stripe::Customer.create({email: email, source: payment_token})
This code creates a new customer on Stripe with given email address and source.
payment_token
is the token given from the client-side that contains a payment method like a credit card or bank account.
More info: Stripe.js client-side (opens new window)
# How to retrieve a plan from Stripe
Stripe::Plan.retrieve(stripe_plan_id)
This code retrieves a plan from Stripe by its id.
# How to create a subscription
When we have a customer and a plan we can create a new subscription on Stripe.
Stripe::Subscription.create(customer: customer.id, plan: plan.id)
It will create a new subscription and will charge our User. It's important to know what really happens on Stripe when we subscribe a user to a plan, you will find more info here: Stripe Subscription lifecycle (opens new window).
# How to charge a user with a single payment
Sometimes we want to charge our users just a single time, for do that we will do the next.
Stripe::Charge.create(amount: amount, customer: customer, currency: currency)
In that case, we are charging our user one time for given amount.
Common errors:
# Remarks
Documentation.