PHP
Requisitos
- PHP 7+ (https://www.php.net/manual)
- Composer (https://getcomposer.org)
- SDK (https://github.com/jlevers/selling-partner-api)
Atenção
Este caso de uso em PHP utiliza uma biblioteca não oficial da Amazon para os desenvolvedores.
1. Introdução
Aqui iremos configurar o ambiente PHP que será utilizado.
- Crie uma pasta chamada "sp-api-php"
- Entre em sua pasta pelo "Terminal"
- Em seu terminal, digite
composer init
- Digite
composer require jlevers/selling-partner-api
2. Crie seu arquivo index.php
index.php
Vamos criar seu arquivo de configuração com as credenciais da Amazon para conectar na SP-API e fazer chamadas.
require_once(__DIR__ . '/vendor/autoload.php');
$config = new SellingPartnerApi\Configuration([
"lwaClientId" => "amzn1.application-oa2-client.7a...",
"lwaClientSecret" => "53088f253559d77294ed1...",
"lwaRefreshToken" => "Atzr|IwEBIG86XyQIu5fy...",
"awsAccessKeyId" => "AKIAU...",
"awsSecretAccessKey" => "ElWOB...",
"endpoint" => SellingPartnerApi\Endpoint::NA, // or another endpoint from lib/Endpoints.php
"roleArn" => "arn:aws:iam::452196458992:role/sp-api"
]);
$api = new \SellingPartnerApi\Api\SellersApi($config);
try {
$result = $api->getMarketplaceParticipations();
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling OrdersApi->getOrderBuyerInfo: ', $e->getMessage(), PHP_EOL;
}
3. Abra seu terminal.
Inicie seu servidor HTTP - para isso use o seguinte comando no seu terminal:
php -S localhost:8000
4. Agora vá para seu browser.
Acesse o endereço que criamos.
http://localhost:8000
5. O resultado
Você deve ter o seguinte retorno.
Este é o retorno do endpoint MarketPlaceParticipation, que indica se você esta conectado.
[
{
"marketplace": {
"id": "A2Q3Y263D00KWC",
"name": "Amazon.com.br",
"countryCode": "BR",
"defaultCurrencyCode": "BRL",
"defaultLanguageCode": "pt_BR",
"domainName": "www.amazon.com.br"
},
"participation": {
"isParticipating": true,
"hasSuspendedListings": false
}
}
]
Criar Destino (createDestination).
Cria um arquivo createDestination.php
Mais detalhes sobre notificações
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$corpo = [
'name' => 'virginia-queue',
'resource_specification' => [
'sqs' => [
'arn' => 'arn:aws:sqs:us-east-1:{ID}:{SEU QUEUE NAME}'
]
],
];
$body = new \SellingPartnerApi\Model\Notifications\CreateDestinationRequest($corpo);
try {
$result = $apiInstance->createDestination($body);
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->createDestination: ', $e->getMessage(), PHP_EOL;
}
6. Abra seu terminal.
Inicie seu servidor HTTP - para isso use o seguinte comando no seu terminal:
php -S localhost:8000
7. Agora vá para seu browser.
Acesse o endereço que criamos.
http://localhost:8000
8. O resultado
Você deve ter o seguinte retorno.
{
"name": "{SEU QUEUE NAME}",
"destinationId": "33a99993-0aa2-42a5-acf6-91adbb58a54f",
"resource": {
"sqs": {
"arn": "arn:aws:sqs:us-east-1:{ID}:{SEU QUEUE NAME}"
}
}
}
Criar Assinatura (createSubscription).
Cria um arquivo novo arquivo PHP.
Atenção
Use o 'destination_id' que obtivemos no passo anterior.
Para todos os tipos de Notificações acesse AQUI .
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$corpo = [
'payload_version' => '1.0',
'destination_id' => '33a99993-0aa2-42a5-acf6-91adbb58a54f'
];
$notification_type = 'ANY_OFFER_CHANGED';
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$body = new \SellingPartnerApi\Model\Notifications\CreateSubscriptionRequest($corpo);
try {
$result = $apiInstance->createSubscription($notification_type, $body);
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->createSubscription: ', $e->getMessage(), PHP_EOL;
}
Você deve ter o seguinte retorno.
{
"subscriptionId": "de00009c-c1dd-43da-9323-1fa65bc6db29",
"payloadVersion": "1.0",
"destinationId": "c000000f-7d19-489c-ba24-0c99e30a35f7"
}
Apagar uma Assintaura (deleteSubscription).
Cria um arquivo novo arquivo PHP.
Atenção
Use o 'subscription_id' que obtivemos no passo anterior.
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$subscription_id = 'de00009c-c1dd-43da-9323-1fa65bc6db29';
$notification_type = 'ANY_OFFER_CHANGED';
try {
$result = $apiInstance->deleteSubscriptionById($subscription_id, $notification_type);
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->deleteSubscriptionById: ', $e->getMessage(), PHP_EOL;
}
Você deve ter o seguinte retorno.
{}
Apagar um Destino (deleteDestination).
Cria um arquivo novo arquivo PHP.
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$destination_id = 'c000000f-7d19-489c-ba24-0c99e30a35f7';
try {
$result = $apiInstance->deleteDestination($destination_id);
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->deleteDestination: ', $e->getMessage(), PHP_EOL;
}
Você deve ter o seguinte retorno.
{}
Obter Destino (getDestination).
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$destination_id = '0d0bc816-ae74-4668-a049-21af810dd2d2';
try {
$result = $apiInstance->getDestination($destination_id);
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->getDestination: ', $e->getMessage(), PHP_EOL;
}
Obter Destinos (getDestinations).
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
try {
$result = $apiInstance->getDestinations();
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->getDestinations: ', $e->getMessage(), PHP_EOL;
}
Obter Inscrições (getSubscriptions).
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$notification_type = 'ANY_OFFER_CHANGED';
try {
$result = $apiInstance->getSubscription($notification_type);
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->getSubscription: ', $e->getMessage(), PHP_EOL;
}
Obter Inscrição por ID (getSubscriptionById).
$apiInstance = new SellingPartnerApi\Api\NotificationsApi($config);
$subscription_id = '0d0bc816-ae74-4668-a049-21af810dd2d2';
$notification_type = 'ANY_OFFER_CHANGED';
try {
$result = $apiInstance->getSubscriptionById($subscription_id, $notification_type);
echo json_encode($result->getPayload());
} catch (Exception $e) {
echo 'Exception when calling NotificationsApi->getSubscriptionById: ', $e->getMessage(), PHP_EOL;
}
Updated over 2 years ago