📘

Repositório de exemplos de Orders com RDT

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.

$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
    }
  }
]

Crie seu arquivo getOrder.php

Ele é usado para listar as orders.

$apiInstance = new SellingPartnerApi\Api\OrdersApi($config);

$order_id = '701-3595199-9255162';

try {
  $result = $apiInstance->getOrder($order_id);
  print_r(json_encode($result->getPayload()));
} catch (Exception $e) {
  echo 'Exception when calling OrdersApi->getOrder: ', $e->getMessage(), PHP_EOL;
}

Você deve ter um resultado assim.

{
  "AmazonOrderId": "701-3595075-9260262",
  "PurchaseDate": "2021-06-23T14:33:40Z",
  "LastUpdateDate": "2021-06-24T12:47:19Z",
  "OrderStatus": "Canceled",
  "FulfillmentChannel": "MFN",
  "SalesChannel": "Amazon.com.br",
  "ShipServiceLevel": "Std Dom 9",
  "OrderTotal": {
    "CurrencyCode": "BRL",
    "Amount": "1.10"
  },
  "NumberOfItemsShipped": 0,
  "NumberOfItemsUnshipped": 0,
  "PaymentMethodDetails": [
    "Other"
  ],
  "MarketplaceId": "A2Q3Y263D00KWC",
  "ShipmentServiceLevelCategory": "Standard",
  "OrderType": "StandardOrder",
  "EarliestShipDate": "2021-06-24T03:00:00Z",
  "LatestShipDate": "2021-06-26T02:59:59Z",
  "IsBusinessOrder": false,
  "IsPrime": false,
  "IsPremiumOrder": false,
  "IsGlobalExpressEnabled": false,
  "IsReplacementOrder": false,
  "IsSoldByAB": false,
  "IsISPU": false
}

Crie seu arquivo getOrders.php

Ele é usado para listar as orders.

$apiInstance = new SellingPartnerApi\Api\OrdersApi($config);

$marketplace_ids = array('A2Q3Y263D00KWC'); // Brasil
$created_after = '2020-01-01';

// As opções abaixo não são obrigatórias:
$created_before = null;
$last_updated_after = null;
$last_updated_before = null;
$order_statuses = null;
$fulfillment_channels = null;
$payment_methods = null;
$buyer_email = null;
$seller_order_id = null;
$max_results_per_page = null;
$easy_ship_shipment_statuses = null;
$next_token = null;
$amazon_order_ids = null;

try {
  $result = $apiInstance->getOrders(
    $marketplace_ids,
    $created_after,
    $created_before,
    $last_updated_after,
    $last_updated_before,
    $order_statuses,
    $fulfillment_channels,
    $payment_methods,
    $buyer_email,
    $seller_order_id,
    $max_results_per_page,
    $easy_ship_shipment_statuses,
    $next_token,
    $amazon_order_ids
  );

  echo '<pre>';
  print_r(json_encode($result->getPayload());
          echo '</pre>';
          } catch (Exception $e) {
            echo 'Exception when calling OrdersApi->getOrders: ', $e->getMessage(), PHP_EOL;
          }

Crie seu arquivo getOrderAddress.php

Ele é usado para listar as orders.

$apiInstance = new SellingPartnerApi\Api\OrdersApi($config);
$order_id = '702-6568359-1455403'; // string | 3-7-7 format.

try {
  $result = $apiInstance->getOrderAddress($order_id);
  echo json_encode($result->getPayload());
} catch (Exception $e) {
  echo 'Exception when calling OrdersApi->getOrderAddress: ', $e->getMessage(), PHP_EOL;
}

Você deve ter a seguinte resposta

{
  "AmazonOrderId": "702-6568359-1455403",
  "ShippingAddress": {
    "Name": "",
    "City": "Santo André",
    "StateOrRegion": "SP",
    "PostalCode": "09220030",
    "CountryCode": "BR"
  }
}

Crie seu arquivo getOrderBuyerInfo.php

Ele é usado para listar as orders.

$apiInstance = new SellingPartnerApi\Api\OrdersApi($config);
$order_id = '712-6568398-1455403'; // string | 3-7-7 format.

try {
  $result = $apiInstance->getOrderBuyerInfo($order_id);
  echo '<pre>';
  echo json_encode($result->getPayload());
  echo '</pre>';
} catch (Exception $e) {
  echo 'Exception when calling OrdersApi->getOrderBuyerInfo: ', $e->getMessage(), PHP_EOL;
}

Você deve ter a seguinte resposta

{
  "AmazonOrderId": "712-6568398-1455403",
  "BuyerEmail": "[email protected]",
  "BuyerCounty": "...",
  "BuyerTaxInfo": {
    "TaxClassifications": [
      {
        "Name": "CPF",
        "Value": "00000000000"
      }
    ]
  }
}

Crie seu arquivo getOrderItems.php

Ele é usado para listar as orders.

$apiInstance = new SellingPartnerApi\Api\OrdersApi($config);
$order_id = '702-6568359-1455403'; // string | 3-7-7 format.
$next_token = null;

try {
  $result = $apiInstance->getOrderItems($order_id, $next_token);
  echo '<pre>';
  echo json_encode($result->getPayload());
  echo '</pre>';
} catch (Exception $e) {
  echo 'Exception when calling OrdersApi->getOrderItems: ', $e->getMessage(), PHP_EOL;
}

Você deve ter o seguinte retorno.

{
  "OrderItems": [
    {
      "ASIN": "B07JM9487B",
      "SellerSKU": "BANANA_PUFF_AMZ_COOL",
      "OrderItemId": "28091074915490",
      "Title": "Puff Infantil Banana Grande Unissex em Corino",
      "QuantityOrdered": 1,
      "QuantityShipped": 1,
      "ProductInfo": {
        "NumberOfItems": 1
      },
      "ItemPrice": {
        "CurrencyCode": "BRL",
        "Amount": "0.99"
      },
      "ItemTax": {
        "CurrencyCode": "BRL",
        "Amount": "0.00"
      },
      "PromotionDiscount": {
        "CurrencyCode": "BRL",
        "Amount": "0.00"
      },
      "PromotionDiscountTax": {
        "CurrencyCode": "BRL",
        "Amount": "0.00"
      },
      "IsGift": true,
      "ConditionId": "New",
      "ConditionSubtypeId": "New",
      "IsTransparency": false
    }
  ],
  "AmazonOrderId": "702-6568359-1455403"
}

Crie seu arquivo getOrderItemsBuyerInfo.php

Ele é usado para listar as orders.

$apiInstance = new SellingPartnerApi\Api\OrdersApi($config);
$order_id = '702-1471409-2856348'; // string | An orderId is an Amazon-defined order identifier, in 3-7-7 format.
$next_token = null; // 'next_token_example'; // string | A string token returned in the response of your previous request.

try {
  $result = $apiInstance->getOrderItemsBuyerInfo($order_id, $next_token);
  print_r(json_encode($result->getPayload()));
} catch (Exception $e) {
  echo 'Exception when calling OrdersApi->getOrderItemsBuyerInfo: ', $e->getMessage(), PHP_EOL;
}

📘

SQS de notificações

Para conhecer sobre as notificações e SQS, verifique a documentação completa.