Попытка настроить Amazon MWS в Coldfusion. Супер простой запрос не авторизуется - PullRequest
1 голос
/ 16 апреля 2020

Я просто пытаюсь что-то настроить и запустить в Amazon MWS с Coldfusion. Вот код, который я использую ... очень просто. Когда я заменяю часть строки запроса точной строкой запроса на веб-странице блокнота Amazon MWS, я получаю ТОЧНУЮ сигнатуру ... так что я знаю, что мой код подписи работает. Но, несмотря на это, единственный ответ, который я когда-либо получал от amazon, это «подпись запроса, которую мы вычислили, не соответствует подписи, которую вы предоставили» Так что я просто думаю, что это как-то так, как я посылаю, а не как настоящая подпись. Я перепробовал кучу разных вещей и потратил так много времени, но я никогда не получал никакого другого ответа, даже несмотря на то, что я могу получить подпись, точно совпадающую с подписью примера на блокноте.

Вот мой код очевидно, с соответствующими личными данными в качестве переменных, которые я заполнил в своем фактическом коде: (обратите внимание, мне нужно добавить 5 часов времени моего сервера, чтобы amazon удовлетворился временем запроса, поэтому вам, возможно, придется его изменить)

<CFSET nowtime = DateAdd(‘h’, 5, Now())>
<CFSET awsaccesskey = “”>
<CFSET sellerid = “”>
<CFSET secretkey = “”>
<CFSET mwsaccess = “”>

<CFSET queryString = “AWSAccessKeyId=#awsaccesskey#&Action=ListAllFulfillmentOrders&MWSAuthToken=#mwsaccess#&QueryStartDateTime=2020-04-12T04%3A00%3A00Z&SellerId=#sellerid#&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=#dateFormat(nowtime, ‘yyyy-mm-dd’)#T#encodeForURL(timeFormat(nowtime, ‘HH:mm:ss’))#Z&Version=2010-10-01”>
<CFSET signaturestring = “POST#chr(10)#mws.amazonservices.com#chr(10)#/FulfillmentOutboundShipment/2010-10-01#chr(10)##listSort(queryString, ‘text’, ‘asc’, ‘&’)#”>
<CFSET signature = encodeForURL(toBase64(binaryDecode(hmac(signaturestring, “#secretkey#”, “HmacSHA256”, “UTF-8”), “hex”)))>
<CFHTTP method=“POST” url=“https://mws.amazonservices.com/FulfillmentOutboundShipment/2010-10-01/?#queryString#&Signature=#signature#” >
  <cfhttpparam type=“Header” name=“Content-Type” value=“application/x-www-form-urlencoded; charset=utf-8”/>
  <cfhttpparam type=“Header” name=“x-amazon-user-agent” value=“Whatever/test (Language=Coldfusion)”/>
</CFHTTP>
<CFDUMP var="#CFHTTP.FileContent#" />

Это очень простая просьба ... но я просто не могу ничего с этим поделать. Любая помощь будет оценена.

1 Ответ

1 голос
/ 17 апреля 2020

вздыхает . Парень на форумах Amazon понял это для меня. Его ручка - Автономная. Во всяком случае, у меня есть / в строке сообщения CFHTTP. вот этот:

<CFHTTP method=“POST” url=“https://mws.amazonservices.com/FulfillmentOutboundShipment/2010-10-01/?#queryString#&Signature=#signature#” >

где написано 2010-10-01 /? ... что / там. Удалите это, и все это работает.

...