Eigener Amazon MWS Call

Hallo Team,
ich muß einen bestimmten Call basteln, den ihr nicht in eurem Portfolio habt:
POST mws.amazonservices.com/Products/2011-10-01
Über diesen Call kann man Daten zu mitgelieferten EANs, ISBNs usw. zurückerhalten.
Ich scheitere leider offenbar an der Signatur, die man dafür errechnen muß. Um dahinterzusteigen, habe ich versucht, einen „eurer“ Calls auszuführen und über das DebugLog herauszufinden, wie genau ihr die an Amazon übermittele Signatur errechnet habt. Leider stimmen aber meine Berechnungen nicht mit eurem Ergebnis überein. Hier die Daten:

POST /Orders/2013-09-01
Host: mws-eu.amazonservices.com
„AWSAccessKeyId=XXX&Action=ListOrders&CreatedAfter=2022-06-12T13%3A47%3A00.000%2B02%3A00&FulfillmentChannel.Channel.1=MFN&MWSAuthToken=amzn.mws.XXX&MarketplaceId.Id.1=A1PA6795UKMFR9&OrderStatus.Status.1=Canceled&SellerId=XXX&Signature=YYY&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2022-06-13T11%3A49%3A37.331Z&Version=2013-09-01“
Laut meiner Recherche müßte das „YYY“ (die Signatur) so errechnet werden:
Man hat in der ersten Spalte (ich nenne sie „Raw“) das hier:
Raw
===
POST
mws-eu.amazonservices.com
/
Orders
/
2013-09-01
AWSAccessKeyId=XXX&Action=ListOrders&CreatedAfter=2022-06-12T13%3A47%3A00.000%2B02%3A00&FulfillmentChannel.Channel.1=MFN&MWSAuthToken=amzn.mws.XXX&MarketplaceId.Id.1=A1PA6795UKMFR9&OrderStatus.Status.1=Canceled&SellerId=XXX&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2022-06-13T11%3A49%3A37.331Z&Version=2013-09-01

Dann zweite Spalte „Sign“:
Sign

${urlEncode(hmacSHA256(result[‚Raw‘]!, „ZZZ“, „base64“)!)}
Mit „ZZZ“ = Secret Key unseres Amazon-Accounts

Dann muß man „Sign“ in „Raw“ einfügen, als dritte Spalte „Header“:
Header

AWSAccessKeyId=XXX&Action=ListOrders&CreatedAfter=2022-06-12T13%3A47%3A00.000%2B02%3A00&FulfillmentChannel.Channel.1=MFN&MWSAuthToken=amzn.mws.XXX&MarketplaceId.Id.1=A1PA6795UKMFR9&OrderStatus.Status.1=Canceled&SellerId=XXX&Signature=${result[‚Header‘]}&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2022-06-13T11%3A49%3A37.331Z&Version=2013-09-01

Aber hier muß ich schon abbrechen, weil das nicht klappt: Eure übermittelte Signatur stimmt nicht mit der überein, die ich hier berechnet habe. Wo liegt mein Denkfehler?

Gruß Micha
podcomm e-comemrce management

Hallo Micha,

wir verwenden das von Amazon bereitgestellte SDK und im Detail kenne ich mich leider auch nicht mit der Berechnung der Signatur aus.

Ich denke deine Signature sollte sich aber von unserer unterscheiden, da bei dem Schritt ${urlEncode(hmacSHA256(result[‚Raw‘]!, „ZZZ“, „base64“)!)}
der Secret Key verwendet wird. Dein Secret Key unterscheidet sich von unserem Secret Key, sodass die hmacSHA256 Funktion auf ein anderes Ergebnis liefert.

Viele Grüße
Torsten

Hallo Torsten,

das hatte ich befürchtet, weil in der Amazon-Verbindung, die in SY angelegt ist, kein Secret Key hinterlegt werden kann - da dachte ich mir schon, daß die ganze Sache mit eurem Key abgewickelt wird. Kann man denn im Amazon MWS eine neue App definieren, deren Credentials man dann im Call in SY nutzt? Oder funktioniert das nicht, weil z.B. der von euch übertragene User Agant dann wieder nicht stimmt?

Andere Frage - seht ihr eine Chance, diesen Produktdatenabruf, den ich brauche, zu euren Steps hinzuzufügen?

Gruß Micha

Hallo Micha,

Unseren Secret Key können wir nicht zur Verfügung stellen. Soweit ich weiß musst du dich als Entwickler registrieren und bekommst dann einen eigenen Secret Key: Registering to use Amazon MWS

Für die MWS API werden wir nichts mehr neu entwickeln, für die SP API habe ich deinen Wunsch mit auf die Liste gepackt (Amazon SP-API: Authentifizierung - #2 von synesty-Torsten).

VG Torsten

Hallo Torsten,
ist ja klar, daß ihr mir euren SC nicht gebt, das hatte ich auch gar nicht angefragt :slight_smile: Ich wollte wissen, ob ihr ein Problem darin seht, wenn ich über einen APICall mit UNSEREN Entwickler-Credentials einen Call absetzen - denn da wird ja auch ein User Agent und andere Daten mit übermittelt, die ja logischerweise alle zu euch gehören.

Hallo Micha,

das mit dem Secret Key hatte ich falsch verstanden. Aus meiner (technischen) Sicht spricht nichts dagegen, wenn ihr Calls mit euren eigenen Entwickler-Credentials macht. Der User Agent Parameter ist vermutlich unkritisch. Das ist eine „Best Practice“ Angabe und wird im Normalfall vermutlich nicht von Amazon ausgewertet.
Ich würde das Thema nächste Woche nochmal mit einem Kollegen (der gerade im Urlaub ist) besprechen. Der kennt sich mit den Amazon (API) Richtlinien wesentlich besser aus als ich.

Viele Grüße
Torsten

Hallo Micha,

ich habe das Thema nochmal mit einem Kollegen besprochen. Aus unserer Sicht spricht (aktuell) nichts dagegen, wenn du mit eigenen Entwickler-Credentials MWS Calls ausführst. Wir können dir allerdings nicht garantieren, dass es Amazon auch so sieht :slight_smile: Im Zweifel solltest du dein Vorhaben vorab mit Amazon abklären.
Unserer Erfahrung nach legt Amazon sehr viel Wert auf die Einhaltung der Richtlinien(Richtlinie zur zulässigen Nutzung und Datenschutzrichtlinie).

VG Torsten