solidusio-contrib/solidus_feeds

Implement a feed generator for Amazon

Closed this issue · 3 comments

elia commented
Implement a feed generator for Amazon

Here I've just gathered a bunch of info and resources about Amazon product feed.

Currently Amazon provides two different integration for Product feeds:

Marketplace Web Service (MWS) API

Consider Amazon is migrating from MWS to SP-API. As mentioned in Selling on Amazon Guide

the legacy Amazon MWS APIs will be deprecated in the future. We do not yet have an established date, but will let you know and provide both time and tools to support migration of existing Amazon MWS integrations.

Product feeds should be sent on Amazon using XML file format as specified in the Amazon Marketplace Web Service (Amazon MWS) Documentation. A more detailed guide on how to generate XML is the "Selling on Amazon ~ Guide to XML". It seems Amazon MWS does not provide a full functional sandbox environment in order to tests a product feeds API, but maybe the Amazon MWS Scratchpad could be useful for our purpose.

Addendum: after a little investigation seems the only way to test MWS api is to craete a real seller account.

In Ruby ecosystem there are some gems providing the integration with MWS but the most significant in my opinion is Peddler which is very popular and well maintained. As its README says:

Amazon is migrating to the newly-launched Selling Partner API (SP-API). There is no date yet for when MWS APIs will be deprecated. I will add support in Peddler in due course.

Selling Partner API

The Selling Partner API is a REST-based API that builds on the functionality of Amazon Marketplace Web Service (Amazon MWS), but provides features to improve usability and security for developers and the seller partners they work with. With the Selling Partner API.

This is the Developer API Guide which contains step-by-step informations needed to start a development of an integration for an Amazon seller, while here's the guide for Amazon vendors.
Informations about the API can be found on Selling Partner API Models which contains Swagger models for developers to use to create software to call Selling Partner APIs. The API is really new and AFAIK seems no Ruby clients are present, anyway «developers can use swagger codegen to generate client libraries from these models». SP-API also provides a sandbox environment to test your application (as for MWS, a real seller account is needed!)
One of main features of SP-API is the possibility to create hybrid applications that make calls both to the Selling Partner API and to Amazon MWS. As far as I understood it could be possible to start the development of Amazon MWS and then migrate to SP-API.

Use a hybrid application when your solution requires functionality from both services. When a seller authorizes your hybrid Selling Partner API application, they are (1) authorizing your Amazon MWS developer ID to make calls to Amazon MWS on their behalf, and (2) authorizing the application to make calls to the Selling Partner API on their behalf. If a selling partner has authorized you to make calls to Amazon Marketplace Web Service on their behalf, you can use the Authorization API to migrate that authorization to a hybrid Selling Partner API application. This eliminates the need to request authorization from the selling partner again. For more information, see the Authorization API User Guide.

Taking into account these considerations:

  1. Amazon provides an hybrid application supporting both MWS and SP-API.
  2. MWS deprecation has not yet a date, and probably Amazon will provide a reasonable amount of time to let the transition from the old to the new API.
  3. Peddler gem aims to provide support for the new SP-API in the future.

A good approach could be starting the product feeds generator/publisher using MWS api (via the Peddler gem), then decide when and how switch to the new SP-API.

We then decided to not implement this feature on a first round, because of the effort required and higher priority of others. For this reason I close this issue, taking care of removing any reference of Amazon feed from the README.