Skip to content
This repository has been archived by the owner on Oct 16, 2018. It is now read-only.

One time payments

PLopezD edited this page Nov 21, 2014 · 3 revisions

Single Sales

To start selling products, just include Payola::Sellable. For example, if you have a Book model:

class Book < ActiveRecord::Base
  include Payola::Sellable
end

Each sellable model requires three attributes:

  • price:integer, (attribute) an amount in the format that Stripe expects. For USD this is cents.
  • permalink:string, (attribute) a human-readable slug that is exposed in the URL
  • name:string, (attribute) a human-readable name exposed on product pages

For example, to create a 'Book' model:

$ rails g model Book price:integer permalink:string name:string
$ rake db:migrate

Add the concern:

class Book < ActiveRecord::Base
  include Payola::Sellable
end

Finally, add a book to the database:

$ rails console
irb(main):001:0> Book.create(name: 'The Book', permalink: 'the-book', price: 1000)

There are two optional methods you can implement on your sellable:

  • redirect_path takes the sale as an argument and returns a path. The buyer's browser will be redirected to that path after a successful sale. This defaults to /.
  • currency returns the currency for this product. Payola will default to usd, which can be changed with the default_currency config setting.

When people buy your product, Payola records information in Payola::Sale records and will record history if you have the paper_trail gem installed. It is highly recommended to install paper_trail.

Checkout Button

To sell a product, use the checkout partial like this:

<%= render 'payola/transactions/checkout', sellable: YourProductClass.first %>

This will insert a Stripe Checkout button. The checkout partial has a bunch of options:

  • sellable: The product to sell. Required.
  • button_text: What to put on the button. Defaults to "Pay Now"
  • button_class: What class to put on the actual button. Defaults to "stripe-button-el".
  • name: What to put at the top of the Checkout popup. Defaults to product.name.
  • description: What to show as the description in the popup. Defaults to product name + the formatted price.
  • product_image_path: An image to insert into the Checkout popup. Defaults to blank.
  • panel_label: The label of the button in the Checkout popup.
  • allow_remember_me: Whether to show the Remember me checkbox. Defaults to true.
  • email: Email address to pre-fill. Defaults to blank.
  • custom_fields: Data to pass to the charge_verifier (see below)
Clone this wiki locally