Conéctese a MWS – API de Amazon Seller Central

Un usuario Pregunto ✅

yossifisch

Hola,

Me preguntaba si es posible conectarse a Power BI a la API de Amazon (MWS) para los vendedores. En caso afirmativo, ¿por dónde empezaría en Power BI?

La documentación de la API se encuentra en: https://developer.amazonservices.com/

ZappySys

ZappySys tiene un conector Amazon MWS que le permite realizar consultas utilizando lenguaje SQL e importar datos MWS a Power BI / otras aplicaciones (excel, SSRS, SQL Server). Espero que esto ayude.

https://zappysys.com/blog/import-amazon-mws-data-power-bi/

Credenciales de conexión ODBC para la API de Amazon MWS (clave de acceso, clave secreta, extremo de URL)

Credenciales de conexión ODBC para la API de Amazon MWS (clave de acceso, clave secreta, extremo de URL)

Ejemplo de paginación de la API de Amazon MWS: vista previa del resultado de la consulta SQL

Ejemplo de paginación de la API de Amazon MWS: vista previa del resultado de la consulta SQL

Cargar datos de Amazon MWS en Power BI: crear un panel de ventas de Amazon

Cargar datos de Amazon MWS en Power BI: crear un panel de ventas de Amazon

yossifisch

Publiqué la siguiente idea: https: //ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/33137476-get-data-from-amazon-mar …

Si cree que tiene sentido, ¡vote!

CindySandjo

Tengo el mismo problema. He pasado días tratando de averiguar cómo transferir mis datos a PowerBI o incluso a SSMS. Pero hay poca o ninguna información.
Soy un desarrollador de BI y he trabajado con PowerBI, Tableau, Cognos, SSMS, SSIS y SSRS.
Tal vez podamos completar nuestra propia investigación y trabajar juntos en esto.
Encontré un código que encripta a SHA256 usando Python como se requiere para la firma. Pero incluso después de obtener la firma, no puedo ingresar los datos. Recibo un error.
Estos son mis pasos exactos. Mírelos y vea si puede detectar un error de mi parte. Intenté analizarlo y completar los pasos como se describe en MWS y Python, pero tal vez lo he estado mirando durante demasiado tiempo.

1. Quería comprobar si es posible conectarme a MWS
Descargué PostMan y creé una solicitud.

2. Entré en MWS Scratchpad, completé toda la información para obtener la devolución de una OrderList.
El bloc de notas proporcionado
-La respuesta
-Publicación HTTP
-Cuerda para firmar
OBTENER
webservices.amazon.com/onca/xml/Orders/2013-09-01
AWSAccessKeyId = XXXXXXXXXXXXXXXXXXXXX & Action = ListOrders & CreatedAfter = 2017-08-01T05% 3A00% 3A00Z & MarketplaceId.Id.1 = ATVPDKIKX0DER & MarketplaceId.Id.2 = A2EUQ1WTGCTBG2 & SellerId = XXXXXXXXXXXVStamp_Versión = 2/3/2013 Firma% 12% y 3% de la firma del usuario = 3-12;

3. Luego tomé la cadena para firmar y usando Python3.6, creé un hash con el siguiente código
>>> importar hashlib, hmac, base64
>>> m = bytes (‘OBTENER
webservices.amazon.com/onca/xml/Orders/2013-09-01? 2 & Timestamp = 2017-12-03T15% 3A19% 3A40Z & Version = 2013-09-01 ‘,’ utf-8 ‘)
>>> s = bytes (‘CLAVE SECRETA’, ‘utf-8’)
>>> hash = hmac.new (s, m, hashlib.sha256)
>>> base64.b64encode (hash.digest ())

En terminos mas simples
>>> importar hashlib, hmac, base64
>>> m = bytes (‘Cadena para firmar’, ‘utf-8’)
>>> s = bytes (‘CLAVE SECRETA’, ‘utf-8’)
>>> hash = hmac.new (s, m, hashlib.sha256)
>>> base64.b64encode (hash.digest ())

*** Tal vez sea la forma en que formateé la cadena para firmar. Lo formateé de esta manera porque la forma en que MWS tenía la cadena para firmar con los espacios y en las nuevas líneas no codificaba correctamente en Python. Volvió con errores en los espacios para las nuevas líneas. Así que eliminé los espacios y agregué un? entre la fecha de la versión y AWSAccessKeyID ***

Hay un margen de tiempo de 15 minutos entre su marca de tiempo y el momento en que envía la solicitud. así que me aseguré de cumplir con el plazo que figuraba en mi firma.

4. Tomé el hash obtenido en Python, y lo agregué al código como la firma como «& Signature = hash» y edité la primera parte del enlace para que se ajustara a las recomendaciones de los documentos en línea de WMS.

Consulta final
HTTPS: //mws.amazonservices.com/Orders/2013-09-01? AWSAccessKeyId = XXXXXXXXXXXXXXXXXX & Action = ListOrders …

Entré tanto en PostMan como en PowerBI y no funciona.

Siento que esto está muy cerca, pero es posible que me falte un paso o que tenga algún error de sintaxis.

Si tiene algún conocimiento sobre alguna parte o este proceso, por favor ayude.

Aquí hay algunos recursos que utilicé para completar este

Escritorio PowerBI

Cartero

https://www.getpostman.com/

Bloc de notas MWS
https://mws.amazonservices.com/scratchpad/index.html

Secciones diferentes de documentos para desarrolladores de MWS
Crear una cadena de consulta http://docs.developer.amazonservices.com/en_US/dev_guide/DG_QueryString.html
Firma de una solicitud de consulta –http://docs.developer.amazonservices.com/en_US/dev_guide/DG_SigningQueryRequest.html
Proceso de firma de la versión 2 http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html
Parámetros obligatorios para la solicitud ListOrders http://docs.developer.amazonservices.com/en_US/orders-2013-09-01/Orders_ListOrders.html

Pitón
Hashlib – https://docs.python.org/3/library/hashlib.html
Base64 – https://docs.python.org/3/library/base64.html#module-base64
Todas las demás cosas de Python que leo en los foros

Hawdong

En respuesta a CindySandjo

Funciona absolutamente con Postman. He aquí cómo en aproximadamente 2 pasos:

1) En Postman, defina Body como tal:

Postman Body.png

Para evitar que escriba, aquí está el código. Asegúrese de reemplazar las claves / secretos con los suyos.

AWSAccessKeyId:YOURACCESSKEY
Action:GetReportRequestCount
Merchant:YOURMERCHANTKEY
MWSAuthToken:amzn.mws.e6afcd81-0714-a5fa-223e-656b6e2e4a1e
SignatureVersion:2
Timestamp:{{timestamp}}
Version:2009-01-01
Signature:{{signature}}
SignatureMethod:HmacSHA256

2) Defina el script de solicitud previa de la siguiente manera:Postman Script.png

Para evitar que escriba, aquí está el código. Asegúrese de reemplazar las claves / secretos con los suyos.

var CryptoJS = require('crypto-js');

var timestamp = new Date().toISOString();
pm.environment.set("timestamp", timestamp);

var post = "POSTnmws.amazonservices.comn/nAWSAccessKeyId=YOURACCESSKEY&Action=GetReportRequestCount&MWSAuthToken=amzn.mws.e6afcd81-0714-a5fa-223e-656b6e2e4a1e&Merchant=YOURMERCHANTID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=" + encodeURIComponent(timestamp) + "&Version=2009-01-01";

var hash = CryptoJS.HmacSHA256(post, "YOUR SECRET KEY");
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
pm.environment.set("signature", hashInBase64);

La respuesta de MWS:Postman response.png

michaelsh

En respuesta a Hawdong

@CindySandjo @hawdong

¿Has logrado conectarte?

En Power Query no puedo encontrar una función hash SHA1 / SHA256 para generar oauth_signature

powerbipowerbi

Hola,

¿Encontraste alguna solución para este problema? ¿La API funciona para ti?

powerbipowerbi

Hola,

¿Encontraste alguna solución para este problema? ¿La API funciona para ti?

yossifisch

En respuesta a powerbipowerbi

Esperaba obtener una explicación más profana. No soy un programador profesional.

El artículo proporcionado por @ v-yuezhe-msft no parece abordar el cifrado SHA que requiere MWS.

Me sorprende que haya tan poca información sobre este tema, creo que la mía es la única publicación en este foro.

@yossifisch,

¿Puede comenzar a conectarse a Amazon MWS usando «Obtener datos-> Web»? en Power BI Desktop, ingrese los parámetros de encabezado siguiendo la guía de este artículo en la siguiente captura de pantalla, y es posible que también deba pasar algunos parámetros en su URL como se describe en este blog similar.

1.PNG

También hay un blog similar sobre cómo conectarse a la API en Power BI Desktop para su referencia:

http://angryanalyticsblog.azurewebsites.net/index.php/2016/05/16/api-strategies-with-power-bi/

Saludos,
Lydia

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *