Calling all Ubercart gurus...

Posts: 21
Joined: 01/29/2008

I have just been given an assignment to create a shopping cart solution for a large printer supplies company. The requirements are listed below. I don't need answers to all the requirements, but I was just wondering how many Ubercart can solve.

Basic Needs:

1. Products:
a. Cross Selling (=related products)
b. Up Selling
i. if you’re buying this product, click here to get this bundle instead to
save
ii. buy 2 more to get better price
c. Sub-Products (=versions, options)
d. Price brakes (buy 1 for $10, 2+ for $8, 4+ for $6.5)
e. Product bundling (= % or $ discount if you buy 1 of these 3 products)

2. Cart Page:
a. Products:
i. Add to Cart : Single Product, Multiple Products
ii. Update Quantity in cart
iii. Delete from cart
b. Features:
i. Calculate Shipping (based on zip code)
ii. Calculate Tax (based on zip code)
iii. Calculate discount (based on coupon)
c. Cart information:
i. Add zip code
ii. Add coupon

3. Checkout Options:
a. Credit Card:
i. One page form for payment, billing and shipping information
ii. Login page to re-use addresses – multiple addresses (and credit card?).
iii. Use Authorize.net (AIM Ver. 3.1) API to authorize
iv. Use Paypal Website Payments Pro to authorize
b. Paypal:
i. Use Express Checkout API (DoAutorization)
ii. Will have a DoCapture on the backend
c. Google Checkout:

4. Orders:
a. Account login to see order status

5. Store Settings:
a. Tax: Charge based on State (can provide the list of zip codes)
b. Coupons:
i. Free Shipping Type: (Limited by date, minimum cart total, number of
uses)
ii. Percentage Off: (limited by date, minimum, products, cart session, login, number of uses)
iii. Dollars off: (limited by date, minimum, products, cart session, login, number of uses)

6. Backend Pages:
a. Order Details: (show all details on one page)
i. Ability to change the details (addresses, prices, shipping etc.)
ii. Order Status Update (status, tracking numbers)
iii. Payment update:
1. Credit Card Orders:
2. Paypal Orders: DoCapture
3. Google Checkout Orders: Integrate Capturing
b. Ability for Admin to create an order for a new or old customer, with special prices, and special shipping charges.

7. General Rules:
a. Check all inputs (e.g. form inputs, cookies) for SQL injection.
b. Pages with personal information should use SSL.
c. When possible, use templates, modularization and include files.
d. Before a costomer is doing any backend operations (e.g. Charging credit card), the site should save the information in database, so if they (somehow) click again, we know not to do it again.
e. If possible; use asymmetric encryption to save sensitive information.
f. Pages should not be dependent on client-side JavaScript (on the front-end).

8. Some details:
a. In PHP/Apache
i. Pages should not use session.
ii. Pages should use cookies, but if cookies not available, use URL
StringQueries to track.
iii. Nice URLs

Posts: 1217
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

Just FYI, your points in 8 are pretty much not going to happen, with the exception of "Nice" URLs. I think the entirety of Drupal uses sessions for the user system, and Ubercart uses it for the orders system. Cookies are almost avoidable in every day life as well, and given that, PHP keeps track of cookies in .. you guessed it. Sessions. Is there a reason why you have those restrictions?

The rest of it looks like it's pretty much Ubercart right out of the box, with the exception of Coupons and Discounts - those modules might still need some work.

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 21
Joined: 01/29/2008

Hi torgos,

Thanks for the reply. Not sure why they have those restrictions either. They are real paranoid about security (with good reason due to the sensitive nature of the data).

Do you know how well the Google Checkout module works? I noticed it was a "work in progress" in the contrib section. They suggested I use *cough* Drupal Ecommerce since it supports Google Checkout. I sure would rather use Ubercart since it integrates in with Drupal more seamlessly.

Posts: 2086
Joined: 08/07/2007
AdministratoreLiTe!

I'd like to integrate Google Checkout, but we're still waiting on them for confirmation of our status as an approved e-commerce provider. Once that comes in, I'll be a rather busy bee rolling that out.

I was under the impression that storing data in the session was more secure than cookies, and certainly more so than query strings. Query strings, even in POST can be intercepted if you're not careful, and they're a pain in the butt to code around anyway. I believe that session data is stored on the server, and the client gets a cookie with some hashed string that matches them up to the right session.

Posts: 4695
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

noobercart wrote:
They suggested I use *cough* Drupal Ecommerce since it supports Google Checkout.

For what it's worth, this is a popular misconception. I've never seen a complete/working Google Checkout module for Drupal e-c, just a long issue (that keeps getting longer) about wishing it was there. Sticking out tongue The issue was "fixed" only to point folks toward a master thread of payment gateway wishes, not because it was actually made.

Posts: 126
Joined: 08/22/2007
Spreading the word - Ubercart for president.

The current (in development) Google Checkout is working fine for us with level 1 support. It will be terrific when Lyle gets the level 2 integration working. See it here: http://www.hugamonkey.com/cart

Posts: 149
Joined: 08/07/2007
AdministratorNot Kulvik

Lyle is correct. If you are going to store any sort of persistent data for a user, a session is the most secure way of doing it. The basis of the problem is that http was designed to be stateless. query strings, then cookies, and finally sessions were all created to overcome this "shortcoming" in http.

In order to do e-commerce over http you just about have to have some sort of system to keep the state of the customers. In the past, people have been reluctant to depend on sessions or cookies because they were insecure and or many customers didn't support cookies. At this point sessions are (when correctly implemented) secure, and only a very, very small percentage of web users don't support cookies.

As a result, Ubercart requires sessions. It would be very difficult to make Ubercart work without sessions or cookies, and it would only be used in very rare circumstances, so I don't think it is worth it.

Hopefully you can convince your people that they should use sessions.
Peace,
Andy

Posts: 57
Joined: 08/23/2007

In addition, I don't think that upselling is possible with Ubercart at this point. At least judging by my question here, which never got a response.

FWIW,

Jim

Posts: 1217
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

It's possible now with my Upsell Contrib, but not quite the way you imagined it in your particular scenario. That could be something to get implemented down the road, though.

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 21
Joined: 01/29/2008

Ryan has confirmed my distrust of DE as a viable solution. On my last assignment, I actually uninstalled all the modules and replaced with Ubercart since it was a complete mess. Ubercart has really impressed me with how well it integrates in with Drupal. I also like the modular and extensible design.

I'm not sure how the database back-end can be customized, however. I'd really like a drill-down hierarchy like Manufacturers -> Models -> Products -> SKUs in the catalog. I like Lyle's manufacturer module. Can Ubercart be modified to support this kind of data structure?

Also, I'm confused as to how DE could get approved to support Google Checkout when it has all these problems and you guys have to wait for approval. It sounds like there is some politics involved. I sure wish Google would open their eyes and see how much brighter the future is for Ubercart.

Posts: 21
Joined: 01/29/2008

Sorry, I think they need a hierarchy more in the lines of Products -> Manufacturers -> Models -> SKUs. See their comment below...

I don't know if the "Brands"/"Manufacturers" (as Ubercart handles
them) are the right way to handle things, because in our site, they
need to be part of hierarchy (as oppose to a store that sells clothing
or food, you don't care to see all Nestle's Cereals, Coffees, Cookies
etc. in its own aisle, and coffee from another brand in another aisle.)
But in printer accessories, it needs to be separated by the brand.

Posts: 1217
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

Hierarchy is easy, that can be taken care of with Taxonomy and Views.

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 21
Joined: 01/29/2008

Hi torgos,
Easy is relative. Do you know of any links to tutorial examples on creating a hierarchy for Ubercart, preferrably video if possible? Drupal specific examples are fine also.
Thanks

Posts: 1217
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

I'm not sure if any of the tutorial videos for UC cover taxonomy, to tell you the truth - but the fact that you'd be using it with a cart system, let alone Ubercart, is inconsequential. You can use Taxonomy with any node type, which is what makes it so powerful.

The main thing is to create the vocab in Taxonomy. Download that module and read its documentation - it'll help you understand more. You can create a single hierarchy such as what you described, or you can create a multi-tier hierarchy where products belong to multiple categories or subcats.

The only issue I'm aware of, though, seems to be with the Pathauto module generating aliases for every term or vocabulary; currently it seems to only create an alias for the first category ... but I haven't had time to test this myself.

Since Taxonomy is the main thing you need here, I would try to tinker with it and familiarize yourself first. If you still need help be sure to post back Smiling

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 57
Joined: 08/23/2007

Thanks for letting me know the situation with my specific upsell scenario Smiling And it's great to hear there's a module that facilitates upselling in general - thanks for creating it!

As for implementing my aforementioned question, our client would definitely like it to happen. She would probably be willling to pay for it to happen sooner than later. If you're interested, PM me with a quote....

Thanks,

Jim

--

(Drupal^Ubercart) * (Design^Development^Hosting) = Sundays Energy

Posts: 21
Joined: 01/29/2008

Hi torgos,
I tried to figure out taxonomies (aka categories/vocabularies?) and how they relate to the Catalog and Manufacturer modules. The thing I'm getting hung up on now is how to relate Manufacturers to the Catalog. What I'd really like to do is create a hierarchy like Manufacturers -> Machines -> Components where manufacturers and machines would be listed under the appropriate level and Products would be listed under Components in the Catalog. Do I need to create a Manufacturer term in Catalog or can I tie in the Manufacturer vocabulary somehow? I'm really curious how some other folks came up with a workable hierarchy similar to what I'm trying to do.

Posts: 2086
Joined: 08/07/2007
AdministratoreLiTe!

In this case, I would make a category for each manufacturer in the Catalog vocabulary instead of the Manufacturer vocabulary. You can't really put multiple vocabularies into a single hierarchy since they're independent of each other.

Since Catalog terms can have images, the only thing the Manufacturer module provides is the phone number and URL fields. If these aren't very important, I wouldn't even use it.

Posts: 21
Joined: 01/29/2008

Thanks Lyle,
Is there a way to populate the term_data, term_hierarchy and term_lineage tables from an already populated uc_manufacturers table using SQL? The reason I ask is the term_lineage data looks kinda funky in the lineage field and I'd hate to have to populate all this data manually since there are over 200 manufacturers.

Posts: 43
Joined: 12/09/2007
Bug FinderEarly adopter... addicted to alphas.

this might help on the term data import
http://drupal.org/project/taxonomy_csv

and this for importing the products
http://www.ubercart.org/forum/development/803/csv_import_0_1_alpha

I used both on this site I'm working on STILL
http://www.bowwowimport.com
It has over 16,000 products.
and 1,200 terms so far

good luck

Eric

Posts: 21
Joined: 01/29/2008

Thanks for comments from everyone. I found the Taxonomy Manager module most useful for designing a catalog hierarchy. Drupal and Ubercart rule! Smiling