Requisitos

🚧

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

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;
}