(This blog entry is about PrestaShop, an e-commerce web application for which HaveAByte provides services. For more information about our offering, please visit our PrestaShop page.)
About a year ago I built shop.haveabyte.com using PrestaShop 126.96.36.199. The experience was fairly good and at the end I wound up recommending Prestashop to a lot of people. I had a lot of trouble with the Paypal interface, but I got it to work well enough to allow me to launch the site. I also do a lot of Magento maintenance and personally I like the back-end interface to PrestaShop much better for smaller projects where you just want to sell a few items, even though PrestaShop is also well designed in some areas to scale very well.
One of our customers, Julie Fogg of ActivePort, who uses our hosted AyaNova solution, and for whom we also built a very nice Joomla website (http://www.activeport.com), has referred a lot of business to HaveAByte. So, when she came to me saying she wanted to build an ecommerce website for her daughter and wanted it done in just a few days, I jumped at the chance. It's great to have real-world practice on web applications like this. It's great to have a real site to be working on when experimenting with software like this - you're just not quite as driven to solve problems when you make an "ABC Test Shop" and just start poking at it randomly. It was also a great opportunity to repay the favors of all the referrals from Julie!
So her daughter, Olivia, came up with BananaFoot.net, Julie registered it and I hooked it into the server. I downloaded and installed PrestaShop 188.8.131.52 and set file permissions. Just like that, less than 30 minutes later, we're up and running.
Julie bought a nice template from http://www.prestashopthemes.net/pres-4 and it took just a few minutes to install. The template had just 3 original PhotoShop PSDs for the main logo and homepage images which didn't take too long to tweak with an image of Olivia and modify the text a bit. And just like that, within an hour or so, we have this:
The top menu and footer were pretty easy to edit, just some .TPL files full of HTML in the theme folders. Some of the pages are powered by PrestaShop's CMS (Content Management System) feature, which provides a simple in-browser editor for making pages such as About Us, Olivia's Photo Gallery, and so on.
The Back Office interface makes adding items and categories a snap. After just a few minutes of instruction over Skype, Julie was able to take over this part of it while I worked on some of the other back-end configuration details.
The Shipping setup is a little odd, but once you figure it out, it suddenly makes sense. You create carriers and price ranges, then map them together, then price the carriers. It feels a bit convoluted and as if you're working backwards but once it's set up it works well enough.
The sample data included provided tons of countries and zones, and if you plan to ship internationally, it's a great setup. When you only want to ship in the US, it takes a little time to disable all of those other countries properly. Changing the store defaults from French to English (PrestaShop is a french-borne application) and changing the currency from Euro to Dollar is simple enough.
Now that everything was ready to go, it's time to sell! There's a modules page where you enable and disable various modules, and the Payment Methods you wish to support are all modules. I disabled all of them except Paypal. The Paypal module's configuration has only a small handful of options, mainly the Paypal address and whether you want to run it in Sandbox mode or not.
This is where things get a little tricky.
After placing an order via Paypal, it returns the user to their account Order History screen, but says there are no orders. Searching around on the forums seems to indicate that this problem has appeared off and on for many users and no clear explanation is readily available yet. I've followed all of the instructions in both the Paypal module's help screen as well as the wiki and tried many forum suggestions.
The basic issue is that whether IPN is off or on, the Paypal purchase ends on a page with a form and button to return to BananaFoot.net. Inspection of the form shows that it's sending a ton of information back to Prestashop by way of the order-confirmation.php file in the root folder. Unfortunately, when this information reaches this page, order-confirmation.php (or some other dependent sub-script) is throwing away the information, not writing anything to the orders table, and then dumping the user to the history screen - which of course then says that they have not placed any orders. The order is recieved and processed OK via Paypal, and even with IPN on, Paypal confirms that the IPN data is being sent properly. But no order history is tracked on Presta's side.
Amazingly, I went back to the HaveAByte Shop and tested it there - same problem, to my surprise.
For now I've decided to create a simple CMS page explaining that the order has been recieved, and redirect the user there from order-confirmation.php. An ugly hack but it will have to do since the goal is to be online ASAP.
Fortunately, within a day or two of posting to the forums and PrestaShop bug tracker, this page was revealed to me
I will be trying this soon and will update this blog entry with more information as it develops! If you're looking to set up a PrestaShop using Paypal as the primary payment method, I'd encourage you to study up on these issues. I haven't tried the Google Checkout module yet but my sense is that it does not have these problems, since most fixes I've seen attempted by the community lie in the Paypal module, though it could be sharing techniques with the Google Checkout module in this area. Hard to say really. I'd simply suggest you understand that you may need to place a lot of orders to get it all working just right (having a test item and test shipping both at $0.01 or using a Paypal Sandbox account helps [if you can get one - Paypal has been having issues lately creating sandbox accounts]).