How do I set up an e-commerce site that accepts photo uploads and takes credit card payments?
June 24, 2009 11:42 AM   Subscribe

How do I set up an e-commerce site that accepts photo uploads and takes credit card payments?

I've been asked to set up a website for a client who wants to custom-print an item using photos uploaded by customers. They need to accept credit card payments.

As one option, I am considering setting up a custom front-end for Shopify, but I'm not sure whether that's overkill, or whether they can accept an uploaded picture sent as part of the order information.

What's the simplest/best way to do this? My PHP/Javascript skills are rather rudimentary, but I'd like to learn more. Should I try to do something from scratch, or are there good solutions out there already?

It seems like there would be a few parts to doing this manually:
  1. Getting the customer's order info from a form (I can handle the HTML for this)
  2. Getting the customer's photo, making sure it's within specs, and displaying a reduced preview (I don't know the best way to do this… I assume there a image processing libraries available or something)
  3. Processing a credit card payment (I don't know the best way to do this)
  4. Doing something with that order data (could it be emailed to the client, or is that too insecure? would I need to set up a front end for the client to access orders stored in a database?)
Hope me, Metafilter! You're my only help.
posted by designbot to Computers & Internet (8 answers total) 1 user marked this as a favorite
Response by poster: Oh, my lack of knowledge about Ruby is just as strong as my lack of knowledge about PHP & Javascript, so that's an option too.
posted by designbot at 11:45 AM on June 24, 2009

Might I suggest hiring someone? No offense, but it seems like you have none of the experience or skills necessary for ecommerce, and many developers are quite used to working with a designer/whatever your role is.

2. There are several free image libraries that aren't too tough to install, or maybe even come with the existing hosting, such as GD and ImageMagick. I believe GD is mostly php but ImageMagick has libraries for all the popular server side options. Any server side language will be able to handle image uploads.

3. You should probably stick to paypal or google checkouts as site security is pretty difficult. Search around for "payment gateways" though, as that is the industry term for what you are looking for.

4. Email is a crappy way to get info to a client because it is 100% not secure. You will want a backend the client can log into and probably hacking a store is the best way to accomplish this.
posted by shownomercy at 11:59 AM on June 24, 2009

Magento will take CC payments and is open-source. For a few bucks, a developer could probably swing a photo-upload thing.

You WILL need a payment gateway if you're deadset on taking cards. I'd suggest starting with PayPal unless your client is against it.

You sound a little in over your head. This is a good project to learn on, but only if you've got a liberal deadline. Otherwise, I'd look to a developer. Remember that you're playing with other people's private information.
posted by GilloD at 12:04 PM on June 24, 2009

Response by poster: Thanks for the advice… I figured email would be an insecure way to process orders, and I am over my head, but this is water I'd like to get my head over at some point.

I would be happy to let a third-party service like Shopify or Magento handle the order-processing; I just need to find one that will accept an uploaded picture as part of the order. I guess I could handle the picture separately…
posted by designbot at 12:30 PM on June 24, 2009

You should be considering how to handle the ecommerce completely separately from the upload-a-photo portion of the site. How this typically works is that the transaction engine will signal back to your site that the CC transaction succeeded (or not), from which point you do whatever needs to be done with the order (whether that's sending it to fulfillment or sending the user a download of whatever they bought or, in your case, allowing upload of a photo.) Commerce engines just handle the money, they don't (and shouldn't) get involved in the inner workings of your site.

You absolutely do not want to homeroll your own ecommerce engine. Even if you were an experienced web developer you would not want to do this; it's too easy to screw up, and that's not something you want to do when you're dealing with people's credit card numbers. There are plenty of existing tools for handling this, with varying degrees of customizability, ranging from (dozens of) prebuilt shopping-cart front ends to more barebones transaction handling like paypal (which makes the fact that you're using paypal visible to the end user) or, say, (which handles the transaction behind the scenes through a transaction API you call from the webserver.)

In fact the more I reread your question, the more I want to suggest that you subcontract this job to a developer. If you're at the skill level where capturing information from a form is still notable enough to mention, then this task is far more than you should be learning how to do on someone else's dime. If you want to learn how to do this stuff, pick one part of it -- just the user registration / cookie tracking, say, or just the photo uploading and manipulation -- and build it on your own time; once you've figured out how to handle some of the bits and pieces in isolation you'll be better able to see how they all fit together (and to start billing clients for it.)
posted by ook at 1:33 PM on June 24, 2009

If you have about $35 and a few hours to skim a book, check out Using Drupal (it's an O'Reilly book). A number of the things you want to accomplish are addressed in the book, including setting up Ubercart (the really nice Drupal module that does shopping cart/catalog). Along with the user profiles, photogallery, and perhaps a few others (and some custom code) you could be there.
posted by jdfan at 3:48 PM on June 24, 2009

I'm a professional in this area, setting up e-commerce sites is my specialty. *Do not* try to roll your own site from scratch. It will steal more time than you can possibly believe. My first store - for myself - took an entire summer to write, and I have twenty years programming experience. The chance that you can do it with your stated lack of skill is next to nil. The chance that you could do it in a secure manner is even closer to nil.

That said, investigate your options and then use a good open-source store framework. I hear good things about Magento (a PHP cart). I personally love Satchmo ( which is Python/Django, but perhaps that's because I am on the core development team. I do a lot of Drupal work too, but I haven't tried out Ubercart. I think it looks halfway decent, but a little strange to someone who doesn't already "think Drupal."

If this is way over your head, hire someone to help set up the store and tell him or her up front that you want mentoring not just for admin but for the programming parts of the project. Not everyone will accept that kind of gig, some programmers don't like teaching or are jealous of their super-secret-knowledge, but many will.

Lastly, accepting Credit Cards is a pain, even with a good framework. Minimum cost of entry will be a Gateway Account (to process the payments), a Merchant Account (a useless middleman IMHO, but required), and a business bank account. Each of these people will charge you a monthly minimum fee. Add American Express and that's another monthly fee. Some of these middlemen even want a setup fee. Also, it will always take longer than you think it possibly could. Many is the time I've lamented to the skies "I'm giving them free money for almost no service! How could they be so incredibly slow to get the account set up!"

Unless you are certain you want to directly accept credit cards, just go through Paypal, Amazon or Google Checkout. Once the money comes rolling in from your store, *then* go through the hassle of setting up credit card acceptance. Most frameworks will let you enable it later.
posted by Invoke at 4:52 PM on June 24, 2009

Response by poster: If it makes things simpler, I don't need an elaborate storefront; there's basically just one product for sale. If I can avoid mucking around with PHP on the server, so much the better.

I've found many options that would almost work; the sticking point is being able to upload an image associated with the order. Wufoo was almost there, but they can't handle shipping options.
posted by designbot at 4:52 PM on June 24, 2009

« Older Help me clean an email list?   |   Help Me Marry In CA Newer »
This thread is closed to new comments.