Ubercart Marketplace: multiple seller support

Please help maintain/edit this page if you have constructive input. Ubercart Marketplace adds multiple seller support to the Ubercart module. It includes a series of modules that limit the access to Ubercart functions for sellers. Additional functionality is added to support this from both a marketplace seller's point of view and the store administrator's view. Sellers (with the proper access permissions) gain the ability to view their products, track and fulfill their orders, and monitor their sales reports. Store administrators can view seller reports based on seller order statuses and seller sales. Support is included for Paypal Mass Payments, with which an administrator can automatically pay his/her sellers for custom periods. Important Links Ubercart Marketplace - Features Ubercart Marketplace - Project Page For feature requests, bug reports, or support requests, please use the project issue queue or the forums at ubercart.org.

Installation Instructions

Ubercart Marketplace 6.x
  • Make necessary site backups
  • Extract Ubercart Marketplace in your sites/all/modules folder in Drupal directory
  • Place packingslip.itpl (included with Ubercart Marketplace) in your sites/all/modules/ubercart/uc_order/templates directory
  • Enable all modules you wish to use
  • Note: Ubercart Marketplace 6.x, unlike Ubercart Marketplace 5.x, does not require the patch described below in the "5.x Installation Instructions"
Ubercart Marketplace 5.x
  • Make necessary site backups.
  • Extract Ubercart Marketplace in your sites/all/modules folder in Drupal directory.
  • Place packingslip.itpl (included with Ubercart Marketplace) in your sites/all/modules/ubercart/uc_order/templates directory.
  • Patch uc_shipping module using included (non contextual) patch or adding the following two lines manually: At the very end of this function (approx. line 1228):
    /**
    * Save a package.
    */
    function uc_shipping_package_save($package) {
    place module_invoke_all('package', 'save', $package->package_id); like so
        db_query("UPDATE {uc_packages} SET ". implode(',', $types) ." WHERE package_id = %d", $values);
      }
      module_invoke_all('package', 'save', $package->package_id);
    }
    Do similar for uc_shipping_package_delete() in uc_shipping.module (approx. line 1237)
    /**
    * Delete a package.
    */
    function uc_shipping_package_delete($package_id) {
      db_query("DELETE FROM {uc_packages} WHERE package_id = %d", $package_id);
      db_query("DELETE FROM {uc_packaged_products} WHERE package_id = %d", $package_id);
      drupal_set_message(t('Package @id has been deleted.', array('@id' => $package_id)));
      module_invoke_all('package', 'delete', $package_id);
    }
  • Enable all modules you wish to use.

Setup

Ubercart Marketplace
  • Most settings can be found at admin/store/settings/seller. Carefully read inline directions for help.
  • File selling support settings can be found on the latter page. The CCK Filefield module is required and the field name you specify for the product node should be entered (without "field_") on the settings page.
  • Notification settings (if mp_notify enabled) can be found at admin/store/settings/notify/edit/seller (5.x). Notification settings for 6.x version are controlled through Conditional Actions and can be modified in the Ubercart Conditional Actions interface (note: mp_notify no longer exists as an independent module)
  • Many permissions have been added to control seller access. Create a "seller" role and give them the necessary permissions (i.e. those provided by Ubercart Marketplace and permissions such as "edit own product"). Do NOT give the "seller" role the permission "administer product features" or other permissions that Ubercart Marketplace may offer a similar but more restricted permission for.
  • To make use of the seller payment methods provided by Ubercart Marketplace, you should enable the uc_paypal module (even if Paypal is not an active payment gateway) and configure the Paypal Web Payments Pro (WPP) settings. It is not necessary to have an actual WPP Paypal account, but you should attain API credentials from Paypal (free) and fill in the necessary information on the Paypal settings pages in Ubercart configuration.
Enabling marketplace status for products (6.x)
  • Go to admin/store/products/marketplace-tools to enable marketplace status for your various product classes.
  • Click edit under 'Actions' to set commission per role for each product class if necessary. If you don't change this the default store commission will be used.
PayPal MassPay
  • Go to Test Accounts, select "Create Account: Preconfigured", Choose account type "Seller", use given data
  • Go to API Credentials, copy API Username, Password, and Signature to Drupal
  • Enable uc_paypal module
  • Setup PayPal Website Payment Pro settings at: "Store Administration >> Configuration >> Payment Settings >> Edit >> Payment Gateways" or directly via /admin/store/settings/payment/edit/gateways
  • Enable this payment gateway for use
  • API server: Sandbox
  • Now enter your API credentials
  • If IPN is setup you may now make payments at "Store administration >> reports >> Seller reports"
PayPal Instant Payment Notification (IPN)
  • Go to your Paypal sandbox account
  • Select "Test Accounts"
  • Select the radio button for the "Business" user who has the API Credentials you used for your Drupal site
  • Press the "Enter Sandbox Test Site" button
  • Login
  • From the "Profile" menu under the "My Account" tab, select "More Options"
  • Under "Selling Preferences" select "Instant Payment Notification"
  • Make sure "Message delivery" says "Enabled" and the "Notification URL" is correct
  • Perhaps I am too lazy and impatient but I couldn't get this working on my local computer so I used a live domain name for the "Notification URL". The URL I used was "www.yourwebsitename.com/masspay/ipn". I would imagine you could use something like IP-ADDRESS/masspay/ipn with some port forwarding magic or something on your local computer but... If someone figures this out or has done this before please post it. Otherwise I'll figure it out later when I'm more motivated.
  • IPN should be working now.
  • Don't forget you'll need to change your Paypal settings to the live servers to actually process transactions.
Shipping File Features
  • Enable Marketplace File Downloads module
  • Go to "Content management >> Content types >> Edit product >> Manage fields"
  • Under "add" for the "field name" type "download" so that "field_" becomes "field_download"
  • A text label associated with this field can be set if desired
  • Set file as "Type of data to store."
  • Go to "Store administration >> Configuration >> Product settings >> Edit >> Product features" and make sure "Files path" is set in the "File download settings"
  • Allow users to commit files

Managing Seller Sales

Admin Point of View
  • To make payments go to: admin/store/reports/seller/custom. Enter a custom date range to make payments for, select the individuals you wish to pay, and select "make payments." If you have the Paypal settings configured correctly, Paypal Masspay will be utilized to send payments for completed orders to all sellers specified for order ranges specified. NOTE: In your Paypal account, you MUST set your IPN url to http://yoursiteaddress.com/masspay/ipn. This can be found in your Paypal profile >> Selling preferences >> Instant Payment Notification preferences on Paypal's site. Statuses will not be reported if this step is neglected.
  • Seller order statuses can be tracked here: admin/store/reports/seller/statuses.
Seller Point of View
  • Sellers can view their orders, products, and sales reports at user/*/selling.
  • Orders that contain shippable products must be fulfilled by the seller to move to completed status (and be eligible for payment). To do so, they can click the "fulfill orders" tab on selling page (user/*/selling) and follow onscreen instructions to first package and then ship orders (5.x) or simply indicate the product has been shipped (6.x).
  • It is important to note that only orders with status "payment received" or "completed" will show up for sellers (this is because it makes the most sense for sellers to only process orders where it has been confirmed that the buyer has paid). The store admin will only be able to pay sellers (via Masspay) once the seller has fulfilled the order and indicated so as per the instructions above (this is because it only makes sense to pay sellers when they have fulfilled the order).

Live Sites

Please do not create test accounts; these are live: