Adding Amazon as another sales channel to Shopify Store
One of my customer has Shopify store and wanted to increase sales by adding all of the 20 000 product to sale on Amazon also. For this was made Shopify private app that imported all the Shopify store products over API and sent these to sale on Amazon. All the Amazon orders were duplicated on Shopify and once the Shopify order was fulfilled then Amazon order was also set Shipped.
Amazon has weird API that is over 10 years old. You send XML feeds to Amazon that will be processed some time in the future and you need to be polling to see the Feed result. You can send around 2 feeds per minute but the feeds can be huge size. Documentation is hard to understand and in many cases unofficial forums and sources were neede to make all the API-s work.
All the products need to have Amazon ASIN number or EAN by which Amazon identifies the product and allows others to make price comparisons. With such a number of products many of them might not be approved and Amazon can ask you additional documents.
Shopify API-s gave some surprises. Since customers are buying from Amazon then they do not care about Shopify notifications. However “send_receipts” API parameter did not have any effect. To make the order confirmation e-mails not to be sent is needed another hidden parameter “suppress_notifications”.
Also the Shipping address can be left empty if it not formed correctly without any error messages.
Technically the project was implemented on Laravel 5.6 framework running in Hetzner cloud Ubuntu 16.04 machine. Asynchronous jobs were used heavily. To manage them better Laravel Horizon dashboard and Redis were added database as queue driver. Laravel Horizon is especially useful while developing. It shows all the failed jobs with details and exact error. Once the issue is fixed then it is possible to retry the job easily.