Features
Blog module released
0 Comment(s) | published by Bobkov A. on Monday, June 07, 2010
Several days ago we published the blog module. The module is quite simple, but powerful enough to satisfy the needs of most eCommerce websites. This is the very same module which powers this blog and which we have been using for many months. The module implements the following features:
- Blog post categories (no tagging). Each post can belong to multiple categories.
- Blog posts in HTML format. The HTML editor is configurable.
- Commenting with moderation.
- New comments email notifications.
- Comments email subscriptions - allows visitors to subscribe to email comment notifications of a specific post.
- RSS feeds for posts and comments.
- SEO-friendly URLs.
- As usual in LemonStand - any custom design can be used for front-end pages.
- API for accessing blog posts and categories.
The API allows you to load specific categories from the database, display the blog archive, use custom URLs and do other interesting things. For example, you can use the blog module for displaying testimonials or press releases.
You can find detailed implementation documentation with examples and a comprehensive API description in our Wiki.
Tax Engine update: tax inclusive environments support
0 Comment(s) | published by Bobkov A. on Thursday, June 03, 2010
A few days ago we published a Tax Engine update, which makes LemonStand compatible with tax inclusive environments and laws, for example, Australian tax laws. The feature has a very simple configuration - you only need to enable it on the System/Settings/eCommerce Settings page:

LemonStand's API also allows you to output the "tax included" label where you need it. You can configure the label text and customer locations the label should be visible for. And besides that, we added an invoice template, suitable for Australian stores. Like everything else in LemonStand, invoices are customizable and you can develop your own unique invoice design.
We're constantly working to improve the Tax Engine. It's a very important aspect of eCommerce and so we've invested much development into this area. At the moment we are extending it with functions required by German tax law. LemonStand is always becoming more internationally compatible, and we'll continue to go in this direction.
You can learn more about the tax engine update on this Wiki page.
Discount and Tax Engine updates
1 Comment(s) | published by Bobkov A. on Wednesday, May 12, 2010
We spent an entire week preparing a large-scale update of the Discount and Tax Engines. Taxes are calculated more accurately now, and discount management is more intelligent. We wanted to tell you about the updates before we publish them. Below is a list of the most important improvements.
Tax Engine improvements
- Taxes are now calculated based on subtotals. Before these updates, taxes were calculated for each cart item separately. The new method is more precise.
- Taxes always take into account discounts. We explored competitor offerings, and found that even with the most popular of them taxes are not always affected by discounts. If you bought a product with a discount, the tax amounts would not be reduced in some systems and in some circumstances. For example, if you purchased an expensive TV set with a 25% discount, taxes would be calculated based on the original price, not the discounted price. Now with LemonStand you will always have correct tax values.
Discount Engine improvements
- Cart-level price rules now assign discounts to each cart item individually. If you use the "Discount the shopping cart subtotal by X percent" price action in your discount configuration, LemonStand will now distribute the discount amount among all items in the cart.
- As a consequence of the previous item, discount concepts in LemonStand orders have changed. Before the update it was an "amount which you need to add to the subtotal to get the order total". Now order subtotal includes discounts, and the order discount field just displays the total amount of discounts applied by catalog and cart price rules.
- It is very easy to apply discounts for existing orders in the Administration Area. On the Discounts tab you can click the Enter discount manually link and enter a discount value as a fixed amount or as a percentage value. LemonStand will distribute the amount among the order items and then re-calculate taxes.
Implications on existing orders
We already have some LemonStand-based stores which are taking live orders. The update will not affect reports or any elements of existing orders. No updates are needed in pages or partials code. However if you are going to edit an existing order which has some discount applied, we recommend that you save the order details somewhere before you begin and then apply the price rules using the Apply price rules link on the Discounts tab of the Edit Order page. Alternatively, you can assign discounts individually for each order item.
If you use the discount engine, we recommend that you check whether your rules work as supposed after the update. Just make a couple of test orders. Please contact us if you think that something went wrong.
Striving to make LemonStand an ideal platform
As mentioned above, many of our competitors have had issues related to tax and discount calculation for years. It has ultimately resulted in problems for the merchant in may cases.
We identified the problem during our beta testing and solved it quickly. We are committed to delivering a mature and intelligent eCommerce platform and fixing all that is wrong with the shopping cart industry.
Payment Transaction Management
3 Comment(s) | published by Bobkov A. on Monday, May 03, 2010
We recently published the transaction management feature, which adds more power and usability to the way you manage orders. The feature allows you to update payment transaction statuses without leaving the Administration Area. From the Order Preview page you can settle, void and refund transactions.

The list displays transaction updates, with new updates displayed first. Almost all payment methods can be configured so that when a customer pays on your store, their credit card is not charged, but only authorized (checked). This creates a transaction with a status of Authorized at the payment gateway. You can now go to the Order Preview page and submit a transaction for settlement or void it.

Some actions with payment transactions can be performed outside LemonStand and LemonStand will not know about them. For example, transactions, submitted for settlement are settled automatically by the payment gateway after some time. Also, you can go to your payment gateway control panel and change a transaction's status manually. In these cases the transaction status update will not be reflected in the Administration Area. However you can click the Request status from the gateway button above the transaction list and LemonStand will contact the payment gateway in order to download the most recent transaction status.

Implementation limitations
Transaction management needs to be supported by your payment gateway and implemented in a LemonStand payment module. At the moment the feature is only implemented in the Braintree Transparent Redirect payment module. Please contact us or comment below if you want to see transaction management features implemented for a specific payment module.
Easily Achieve PCI Compliance with Tokenization
5 Comment(s) | published by Halarewich D. on Friday, April 30, 2010
PCI compliance is a massive burden and worry for most merchants. Sort of like doing your taxes.
While the Payment Card Industry is getting more strict (and rightfully so) with security, many payment gateway companies have not found a great way to solve the problem. This has lead to many merchants simply ignoring the problem, incurring massive costs or shutting their doors because it's not sustainable.
It also puts eCommerce platform authors in a terrible position when one considers the cost of becoming PA-DSS certified, and maintaining this certification. But thankfully, so far we know of at least one payment gateway company to help solve the problem. That is Braintree.
Meet Braintree's Transparent Redirect
Our unique solutions prevent credit card data from entering a merchant environment without changing the user experience and offer merchants full control over the data. The scope of PCI Compliance is significantly reduced and no credit card data is present to be stolen. We don’t just solve PCI Compliance problems, we make them go away.
By using our Transparent Redirect (TR) and Vault, merchants can achieve PCI Compliance in days. TR and the Vault will eliminate the handling, processing or storing credit card data so you can qualify for the Self Assessment Questionnaire A, the shortest of the four SAQs.
– Taken from Braintree's website.
By using their Transparent Redirect service, you can possibly avoid or highly reduce many complexities and costs associated with PCI compliance.
How it Works
Put simply, card holder data never touches your environment. The customer's browser sends their information directly to Braintree where it is processed. This video will describe the solution in more detail:
LemonStand Supports Braintree's Transparent Redirect
We recently completed integration of Braintree's Transparent Redirect service. That means using LemonStand you can achieve PCI compliance quite easily. While there are more steps involved than simply using this service, it will help tremendously. And it may not cost you anything either.
While it does not completely avoid the requirement to be PCI compliant (like a hosted payment page would) it will greatly reduce scope while allowing you to control the user experience (unlike a hosted payment page).
Start Processing Credit Cards with Braintree
If you would like to process credit cards using Braintree and their amazing Transparent Redirect service, please contact them for pricing. If you plan on using LemonStand, please mention this in your initial message.
The Power of Reports in LemonStand
0 Comment(s) | published by Bobkov A. on Wednesday, March 10, 2010
Everybody seems to love the visual reports in LemonStand. But do you realize the real power of the reporting features in LemonStand? I want to reveal some tricks that you may not know about.
Filters
You can find filters above some lists in LemonStand - for example, above the product and order lists. Although the filtering feature is not a visual report, it is a reporting function, because it helps you narrow down data lists and find specific information. Using filters you can limit the product list by manufacturer or product category. The nice thing is that you can apply multiple filters simultaneously. For example, you can ask LemonStand to display all products from a specific category, produced by specific manufacturers.
Or if you deal with the order list, you can configure filters to display all new orders made by registered users, which contain items of goods or downloadable product type.
Visual reports
Visual reports represent your sales information as charts. The Reports menu contains reports provided by all LemonStand modules. At the moment only the Shop module supplies reports. But in the future other modules may introduce additional reports.
Some reports can display data in different modes - as a line chart, pie chart and bar chart. The line chart is handy when you want to track the dynamics of something, for example how the order totals progresses over time. The line chart mode is available for all reports, while the pie and bar charts are available only for some of them. This is due to the nature of the types of data being displayed. It wouldn't make sense to preview order totals as a pie chart. But it is handy to see a pie chart when you analyze sales distribution among different manufacturers.
You can select a report using the sidebar menu of the Reports page. Right now there are 7 different reports in LemonStand:
- Orders - displays sales data independently on ordered items.
- Products - display sales distribution of individual products. You can display subtotals, assigned to specific products or number of items sold.
- Categories - displays performance of product categories based on total products ordered or order subtotals within the categories.
- Groups - displays sales distribution of custom product groups. You can create groups of non-related products (we call such groups custom product groups in LemonStand) in order to analyze sales information assigned with these groups. Product groups can be used for things such as "Featured Products" on your homepage or anywhere else.
- Product Types - displays sales distribution between different product types. You can compare order totals between downloadable and physical products for example.
- Manufacturers - this report displays sales information between the entered manufacturers.
- Coupon Usage - displays sales distribution among coupons. Orders and Coupon Usage reports are order-centric reports. They can display revenue and order totals information, while other reports are product-centric and can display only subtotals assigned to specific products in orders.
In reports, filters work in the same way as they work in lists. You can narrow down displayed information and limit a number of displayed records. For example, if you have many products, when you open the Products report, you could see something like this:

You can fix the report by selecting specific products in the product filter. Click the product link in the Report Filters area and select products which you want to see on the chart. Alternatively you can limit the data by a specific product group or with any other filter.
A fiew more tips
- You can change the chart height by dragging the grey bar which is below the chart area. It is especially helpful when you work with pie charts.
- It is possible to export orders and customers corresponding to a current report configuration to CSV files.
- The drop-down menus on the left above the chart area allow you to select which information you want to preview (for example - tax value, or number of items sold), and whether you want to see all orders or only paid orders (i.e. orders which have a Paid status in the status history).
Try them out for yourself
You can try these reports out using simulation data in the live demo of LemonStand. Let us know what you think!
Product and Customer CSV Import
0 Comment(s) | published by Bobkov A. on Wednesday, March 03, 2010
We recently published the Product and Customer CSV Import features. These features allow you to import product and customer records from CSV files, previously created in another application. We have successfully tested the product import with a Magento CSV file, exported from a live Magento store. The product import feature even allows you to import product images, if you have a corresponding column in the CSV file, and a ZIP archive containing the images.
Besides the most obvious usage of importing data from other applications, the Product Import feature can make populating your product catalog a breeze - rapidly create multiple products in Excel (or compatible), save as a CSV file and import into LemonStand all within a few minutes.
The CSV Import feature is somewhat complicated, and the main issue is matching columns in the CSV file to columns in LemonStand tables. On the other hand, the feature should be simple to use, in order to make migration from other eCommerce applications to LemonStand as simple as possible. We developed a user interface which allows you to match columns by dragging them. We also used custom scroll bars, because the defaults are too heavy for the lightweight user interface. The CSV Import user interface is implemented as a behavior (a feature of the LemonStand programming framework) and can be used for other cases where we need to import data from a CSV file.
In order to simplify CSV Import tasks, we added the Load and Save Column Configuration features, which allow you to save matched columns into a file and then re-use it, or share with other LemonStand users. We prepared two configuration files for importing products and customers from Magento (use right click/Save File As menu to download files):
If you haven't already, you can update your LemonStand beta installation and these features will become available automatically. Happy importing!
Tell us what CMS features that you want
13 Comment(s) | published by Halarewich D. on Thursday, February 04, 2010
LemonStand is not only a shopping cart, but a CMS as well. We realized that it's very rare for an eCommerce site to not have content management needs beyond the product catalog. There are often static pages, homepages with a mix of dynamic and static content and sometimes a blog.
We already have a blog module in development, and we plan to release it shortly after version 1.0 is becomes available. So now you know that is coming.
That being said, we have foundsome people asking us if LemonStand could be integrated with third-party CMSs. We would like to find out from the community why some of you would like to use other CMSs - because of habit/comfort or because LemonStand is missing some key CMS features. Granted, there might be some cases where complicated content management features are required that are beyond the scope of all or most already existing CMSs and a custom solution is needed. But we want to get your opinion on what how you think we can improve the CMS feature set within LemonStand.
Tell us what you think. Comment on this blog post, or get involved on the forum discussion. This is your chance to direct the future of LemonStand!
USPS shipping module now available
2 Comment(s) | published by Bobkov A. on Monday, February 01, 2010
Since the Open Beta started we have been recieving valuable feedback from the community. We have been able to fix and update many minor problems in the application and installer since the start of testing. We also added some features as a result of discussions with our testers. Among the added features are:
- Added the product search feature
- Integrated a better syntax highlighter - CodeMirror
- Added the product image ordering feature
- Added the top category products feature
- Added the custom payment method, which allows to create custom payment pages, for example for the bank transfer payments
- Major optimization work done - the pages open faster and with less memory usage
A couple of days ago we created a shipping moduile to support USPS integration.

We faced only one issue with the USPS integration. It uses its own country name list, instead of relying on the ISO country codes. We learned that people have issues using the USPS service in other shopping carts because of this. USPS expects specific country names, for example Great Britain should always be Great Britain, but not United Kingdom. As we usually do, we solved the problem on the system level. In our implementation you can name countries in your database as you like, even in your national language. LemonStand will find a correct USPS country name by the country ISO code and will send a correct name to the USPS gateway.
The demo store has been updated
0 Comment(s) | published by Bobkov A. on Sunday, January 03, 2010
We are glad to announce that we just updated our demo store. While doing the private alpha test we integrated many new features that were on our to-do list. And most recently we updated the demo store, including these features.
The new features are:
- Discounts. We added a permanent catalog-level discount and a demo coupon.
- Product sorting in categories. You can now sort products by name or by price.
- One-click checkout implementation (as an alternative to the conventional checkout process).
- A whole lot of updates in the Administration Area including loadable sets of product options, grouped products sorting, product duplication and product batch operations, top category products, improved pages management and many more.
Feel free to explore the updated demo store and see the new feature for youself inside the Administration Area!

LemonStand is good for code wranglers too
2 Comment(s) | published by Bobkov A. on Wednesday, December 23, 2009
While we like to talk about LemonStand's limitless design capabilities, it also provides great support and flexibility for developers. As websites in LemonStand can be developed from the scratch, we are trying to provide the best possible development experience.
The code is already written!
By allowing you to develop websites from the scratch we do not leave you with just a raw API. We have already written code which works behind most of the common pages found on an eCommerce site, e.g. the category page, or the shopping cart page. We incapsulated this common code into so called actions. When you create a new page, you can select which action it should be based on. For example, if you develop a category page, you select the shop:category action for the page. And voila - you have an almost working Category page. The action will load a requested category object into the $category variable, and all that you need now is to display the category name and products.
Great API documentation!
Each action, class and function is documented in a special section of our Wiki (soon we will share the Wiki publicly). Further to that, the actions have inline documentation, which displays general information about the actions and variables which it generates. Every time you select an action in the Action drop-down list on the Create/Edit Page form, the action documentation is automatically updated. The inline documentation has links to the Wiki pages, so you can always get more information about the action or API classes it's refering to.

Syntax highlighting
There is nothing to add to the header. Syntax highlighting is available absolutely everywhere you need to edit code: in the page editors, template and partial editors. Line numbers are also shown in all editors. Every code editor can be open in full-screen mode, simplifying code editing.

Simple AJAX
With LemonStand every form can be posted to the server and processed either in a normal POST or AJAX mode. The standard actions, included in the eCommerse solution have numerous AJAX handlers which you can use for performing standard operations like adding a product to the shopping cart. Of course, you can develop your own AJAX interactions, if you need. The LemonStand AJAX implementation is very simple. You only need to specify which handler on the server to call (it can be a LemonStand-provided handler, or your custom handler), and which elements on the page you want to be updated.
Easy troubleshooting
Errors in pages and templates during the learning and development process are bound to happen to even the best developer. LemonStand makes it very simple to troubleshoot due to the built-in detailed error information page. This page appears each time something goes wrong with your code or with the LemonStand configuration. The error page not only displays for you the error message, but also highlights the line of code where the error originated and displays the call stack. In some cases it even provides hints about how you can fix the error. Of course, you can disable the detailed error page when you are ready to launch the website and monitor the system health using the error log.

There you have it folks. LemonStand is built for developers too.
LemonStand Discount Engine
4 Comment(s) | published by Bobkov A. on Thursday, December 03, 2009
Yesterday we finished developing the discount engine. The discount engine is the last large-scale feature which we planned to implement before the 1.0 release and now we are entering the final straight. We still have a number of minor features to add, and much testing to conduct before the release date, but the real excitement is very close now.
What is the Discount Engine?
The discount engine allows you to put discounts on your products without altering the original product prices. Usually you would to do this when promoting products or running marketing campaigns, such as Christmas Sales.
The discount engine allows you to manage product prices on the catalog level and on the shopping cart level. Also, LemonStand allows you to create tier prices, and as consequence have different product prices for different customer groups.
Managing product tier prices
With the tier price feature you can specify a product price based on quantities and for different customer groups. Even if you don't want to provide price tiers for a product, you can use this feature for creating different prices for different customer groups, by specifying 1 in the tier Quantity field. Thus, depending on the group of a customer which views the product, LemonStand will display different product price in the catalog.

According to the tier prices configuration displayed in the image above, the price for guest customers is 26 USD. For wholesale customers the price is 16 USD until the customer adds 5 or more units of the product to the shopping cart. Then the price will be 10 USD. For all other customer groups LemonStand will use the base product price: 25 USD in this case.
Catalog level price rules
Catalog level price rules allow you to manage product discounts independently on the customer shopping cart content. You can create rules like this: “Discount products which name contains hat by 10%”. You can create complicated conditions for applying the rules, using a handy visual tool. Conditions can be simple, like in the previous example, or compound: “product name contains hat and product category is not either Art or Photography”.

You can enable the catalog price rules only for specific customer groups, or limit the rule action by a specific period of time, allowing you to create seasonal discounts for example.
You can apply multiple price rules at the same time. Price rules are applied in the order which you specify in the price rules list. You can reorder rules by dragging them up and down in the list.

Shopping cart level price rules
Shopping cart level price rules allow you to apply discounts to specific products, or on a whole shopping cart, depending on the shopping cart contents and other conditions. Examples of these conditions could be the selection of a payment or shipping method, a presence of specific items in the shopping cart, subtotal amount and other conditions.
You can assign a coupon code to a shopping cart price rule. In this case the rule will be activated only if the customer provides the corresponding coupon code. Also, you can specify how many times a coupon code can be used, and how many times the rule can be used for a single customer.

Similarly to the catalog price rules, you can specify which customer groups the shopping cart price rules are active for, and limit its action with a time interval.
Extendibility
As with all other things in LemonStand, the discount engine is extendible. It is possible to add new condition types, and actions. It could be very helpful if you have a complicated business model and it is simpler to express a discount condition with two lines of PHP code than by building a complex compound condition in the user interface.
New Products and Orders RSS feeds
1 Comment(s) | published by Bobkov A. on Friday, October 30, 2009
We just added two RSS channels to LemonStand – one for the order list and another for the new product list.
Recent Orders RSS channel
The Orders RSS feed is available for LemonStand users that have permission to work with the order list in the LemonStand Administration Area. You can subscribe to the feed by clicking the RSS link above the order list. The feed is protected, so authentication is needed in order to view the feed content. Your feed reader application will ask you to enter your user name and password. You would use the same credentials as you use for logging into the Administration Area.
The feed contains a list of recent orders. Each entry in the feed contains an order description, order number, creation date and time, customer description and a list of order items. You can click the link inside the feed entry to open the Order Preview page in a browser.
New products RSS channel
Using this feature you offer a New Products feed on your store website for customers. The implementation is very simple, just create a new page and call the Shop_Product:get_rss() method. The feed contains a list of recently added products. For each product its title, description, product image (if available) and a link to the product details page are presented.
An Overview of Pages, Templates and Partials in LemonStand
4 Comment(s) | published by Halarewich D. on Wednesday, October 14, 2009
Our main objective in developing LemonStand was to create an eCommerce solution that was flexible. An issue that I specifically resonate with is design integration. Many applications in this category claim they have a "100% customizable design using templates", while anyone with experience knows this might be technically true for certain things, it sure doesn't mean it's going to be easy to do. And some times it's a flat out lie, or misrepresentation of the truth.
Sure, a human being can have a 4-foot vertical jump, but is it easy or simple? Well, implementing a unique design for your eCommerce site should be easy.
Overview

LemonStand's templating engine can be broken into 3 main things: Partials, Templates and Pages. I'll give you a brief overview of how all of these things come together to form the dynamic pages of a LemonStand powered website.
Partials
Partials are sort of like PHP includes on steroids. They are normally used for cases when you want to include the same chunk of code into multiple pages. Reusing code is efficient. For example, you can place all of your footer content into a partial, then include this on every template.
You can also include partials within partials for futher organization. Partials may include LemonStand PHP Calls as well, for displaying dynamic content. They can be included within other partials, templates and pages. They get along with everyone.

Templates
Templates are the main structure of a pages displayed by LemonStand. They include partials, HTML and PHP calls to hold it all together. Templates are generally used to define the global structure of a certain type of page in LemonStand. This might be your home page, product detail page, or maybe a blog post page. Within your template, you define where your page content goes. It's really simple to do so. Simply use this PHP call to define this:
<? $this->render_page() ?>
The "page content" is not neccessarily just content. It can be HTML, PHP or JavaScript code as well. But what you should remember is that wherever you define the render_page call in the template is where the code of the page will be pulled into the template.

Pages

Pages complete the package. They piece together partials, templates and your content to form the pages that your visitors see in their web browsers.
When you create a page, optionally select a template then just enter the page title, URL (SEO friendly) and enter in the content. The content wil be placed wherever the render_page call is defined in it. The page content can contain HTML, PHP or JavaScript. You can edit the HTML of the page content using the handy syntax highlighting code editor, or you may also define content blocks that use a WYSIWYG editor.
You'll notice other things like the Meta tab and so on. These are all important, but outside the scope of this blog post.

Content Blocks

Content blocks allow you to edit content in a simpler fashion and are useful for non-technical people.You can define any number of content blocks on a single page. Set up the HTML like the screenshot above, and continue editing it as so - but you can also edit certain areas of the page using content blocks (WYSIWYG). To define a content block, just use a line of code like this:
<? content_block('block_name', "Block Name") ?>
The "block_name" reference is just that... a way to distinguish that particular content block. You can set up any number of content blocks, just make sure to give them each a unique name.
Currency Conversion API
1 Comment(s) | published by Bobkov A. on Tuesday, October 13, 2009
Currency converting is a common task in eCommerce applications, but despite this fact, it is often ignored even by developers of popular shopping carts.
During the development of the UPS shipping module, we found that the UPS Online Tools service always returns shipping rates in a currency of originating country. It means that if your shop is in Canada, but you ship products from a warehouse USA, UPS will return quotes in USD instead of CAD.
We decided to solve the currency converting issue once and forever and developed a graceful and universal currency conversion API. Today many currency conversion services are available on the Web. The base element of the currency conversion API is a converter, which can connect to a specific conversion service. The default converter which will be available out of the box with LemonStand uses the currency rate XML feed provided by European Central Bank. This XML feed contains rates of about 30 currencies.
You can select a currency converter you want to use on the Settings/Currency Converter page. If a selected converter has any configuration parameters, the corresponding controls will be displayed on the Configuration tab. LemonStand takes care of caching the currency rates, minimizing the number of external service calls and thus making the whole system faster. You can choose the cache update interval in the currency conversion parameters form.

More converters to work with other free or paid currency conversion web services can be developed by us or other developers in the future.
UPS shipping module
3 Comment(s) | published by Bobkov A. on Monday, October 12, 2009
We just finished integrating the first external shipping service – UPS. Programming shipping methods in LemonStand is very similar to developing payment modules. It is a simple and straightforward process. Below is a screenshot of the UPS shipping module configuration form. As UPS has different services for different countries, the list of allowed shipping methods depends on the originating country selected on the System/Shipping Options page.

The optional free shipping feature allows you to create a free UPS shipping option for orders with total amount more than some value, which you specify in the module configuration form.

This module will allow your customers to select the UPS shipping option during checkout that they want to use. Quoted prices are based on their previously entered Postal Code.

Supported payment gateways
7 Comment(s) | published by Bobkov A. on Wednesday, October 07, 2009
Every week we add new payment modules to LemonStand. Today we have 9 payment gateways integrated and about 13 payment methods implemented. The integration process has proven to be a great experience. Developing payment modules is a simple task in LemonStand, so it will not be an issue to integrate any other payment gateway in the future.

Here is a list of payment gateways we have integrated at the moment.
“More than 248,000 merchants trust Authorize.Net to manage their transactions, help prevent fraud, and grow their business.”
We have implemented both Advanced Integration Method and Simple Integration Method.
E-xact is 1 payment gateway that VersaPay uses in Canada. VersaPay offeres merchant accounts and payment gateways, and provide competitive rates.
“E-xact is a leading provider of fast, secure, and accountable online transaction solutions. Since 1998, we’ve been at the forefront of the emerging world of online exchange with solid and secure transaction processing systems and superb customer service.”
There are two E-xact payment methods implemented in LemonStand: the Hosted Checkout and Web Service.
“Moneris processes more than 2.5 billion credit and debit card transactions a year, for over 350,000 merchant locations across North America. We have over 1,100 dedicated employees who understand transaction processing and know how to make it work for you.”
We integrated Moneris' eSelect Plus payment method from their merchant services.
“eWAY provides a leading payment gateway solution for processing payments in real time. eWAY’s high level of standards in technology, innovations and customer care has helped us become Australia’s award winning payment gateway.”
“At First Data, we make buying and selling easier. We're the global technology leader in information commerce. We help businesses, such as merchants and financial institutions, safely and efficiently process customer transactions and understand the information related to those transactions. That ensures that consumers can feel comfortable in knowing that their payments are convenient and secure.”
We have implemented the API payment method for North America.
“Headquartered in London, HSBC is one of the largest banking and financial services organisations in the world. HSBC's international network comprises around 8,500 offices in 86 countries and territories in Europe, the Asia-Pacific region, the Americas, the Middle East and Africa.”
“PayPal is the faster, safer way to pay and get paid online. The service allows members to send money without sharing financial information, with the flexibility to pay using their account balances, bank accounts, credit cards or personal financing. With more than 75 million active accounts in 190 markets and 19 currencies around the world, PayPal enables global ecommerce.”
We have implemented PayPal Pro and PayPal Standard payment methods.
“PSiGate Merchant Services provides Merchant accounts, credit card processing and eCommerce transaction services for businesses across North America, in Canada and the US. PSiGate's trusted online services include credit card processing, Interac Online, Virtual Terminal/eTerminal, PCI Data Security, fraud screening and financial account reporting.”
"SecureTrading – the UK’s leading independent payment processor."
We have implemented two payment methods provided by SecureTrading: Xpay and Payment Pages.
More to come
If you don't see your chosen payment gateway in this list, don't worry. Feel free to send us a message or leave a comment here and let us know which payment gateway you prefer. We already have a list of payment gateways which we are making progress on every week, but we don't mind adding yours to it.
Managing payments in LemonStand
1 Comment(s) | published by Bobkov A. on Monday, October 05, 2009
This is a short overview of LemonStand's payment management features. We will include support for many payment gateways out of the box and support for other gateways can be developed and added in the future. We have developed a universal payment framework which allows you to work with different payment gateways in a similar way from the end users point of view.
Front-end payment forms
The core concept of LemonStand is its flexibility. This is true for any page, including the payment forms. Each payment module installed into the application, creates a simple partial (a code snippet) which can be modified to fit into the website design. The default payment form partial contains simple, semantic HTML code. There are no special programming features, so you can completely rework the default payment form, leaving only input element names unchanged.

Back-end payment forms
In LemonStand it is possible to pay any unpaid order from the administration area. If an order is unpaid, there is a Pay button in the Order Preview page, which leads to the Pay page. Due to the unique form management framework integrated into LemonStand, all back-end forms look consistent, even if payment modules are provided by third-party companies.

Payment history
LemonStand logs payment attempts of each order. On the Order Preview page there is the Payment Attempts tab, which displays a list of payment attempts along with the payment gateway message and color-coded status. The payment modules framework provides all the tools needed for logging payment attempts for payment module developers.

If you click on a log record, LemonStand will show you a popup with detailed information about the selected payment attempt. Specifically, it will show you the payment attempt status, payment gateway response fields, a list of fields sent to the payment gateways by LemonStand, and raw response text from the payment gateway.

Of course, payment module developers should take care about stripping sensitive payment information from the request and response data before saving it to the log. All payment related information is encrypted by LemonStand automatically before saving into the database.

Protecting pages with LemonStand
0 Comment(s) | published by Bobkov A. on Monday, September 21, 2009
Protecting pages is a very simple task in LemonStand. For any page you can ask LemonStand to force HTTPS protocol for the page, or to allow only registered and logged in customers to access the page.
Forcing HTTPS protocol
Some pages of an online store must be accessible only through the HTTPS protocol. Examples of such pages are payment pages, customer account pages and checkout pages. LemonStand can force visitor's browser to switch to HTTPS protocol for any page. Of course, an SSL certificate must be installed on the server though. By default all pages could be accessed through both HTTP and HTTPS protocol. To force HTTPS protocol, just select HTTPS only item in the Allowed Protocol drop-down menu in the Page Editor.

Managing page access mode
In LemonStand you can configure a page access mode in such a way that only registered and logged in customers can access the page. This feature enables you to create protected pages, or secure zones, accessible only by customers. You may want to restrict guest access for pages like
- a list of customer orders
- order details page
- change password page
In the same way LemonStand allows you to restrict access to specific pages for logged in customers. You may want to use this feature for such pages as customer login page, password restore page and others.
To configure a page access mode, select a suitable item in the Access list in the Page Editor. If you choose Customers only or Guests only access mode, you also need to select a page to redirect visitor's browser to, in case if the visitor has no rights to access the page.

In the page list, LemonStand marks pages, accessible only for customers, with the lock icon:

The HTTPS enforcement and page access mode features allows you to create a well secured website with minimum effort.
Products Anatomy - Part 1
4 Comment(s) | published by Bobkov A. on Wednesday, September 16, 2009
In this post I'm going to explain some of the product properties in LemonStand. We tried to cover all possible needs related to selling products using LemonStand. Some product properties, like product name and description, are intuitive and easy to understand. But there are 4 things which you might wonder about in the beginning:
- Options
- Extras
- Attributes
- Grouped products
Here is a Product page from the front-end demo site, demonstrating all four types of a product properties:

Product options
Product options are product characteristics which do not affect product's price or other product parameters. For example - colors of shoes or left handed and right handed golf clubs. You can manage product options on the Options tab. For each option you should specify the option name and a list of possible option values.

Customers can select product options before adding a product to the shopping cart and you will see selected options in the order details.
Extra options
Extra options enable you to create paid add-ons, for example, gift wrapping, or extra memory for a computer. You can manage product extras on the Extras tab of the product form.

For each extra you should specify its description and price.

Customers can select extra options using check boxes on the product page, before adding the product to the cart. In the product details you will see which extra options were selected.
Product attributes
Product attributes are just bits of text information about the product. Customers cannot select attributes on the product page - they can only read them.

Attributes are used to describe specific product characteristics. If your product is a inkjet printer, you can specify the model-specific details like print speed and resolution. You can mange product attributes on the Attributes tab of the product form.

Attributes allow you to keep product information well organized. You can save a set of product attributes as a template and reuse the template for other products. This saves a lot of time if you have 100 inkjet printers in the database. You won't need to create every single attribute for each printer. Instead, you just load a saved attribute set and enter attribute values, corresponding to that specific printer.
Grouped products
With the Grouped Products feature you can create a general product with choices for different prices and any other characteristics. Each grouped product is a separate product with its own SKU, but presented on the store web-site as a single product. For example, if you sell image prints, and each print is presented in two sizes with different price, you can use the grouped products feature. The print will be presented as a single product, and customers will be able to select specific size from a drop-down menu.
You can manage grouped products on the Grouped tab of the product form. Creating grouped products is fairly simple in LemonStand. You just click the Add grouped product link, and LemonStand creates a copy of the original product and displays it in a popup window. You only need to enter a grouped product's SKU, price and parameters which differ from the original product. You can change name, description or any other parameter of a grouped product.

On the front-end of the store, your customers select a specific grouped product from a drop-down list. LemonStand updates the product page each time when the customer selects another item in the drop-down menu. Thus, for each grouped product, the customer can see its price and other details.
The example images of the front-end product page are taken from our Demo Store. It is needless to say that with LemonStand you can create product pages that look completely different from the demo.
Order routes explained
5 Comment(s) | published by Bobkov A. on Friday, September 11, 2009
Order routes are a unique feature of LemonStand. It allows LemonStand administrators to implement existing business processes of a company, or develop a new order processing approach.
What is an order route
Order routes are formed using order statuses, transitions between them and user roles. You can define any number of statuses, suitable for your store. After defining statues you define possible transitions between the statuses. For each transition you can choose whether LemonStand should send an email notification to a customer or to a LemonStand user, responsible for sending the order to a next status.
Each order status has a color code, which enables you to quickly recognize an order status in the order list.
The user roles feature enables you to split duties among the company staff. Each user in LemonStand belongs to some role, which you define on the System page. For each transition in the order route you can select a user role, responsible for the transition.
Example of an order route
We will illustrate the order route concept using an example of a small computer store. The company has an accounting and a delivery department. Customers pay for orders with credit cards. Before delivering an order, an accountant manually checks the transaction in the payment gateway interface, to avoid payment frauds. If the transaction is valid, the accountant marks the order as Paid and it can be delivered to the customer.
The order route for this case can have 4 statuses: New, Pending, Paid, Delivered. The statuses and transitions are displayed in the diagram below.

The order processing consists of five steps:
- A customer creates an order, and it gets to the New status.
- The customer pays the order using a credit card and LemonStand sends the order to the Pending status. This is accomplished by configuring the payment module correspondingly.
- The accountant receives the email notification from LemonStand when the order gets into the Pending status. The email notification is configured in the New to Pending transition in the order route.
- The accountant validates the payment transaction and sends the order to the Paid status.
- The courier gets an email notification from LemonStand, and carries the order to the customer. After that he sends the order to the Delivered status.
Order routes can be adapted for any company of any size. You can define dozens of statuses, transitions and user roles, and configure email notifications, making the order processing smooth and simple.
Integrating a payment gateway is fast and easy with LemonStand
4 Comment(s) | published by Halarewich D. on Tuesday, September 08, 2009
As we draw closer to releasing our free, public beta, we have been working on implementing several payment gateways in addition to PayPal. At first we didn't plan to include these in the beta, but it's been a great experience so far and we're finding it hard to stop!
We have already integrated support for PsiGate, and it went very smoothly. We wanted to tell you a little bit more about the process of integrating a payment gateway into LemonStand.

LemonStand turns 4 tasks into 1
LemonStand makes it possible to develop a new payment module in just a few hours, instead of days. Usually, each payment module must be able to solve these 4 tasks:
- Display the configuration form, for setting up the payment gateway user name and password, and other gateway-specific parameters.
- Display the payment form on the front-end store
- Display the payment form in the administration area, enabling LemonStand administrators to process an order manually, if they have the customer card number.
- Process information entered into the payment form, and send request to the payment gateway. Then process the gateway response and mark the order with “payment processed” status.
Three of these task are automated by LemonStand. When you develop a new payment module, you don't need to do everything from scratch. For example, you don't need to build the module configuration and the administration payment forms by hand. Forms in LemonStand are built automatically using information about the form fields. So, to build the configuration or payment form, you only need to specify which fields you want to add to the form, what labels they should have, and what type of input control should be used (a plain text field, drop-down menu, checkbox and so on). You specify this information using simple PHP code in your module class. You don't even have tot worry about saving the configuration options to the database – LemonStand will save everything for you.
Thus, when you build a new payment module, you don't need to waste time on things which are common for every payment module – building forms, saving or loading configuration data. Instead of that, you can concentrate on the module-specific logic like sending specific data to the payment gateway and parsing the response. LemonStand solves all common tasks for you, leaving you a minimal amount of work to do.
What we're working on now
In preparation for our beta release we are knocking out modules to support as many payment gateways as possible. We have been working with merchant solution providers on setting up sandbox accounts so that we can develop and test as many as possible. At the moment we have received test accounts from FirstData/LinkPoint, Authorize.net, SagePay, 2Checkout and PaymentExpress. We are working on getting test acocunts with VersaPay, Moneris, HSBC, SecureTrading and Elavon. We are not promising to support all of these gatewaya at the time of beta release, but we're doing our best to work with providers that are cooperating with us.
And as we said before, we'll continue to add support for more and more gateways into the future, after the beta and even version 1.0 of LemonStand is released.













