Repository is archived
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
By extending Spree Drop Ship to enable supplier payments Spree works as a Marketplace.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Project Readme

Check out the latest, officially maintained Spree Multi Vendor marketplace extension

SpreeMarketplace

Build Status Code Climate Coverage Status Dependency Status

Spree Marketplace uses the Spree Drop Ship extension in order to enable using Spree as a Marketplace. Mainly all that really means is that this extension enables sending payments to your drop ship suppliers through Stripe with their payment service.

All the other main marketplace functionality - such as - vendors, product setup, shipment details etc... is all accomplished by Spree Drop Ship.

Integrations

Spree Marketplace will support several other Spree extensions being used by scoping information by supplier.

Some extensions that can be used in conjunction with Spree Marketplace:

  • spree_digital
  • spree_editor (assumes use of ckeditor & you should delete the generated models & initializer in your app to use spree_editors copies)
  • spree_group_pricing
  • spree_marketplace
  • spree_related_products

Please Note: If you intend to use any of these extensions you should install them before installing spree_marketplace so that spree_marketplace's migrations are run last. You should also place spree_drop_ship & spree_marketplace AFTER all other extensions in your Gemfile.

Installation

Add spree_marketplace to your Gemfile:

gem 'spree_marketplace', github: 'jdutil/spree_marketplace'

Bundle your dependencies and run the installation generator:

bundle
bundle exec rails g spree_marketplace:install

Configuration

Once installed you must configure your Stripe API keys. To do so you have two options:

  1. Simply setup either as your payment processing method and spree_marketplace will use your payment methods api key.

  2. Configure in an initializer by adding the following to the end of your config/intializers/spree.rb:

    SpreeMarketplace::Config[:stripe_publishable_key] = 'YourPublishableKey' SpreeMarketplace::Config[:stripe_secret_key] = 'YourSecretKey'

  3. Currently you must implement your own payment code as this varies between applications, but once the TODO list is complete this will be an optional configuration likely in a rake task.

Testing

Be sure to bundle your dependencies and then create a dummy test app for the specs to run against.

bundle
bundle exec rake test_app
bundle exec rspec spec

When testing your applications integration with this extension you may use it's factories. Simply add this require statement to your spec_helper:

require 'spree_marketplace/factories'

TODO

  • stop overridding spree_drop_ship's supplier ability if possible
  • update product management of products
  • permit attributes in controller
  • On dso complete credit supplier bank account
  • On order complete credit marketplace bank account w/commission
  • On order complete credit marketplace bank account w/tax?
  • Refactor to not rely on stripe & be interchangeable.
  • suppliers should be able to manage option types and values (unsure about whether to scope to supplier or not, but thats probably best solution for everyone)

Copyright (c) 2013-2014+ Jeff Dutil, released under the New BSD License