我正在尝试计算签名以进行亚马逊商城API调用,但我不断收到以下错误:
我们计算的请求签名与您提供的签名不匹配.检查您的AWS Secret Access Key和签名方法.有关详细信息,请参阅服务文档
我已将签名创建过程包装到一个类中:
<?php
namespace App\Marketplace\Amazon;
class Signature
{
protected $signedString;
public function __construct($url, array $parameters, $secretAccessKey)
{
$stringToSign = $this->calculateStringToSign($url, $parameters);
$this->signedString = $this->sign($stringToSign, $secretAccessKey);
}
protected function calculateStringToSign($url, array $parameters)
{
$url = parse_url($url);
$string = "POST\n";
$string .= $url['host'] . "\n";
$string .= $url['path'] . "\n";
$string .= $this->getParametersAsString($parameters);
return $string;
}
protected function sign($data, $secretAccessKey)
{
return base64_encode(hash_hmac('sha256', $data, $secretAccessKey, true));
}
protected function getParametersAsString(array $parameters)
{
uksort($parameters, 'strcmp');
$queryParameters = [];
foreach …Run Code Online (Sandbox Code Playgroud) 我正在使用Web应用程序工作,该应用程序将使用Amazon MWS api管理库存,订单,发货。
卖家可以在应用程序注册并可以连接到亚马逊MWS API,我能够与提供给做的Marketplace_Id,Seller_Id,Access_Key_ID,Secret_Access_Key密钥,但我不想做这样进入所有的按键公众。
我正在使用现成的laravel软件包来访问所有MWS API。访问卖家账户它需要Marketplace_Id,Seller_Id,Access_Key_ID,Secret_Access_Key。
我已经检查了一些平台,例如AMZPing,库存实验室。他们提供了一种类似于连接到亚马逊MWS的方式,使用该链接,卖方可以连接到亚马逊MWS。
这里是连接亚马逊MWS的链接。
AMZPing:
https://sellercentral.amazon.com/gp/mws/registration/register.html?
id=5ccea641-5bec-1234-1234-c123490628df&
returnPathAndParameters=/Account/HandleReturnURLForMWS?userId=12124&email=test%40gmail.com&
SignatureVersion=2&
SignatureMethod=HmacSHA256&
AWSAccessKeyId=ABSEDGDUSKXHEYWTDGSANDBDBD&
Signature=h1MXM5FiioxWY6ATwCgPtdbI1ADSWDETDDN6B/SWQAFR=
Run Code Online (Sandbox Code Playgroud)
库存实验室:
https://sellercentral.amazon.com/gp/mws/registration/register.html?
SignatureMethod=HmacSHA256&
SignatureVersion=2&
AWSAccessKeyId=AKIAJWMONWSHDEUJ2OVA&
id=9583ded2-ad36-1234-1234-122096397fd6&
returnPathAndParameters=/webhook?id=1984®ion=NA&env=production&
Signature=txLrXJ%2BUvYlmeq8gFu4atByFTBq89UKb2MorK1uaeyg=
Run Code Online (Sandbox Code Playgroud)
我如何像上面的链接那样连接?有人可以解决吗?