AuthFailure AWS не удалось аутентифицировать запрос: отсутствуют учетные данные для доступа
Я пытаюсь отправить шаг оплаты в запросе гибких платежей Amazon...
Я получаю следующую ошибку
AuthFailure AWS не удалось аутентифицировать запрос: отсутствуют учетные данные для доступа
Тем не менее, я считаю, что я следую инструкциям к письму:
В документации приведен следующий пример:
https://fps.sandbox.amazonaws.com?
Action=Pay
&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE
&CallerDescription=MyWish
&CallerReference=CallerReference02
&SenderTokenId=553ILMLCG6Z8J431H7BX3UMN3FFQU8VSNTSRNCTAASDJNX66LNZLKSZU3PI7TXIH
&Signature=0AgvXMwJmLxwdMaiE7lMHZxc6384h%2FjBkiTserQFpBQ%3D
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2009-10-06T05%3A49%3A52.843Z
&TransactionAmount.CurrencyCode=USD
&TransactionAmount.Value=1
&Version=2008-09-17
Вот что я генерирую:
https://fps.sandbox.amazonaws.com?
AWSAccessKeyId=AKIAI3...EXAMPLE
&Action=Pay
&CallerDescription=MyWebsite.com
&CallerReference=0.557658069068566
&SenderTokenId=25R743FUFUSUVPMZZ5Z83SWP1YPNX8YDPFR8XCDEMLH4L1PPMEZ65VLT8LE6UXPR
&SignatureMethod=HmacSHA256
&SignatureVersion=2&Timestamp=2013-07-06T13%3A56%3A03-07%3A00
&TransactionAmount.currencyCode=USD
&TransactionAmount.value=3
&Version=2008-09-17
&signature=9k%2B4Txi2ZzUj62QBK3TwV6x0KWfkNY9YWpqty8%2B3XKk%3D
Я знаю, что мои учетные данные AWS хороши, потому что я должен использовать их на предыдущем шаге получения SenderTokenID. Я просто пытаюсь завершить сделку.
Есть идеи? Это было полностью сбито с толку и до сих пор трагически тратило человеческую жизнь.
1 ответ
Итак, решение
1) Хотя обратное задокументировано для предыдущего шага (получение идентификатора токена), для этого конкретного запроса FPS заботится о случае параметров - все они должны быть верблюжьими.
2) Я пропустил "/" по умолчанию, чтобы покрыть случай пустого пути в моей функции подписи сообщений (конечная точка здесь не имеет ничего после имени хоста)
Вот HTTP GET, который работал (обфусцирование учетных данных AWS)
https://fps.sandbox.amazonaws.com/?AWSAccessKeyId=AKIAIEXAMPLE
&Action=Pay
&CallerDescription=MyWebsite
&CallerReference=0.7753969375044107
&SenderTokenId=25R7R3NUFBS6VPRZV5Z53AWP2YLNXAYEPFJ8BCDGMXH4V1FPMZZ95VATZLEFUCPG
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2013-07-06T14%3A38%3A41-07%3A00
&TransactionAmount.CurrencyCode=USD
&TransactionAmount.Value=3
&Version=2008-09-17
&Signature=Ijf0hqQuSi5zU%2BF1PUK1LBYvsK9AVHacrqK1hJVzffk%3D
А вот сообщение, которое было подписано с помощью Hmac SHA256 (секретный ключ AWS в качестве пароля):
GET
fps.sandbox.amazonaws.com
/
AWSAccessKeyId=AKIAIEXAMPLE&Action=Pay&CallerDescription=MyWebsite&CallerReference=0.7753969375044107&SenderTokenId=25R7R3NUFBS6VPRZV5Z53AWP2YLNXAYEPFJ8BCDGMXH4V1FPMZZ95VATZLEFUCPG&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-07-06T14%3A38%3A41-07%3A00&TransactionAmount.CurrencyCode=USD&TransactionAmount.Value=3&Version=2008-09-17