Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Collect payments from wepay in your rails application.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
.document
.gitignore
Gemfile
Gemfile.lock
LICENSE.txt
README
README.rdoc
Rakefile
VERSION
wepay-rails.gemspec

README.rdoc

wepay-rails

Wepay-Rails allows your rails app to accept payments with Wepay (www.wepay.com).

Since Wepay uses Oauth2 to authenticate, wepay-rails has been built to handle this for you. You will need to add a column to one of your models to hold the authentication token. For example, if you have a user model:

Your migration:

add_column :users, :wepay_auth_code, :string

Your model:

class User < ActiveRecord::Base

wepayable :wepay_auth_code

end

Adding wepayable to your model also adds some helpful methods to your model, like save_<your column name>

You'll need a controller and action for wepay to call back - add the entry to your routes file:

class Wepay::AuthorizeController < ApplicationController

before_filter :authenticate_account!

def index
  current_user.save_wepay_auth_code params[:code]
  initialize_wepay_access_token(params[:code])

  redirect_to purchase_checkout_index_path
end

private
include WepayRails::Payments

end

When you include WepayRails::Payments, you get the controller actions you need. For instance, initialize_wepay_access_token(auth_code) which completes the Oauth2 handshake with Wepay and get's the access token for future comunications with Wepay.

Finally, your checkout controller (or some controller that will interact with the Wepay API):

class Purchase::CheckoutController < ApplicationController

before_filter :authenticate_account!

def index
  if current_user.has_wepay_auth_code?
    if wepay_access_token_exists?
      # Send payment off to wepay or get the user or something else
      render :json => gateway.wepay_user
      return
    else
      initialize_wepay_access_token(current_user.wepay_auth_code)
    end
  else
    redirect_to_wepay_for_auth
  end
end

private
include WepayRails::Payments

end

First, we check to see if we have saved the auth code for the user, if so, we next need to see if we have an Oauth2 access token. If not, we can initialize the access token. If it is there, go ahead and make an api call - the example above gets the wepay_user.

Configuration is done through config/wepay.yml:

production:

client_id: <your wepay client id>
client_secret: <your wepay client secret code>
redirect_uri: "<your callback url in your rails app>"
scope: ['refund_payments','collect_payments','view_balance','view_user']
#wepay_api_uri: "https://api.wepay.com"
wepay_api_uri: "https://stage.wepay.com"
wepay_api_version: "v2"

development:

client_id: 12345
client_secret: 12345asdfg
redirect_uri: "http://www.example.com/wepay/authorize"
scope: ['refund_payments','collect_payments','view_balance','view_user']
wepay_api_uri: "https://stage.wepay.com"
wepay_api_version: "v2"

test:

client_id: 12345
client_secret: 12345asdfg
redirect_uri: "http://www.example.com/wepay/authorize"
scope: ['refund_payments','collect_payments','view_balance','view_user']
wepay_api_uri: "https://stage.wepay.com"
wepay_api_version: "v2"

Contributing to wepay-rails

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet

  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it

  • Fork the project

  • Start a feature/bugfix branch

  • Commit and push until you are happy with your contribution

  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright

Copyright © 2011 Adam Medeiros. See LICENSE.txt for further details.

Something went wrong with that request. Please try again.