SP-API is the next-generation API functionality suite for sellers and their agents to sell their products on the Amazon marketplace efficiently. Amazon Marketplace Web Services (Amazon MWS) APIs preceded SP-APIs and have been utilized extensively for over ten years. Amazon states in their documentation that the SP-API is the future and that SP APIs will receive any new updates and enhancements. However, one can expect a transition period from MWS to SP-API while the new system is stabilized and offers parity with the existing MWS APIs.
For more information visit: https://github.com/amzn/selling-partner-api-docs
composer require andrewyj/amazon-sp-api
$auth = [
'refresh_token' => '', // Aztr|...
'client_id' => '', // App ID from Seller Central, amzn1.sellerapps.app.cfbfac4a-......
'client_secret' => '', // The corresponding Client Secret
'region' => \AmazonSellingPartnerAPI\Client::REGION_NORTH_AMERICA,
'access_key' => '', // Access Key of AWS IAM User, for example AKIAABCDJKEHFJDS
'secret_key' => '', // Secret Key of AWS IAM User
'role_arn' => '', // AWS IAM Role ARN for example: arn:aws:iam::123456789:role/Your-Role-Name
];
$oAuth = new \AmazonSellingPartnerAPI\OAuth($auth['client_id'], $auth['client_secret']);
$auth['access_token'] = $oAuth->getAccessToken($auth['refresh_token'])->access_token;
$sign = new \AmazonSellingPartnerAPI\Signature\V4Signature();
$assumedRole = new \AmazonSellingPartnerAPI\AssumeRole($auth['region'], $auth['access_key'], $auth['secret_key'], $sign);
$credentials = $assumedRole->assume($auth['role_arn']);
$auth['access_key'] = $credentials['AccessKeyId'];
$auth['secret_key'] = $credentials['SecretAccessKey'];
$auth['session_token'] = $credentials['SessionToken'];
$client = new \AmazonSellingPartnerAPI\Client($sign);
$client->setAuth($auth);
var_dump($client->get('/orders/v0/orders/XXX-XXXXXX-XXXXXXX'));
$sign = new \AmazonSellingPartnerAPI\Signature\V4Signature();
$cache = new Cache();
$order = new \AmazonSellingPartnerAPI\Module\Order($auth, $cache, $sign);
Cache()
are used to cache role credentials and access_token.It must haveget()
andset()
functions. if you don't have one. create an adapter.
# route param
var_dump($order->getOrder('XXX-XXXXXX-XXXXXXX')->send());
# query param
var_dump($order->getOrders()->withQuery([
"CreatedAfter" => "2020-04-13T06:28:08Z",
"MarketplaceIds" => [
"XXXXXX",
]
])->send());