Fulfillment by Amazon and ZenCart

Why use Zen Cart

We have been hosting Zen Cart sites for years and have found that the ability to customize Zen Cart with the many readily available open source add-ons and modules to be of great benefit to our customers.

 

Tying Zen Cart and Amazon together

When one of our customers decided to outsource his product fulfillment to Amazon the free module, “Checkout by Amazon Zen Cart Plug-in”, caught his eye.

 

Amazon in the marketplace

Amazon is really a friendly 500 pound gorilla when it comes to e-commerce. Not only do they hope that other merchants will sell products on-line, they make it easy to take payments and get your product delivered too. In reality these are two separate features which work differently.

 

Checkout by Amazon

Checkout by Amazon allows you to process your payments via Amazon’s credit card processing system. It expects the merchant to fulfill the orders.

 

Fulfillment by Amazon

Fulfillment by Amazon adds a fulfillment service to Checkout by Amazon. This allows merchants to accept payments via Amazon’s credit card processing system and also leverage the delivery and warehousing power of Amazon. This allows you to maintain control of content, SEO and marketing of your products using your own website, and have Amazon do all the grunt work.

 

It’s all in the name

At first glance it appeared that the “Checkout by Amazon Zen Cart Plug-in” would handle this for him, but during actual implementation we found otherwise. After trying several things to get this Zen Cart add on to work we realized that “Checkout by Amazon Zen Cart Plug-in” does not support Fulfillment by Amazon. This was documented in a small one line comment in one of the module files using the acronym “FBA”. In other words this module was doing exactly what it’s name implied, “Checkout by Amazon”.

 

A minor tweak

After researching how this module talks to Amazon and what Amazon expects we came up with an easy solution that requires minimal modification to the add-on and your products. Here are our notes as to what we changes need to be made to the following plugin for Zen Cart.

Base Module: FULLFILLMENT by AMAZON – CHECKOUT BY AMAZON PLUGIN v1.0 FOR ZEN CART 1.3.9e
These changes to Checkout by Amazon will allow you to use Fulfillment by Amazon instead of just Checkout by Amazon.

In order to use Fulfillment by Amazon instead of Checkout you will need to make the following changes after you install the add-on to Zen Cart.

  1. We ignored the option to call the module via a cron job as all orders fulfilled by Amazon end up at Amazon in their order system.
  2. In your Zen Cart Products each model number must match the Amazon Fulfillment Part number. This is set or assigned at the time you add the part to Amazon’s Fulfillment System.
  3. Make the following changes to the installed add-on.

In file: checkout_by_amazon/checkout_by_amazon_constants.php, after Line 39 add 1 line:
Before:
// types of fulfillment
define("MERCHANT_FULFILLMENT", "MERCHANT");

After:
// types of fulfillment
define("MERCHANT_FULFILLMENT", "MERCHANT");
define("AMAZON_FULFILLMENT", "AMAZON_NA");

In file: checkout_by_amazon/button_generator.php, make the following changes:
Near line 93:
Before:
$xmlBuilder->Element('SKU', substr($item[id], 0, MAX_SKU_LEN));

After:
// $xmlBuilder->Element('SKU', substr($item[id], 0, MAX_SKU_LEN));
$xmlBuilder->Element('SKU', substr($item[model], 0, MAX_SKU_LEN));

Near Line: 127
Before:
// FulfillmentNetwork settings - Hardcoded for merchant fulfillment as we do not support FBA at present
$xmlBuilder->Element('FulfillmentNetwork', MERCHANT_FULFILLMENT);

After:
// FulfillmentNetwork settings - Hardcoded for either merchant fulfillment or Fulfillment by Amazon (FBA)
// $xmlBuilder->Element('FulfillmentNetwork', MERCHANT_FULFILLMENT);
$xmlBuilder->Element('FulfillmentNetwork', AMAZON_FULFILLMENT);

 

Limitations

1. At this time ALL products sold and processed via Fulfillment by Amazon must be fulfilled by Amazon.
2. The Model number MUST match Amazons Fulfillment number.

 

Future possibilities

It may be possible to have both Fulfilled by Amazon and Merchant Fulfilled items in one order. This has not been investigated and is left as an exercise to those who follow.

 

Disclaimer

Unless otherwise stated, the software, scripts, code snippets or code modifications on this site are provided “as-is,” without any express or implied warranty of merchantability or fitness for any particular purpose. In no event shall Plateau Ltd. dba Active-Server.com, be held liable for any damages arising from the use of the software, scripts, code snippets or code modifications.