Git Product home page Git Product logo

combine's Introduction

Combine: get paid faster with Stripe + Heroku

NO LONGER MAINTAINED

Harvest recently introduced native integration with Stripe, so this application is no longer needed or maintained.

The portions of this application that are my code are in the public domain.

What?

A quick, open source app for accepting credit card payments for invoices online. You can easily run it on Heroku for free (or your own Rails-capable server). Stripe handles the credit card transactions.

Features include:

  • Personalized, letter-style online payment forms for your clients
  • Email your clients links to payment forms with one click
  • Track when your clients view payment forms
  • Dashboard listing unpaid invoices
  • Add any convenience fee to invoice totals to help cover Stripe's 2.9% fee
  • Plesant typography

Here's a screenshot of an invoice payment form:

See a complete example invoice payment form.

Who?

Made by Max Masnick for himself and other like-minded consultants. Anyone with basic command line skills can set up Combine for themselves.

Why?

Getting paid by check is slow, unreliable, and generally annoying. PayPal might steal your hard-earned money.

It's relative easy to set up a website to accept credit card payments with Stripe (like this one), but there's no need for every contractor or freelancer reinvent the wheel.

For more, see my blog post.

How?

  1. First, make sure you have the following on your computer:

    1. Ruby and rubygems (check with which ruby and which gem; Google for installation instructions if needed).
    2. Heroku gem (check with which heroku; install with `gem install heroku).
  2. Then, you'll need some (free) accounts:

    1. Stripe
    2. Heroku
    3. Mailgun
  3. Next, clone this repository to your computer.

  4. cd into your local clone and run heroku create example, which will create your app at example.herokuapp.com. If you're having trouble naming your app, I'd recommend yourname-payments.herokuapp.com.

  5. Set up Mailgun:

    1. Go to your mailboxes page.
    2. Click on [email protected].
    3. Create a password and note it for the next step.
  6. Run the following command, replacing the values for all the config vars with your own. See config/initializers/combine.rb for more information.

    heroku config:set STRIPE_API=ETPdHzvFZ1LFbwrIskXDLrZiudilJvig STRIPE_API_PUBLIC=pk_cD9uLyh2HOG7c2OA1lQBeqrmG1nvR BUSINESS_NAME="Your Name, Inc." [email protected] APP_URL=example.herokuapp.com [email protected] MAILGUN_PASSWORD=password RAILS_SECRET_TOKEN=longrandomstring
    

    You can start out with your test API keys.

  7. Run git push heroku master to deploy the app to your server.

  8. Run heroku run rake db:load:schema to set up your database.

  9. Run heroku run console to enter the Heroku console and then run the following command to create an admin user (you can create as many as you'd like by running this command multiple times).

    AdminUser.create!(:email => '[email protected]', :password => 'password', :password_confirmation => 'password')
    
  10. Test your app:

    1. Go to example.herokuapp.com and make sure you see a page with your business name on it.
    2. Go to example.herokuapp.com/admin and log in with the credentials you set up above. You should be able to create a client and then an invoice, etc. in the admin panel.
    3. Try charging an invoice with the Stripe test data.
    4. Try emailing yourself: create a client with your email address, add an invoice, and click the "email" link on the admin dashboard.

Help

If you have any trouble, file an issue and then ping me on twitter to make sure I see it.

Hacking

This is a pretty standard Rails setup. The only differences are:

  • Use pow.cx for your local server -- the app should be at http://combine.dev.
  • Use MailCatcher for local email testing.

Improvements are welcome. Submit a pull request and then ping me on twitter to make sure I see it.

Things I'd like to do include:

  • Integrate with Harvest, maybe emailing Harvest's PDF invoices as attachments and/or automatically creating invoices
  • Add tracking of email opens
  • Less silly icon

Disclaimer

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

combine's People

Contributors

masnick avatar polymetis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

combine's Issues

Error with rake

Everytime time I try to run rake to make the database it keeps not knowing what to do?

I was wondering if you have any input. Here is the --trace dump.

Running `rake db:load:schema --trace` attached to terminal... up, run.1
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
rake aborted!
Don't know how to build task 'db:load:schema'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task_manager.rb:49:in `[]'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:115:in `invoke_task'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.