| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- ==============================================
- Building an e-commerce site: the key questions
- ==============================================
-
- When building an e-commerce site, there are several components whose
- implementation is strongly domain-specific. That is, every site will have
- different requirements for how such a component should operate. As such, these
- components cannot easily be modelled using a generic system - no configurable
- system will be able to accurately capture all the domain-specific behaviour
- required.
-
- The design philosophy of Oscar is to not make a decision for you here, but to
- provide the environment where any domain logic can be implemented, no matter how
- complex.
-
- This document lists the components which will require implementation according
- to the domain at hand. These are the key questions to answer when building your
- application. Much of Oscar's documentation is in the form of "recipes" that
- explain how to solve the questions listed here. Each question links to the
- relevant recipes.
-
- Catalogue
- =========
-
- What are your product types?
- ----------------------------
-
- Are you selling books, DVDs, clothing, downloads or fruit and veg? You will
- need to capture the attributes of your product types within your models. Oscar
- divides products into 'product classes' which each have their own set of
- attributes.
-
- * :doc:`recipes/how_to_model_your_catalogue`
- * :doc:`recipes/importing_a_catalogue`
-
- How is your catalogue organised?
- --------------------------------
-
- How are products organised within the site? A common pattern is to have a
- single category tree where each product belongs to one category which sits
- within a tree structure of other categories. However, there are lots of other
- options such as having several separate taxonomy trees (eg split by brand, by
- theme, by product type). Other questions to consider:
-
- * Can a product belong to more than one category?
- * Can a category sit in more than one place within the tree? (eg a "children's fiction" category
- might sit beneath "children's books" and "fiction").
-
- * :doc:`recipes/how_to_customise_an_app`
- * :doc:`recipes/how_to_customise_models`
- * :doc:`recipes/how_to_override_a_core_class`
-
- How are products managed?
- -------------------------
-
- Is the catalogue managed by a admin using a dashboard, or though an automated
- process, such as processing feeds from a fulfillment system? Where are your
- product images going to be served from?
-
- * :doc:`recipes/how_to_disable_an_app`
-
-
- Pricing, stock and availability
- ===============================
-
- How is tax calculated?
- ----------------------
-
- What availability messages are shown to customers?
- --------------------------------------------------
-
- Based on the stock information from a fulfilment partner, what messaging should be
- displayed on the site?
-
- * :doc:`recipes/how_to_configure_stock_messaging`
-
- Do you allow pre- and back-orders
- ---------------------------------
-
- An pre-order is where you allow a product to be bought before it has been
- published, while a back-order is where you allow a product to be bought that is
- currently out of stock.
-
-
- Shipping
- ========
-
- How are shipping charges calculated?
- ------------------------------------
-
- There are lots of options and variations here. Shipping methods and their
- associated charges can take a variety of forms, including:
-
- * A charge based on the weight of the basket
- * Charging a pre-order and pre-item charge
- * Having free shipping for orders above a given threshold
-
- Recipes:
-
- * :doc:`recipes/how_to_configure_shipping`
-
- Which shipping methods are available?
- -------------------------------------
-
- There's often also an issue of which shipping methods are available, as
- this can depend on:
-
- * The shipping address (eg overseas orders have higher charges)
- * The contents of the basket (eg free shipping for downloadable products)
- * Who the user is (eg sales reps get free shipping)
-
- Oscar provides classes for free shipping, fixed charge shipping, pre-order and
- per-product item charges and weight-based charges. It is provides a mechanism
- for determing which shipping methods are available to the user.
-
- Recipes:
-
- * :doc:`recipes/how_to_configure_shipping`
-
-
- Payment
- =======
-
- How are customers going to pay for orders?
- ------------------------------------------
-
- Often a shop will have a single mechanism for taking payment, such
- as integrating with a payment gateway or using PayPal. However more
- complicated projects will allow users to combine several different payment
- sources such as bankcards, business accounts and giftcards.
-
- Possible payment sources include:
-
- * Bankcard
- * Google checkout
- * PayPal
- * Business account
- * Managed budget
- * Giftcard
- * No upfront payment but send invoices later
-
- The checkout app within django-oscar is suitable flexible that all of these
- methods (and in any combination) is supported. However, you will need to
- implement the logic for your domain by subclassing the relevant view/util
- classes.
-
- Domain logic is often required to:
-
- * Determine which payment methods are available to an order;
- * Determine if payment can be split across sources and in which combinations;
- * Determine the order in which to take payment
- * Determine how to handle failing payments (this can get complicated when using
- multiple payment sources to pay for an order).
-
- * :doc:`recipes/how_to_configure_shipping`
-
- When will payment be taken?
- ---------------------------
-
- A common pattern is to 'pre-auth' a bankcard at the point of checkout then
- 'settle' for the appropriate amouts when the items actually ship. However,
- sometimes payment is taken up front. Often you won't have a choice due to
- limitations of the payment partner you need to integrate with.
-
- * Will the customer be debited at point of checkout, or when the items are dispatched?
- * If charging after checkout, when are shipping charges collected?
- * What happens if an order is cancelled after partial payment?
|