PHP code example of zero-to-prod / spapi

1. Go to this page and download the library: Download zero-to-prod/spapi library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

zero-to-prod / spapi example snippets


use Zerotoprod\Spapi\Lwa;
use Zerotoprod\SpapiLwa\SpapiLwa;

$response = SpapiLwa::from(
    'amzn1.application-oa2-client.xxx', // client_id
    'amzn1.oa2-cs.v1.xxx'               // client_secret
)->refreshToken('refresh_token');       // The LWA refresh token. Get this value when the selling partner authorizes your application

$access_token = $response['response']['access_token'];

use Zerotoprod\Spapi\Lwa;
use Zerotoprod\SpapiLwa\SpapiLwa;

$response = SpapiLwa::from(
    'amzn1.application-oa2-client.xxx', // client_id
    'amzn1.oa2-cs.v1.xxx',              // client_secret
)->clientCredentials('scope');

$access_token = $response['response']['access_token'];

use Zerotoprod\Spapi\Tokens;
use \Zerotoprod\SpapiRdt\SpapiRdt;

// Use the SpapiRdt API to get an RDT (Restricted Data Token)
$response = SpapiRdt::from(
    'access_token',                     // Access token received from LWA
    'amzn1.sp.solution.xxx'             // Target Application
)
    ->orders()
    ->getOrder(
        '123-1234567-1234567',           // Amazon Order Id
        ['buyerInfo', 'shippingAddress'] // Restricted Data Elements to Access
);

$access_token = $response['response']['restrictedDataToken'];

use Zerotoprod\Spapi\Spapi;

$Spapi = Spapi::from($access_token);

use Zerotoprod\Spapi\Spapi;

// Access the orders api and get orders.
$Orders = Spapi::from($access_token)
    ->orders()
    ->getOrders(
      ['MarketplaceIds']
      'CreatedAfter'
      'CreatedBefore'
      'LastUpdatedAfter'
      'LastUpdatedBefore'
      '[OrderStatuses']
      ['FulfillmentChannels']
      ['PaymentMethods']
      'BuyerEmail'
      'SellerOrderId'
      MaxResultsPerPage
      ['EasyShipShipmentStatuses']
      ['ElectronicInvoiceStatuses']
      'NextToken'
      ['AmazonOrderIds']
      'ActualFulfillmentSupplySourceId'
      'IsISPU'
      'StoreChainStoreId'
      'EarliestDeliveryDateBefore'
      'EarliestDeliveryDateAfter'
      'LatestDeliveryDateBefore'
      'LatestDeliveryDateAfter'
      ['curl_options'],
);

// Access the orders.
echo $Orders['response']['payload']['Orders'][0]['AmazonOrderId']

// Access errors.
echo $Orders['response']['errors']['code'];

use Zerotoprod\Spapi\Spapi;

$Order = Spapi::from($access_token)
    ->orders()
    ->getOrder('111-5803802-7417822', ['curl_options']);

// Access the order.
echo $Order['response']['payload']['AmazonOrderId'];

// Access errors.
echo $Order['response']['errors']['code'];

use Zerotoprod\Spapi\Spapi;

$OrderBuyerInfo = Spapi::from($access_token)
    ->orders()
    ->getOrderBuyerInfo('111-5803802-7417822', ['curl_options']);

// Access the buyer info.
echo $OrderBuyerInfo['response']['payload']['BuyerName'];

// Access errors.
echo $OrderBuyerInfo['response']['errors']['code'];

use Zerotoprod\Spapi\Spapi;

$OrderBuyerInfo = Spapi::from($access_token)
    ->orders()
    ->getOrderAddress('111-5803802-7417822', ['curl_options']);

// Access the buyer info.
echo $OrderBuyerInfo['response']['payload']['BuyerName'];

// Access errors.
echo $OrderBuyerInfo['response']['errors']['code'];

use Zerotoprod\Spapi\Spapi;


$Order = Spapi::from($access_token)
    ->orders()
    ->getOrderItems('111-5803802-7417822', ['curl_options']);

// Access the order.
echo $Order['response']['payload']['OrderItems'][0]['SellerSKU'];

// Access errors.
echo $Order['response']['errors']['code'];

use Zerotoprod\SpapiLwa\SpapiLwa;
use Zerotoprod\Spapi\Spapi;
use \Zerotoprod\SpapiRdt\SpapiRdt;

$lwa = SpapiLwa::from('amzn1.application-oa2-client.xxx','amzn1.oa2-cs.v1.xxx')
    ->refreshToken('Atzr|xxx');

$rdt = SpapiRdt::from($lwa['response']['access_token'],'amzn1.sp.solution.xxx')
    ->orders()
    ->getOrder('123-1234567-1234567', ['buyerInfo', 'shippingAddress']);

$response = Spapi::from($rdt['response']['restrictedDataToken'])
    ->orders()
    ->getOrder('111-5803802-7417822');

$Order = $response['response']['payload'];

use Zerotoprod\Spapi\Support\Testing\SpapiFake;
use Zerotoprod\SpapiOrders\Support\Testing\SpapiOrdersResponseFactory;

// Mock the Spapi response
SpapiFake::fake(
    SpapiOrdersResponseFactory::factory()
        ->set('response.payload', [
            'AmazonOrderId' => '123-1234567-1234567'
        ])
        ->make()
);

// Use the API as normal
$Spapi = Spapi::from('access_token');
$response = $Spapi->orders()->getOrder('123-1234567-1234567');

use Zerotoprod\SpapiLwa\Support\Testing\SpapiLwaFake;
use Zerotoprod\SpapiLwa\Support\Testing\SpapiLwaResponseFactory;
use Zerotoprod\SpapiRdt\Support\Testing\SpapiRdtFake;
use Zerotoprod\SpapiRdt\Support\Testing\SpapiRdtResponseFactory;
use Zerotoprod\SpapiLwa\SpapiLwa;
use Zerotoprod\SpapiTokens\SpapiTokens;
use Zerotoprod\SpapiRdt\SpapiRdt;

// Mock LWA response
SpapiLwaFake::fake(
    SpapiLwaResponseFactory::factory()
        ->asRefreshTokenResponse()
        ->make()
);

// Mock RDT response
SpapiRdtFake::fake(
    SpapiRdtResponseFactory::factory()->make()
);

// Get access token (in production code)
$access_token = SpapiLwa::from('client_id', 'client_secret')
    ->refreshToken('refresh_token');

// Get RDT token (in production code)
$rdt = SpapiRdt::from(
    SpapiTokens::from(
        $access_token['response']['access_token'],
        'app'
    )
)->orders()->getOrder('order-id')['response']['restrictedDataToken'];

// Mock Spapi response
SpapiFake::fake(
    SpapiOrdersResponseFactory::factory()
        ->set('response.payload', ['order_data'])
        ->make()
);

// Make the API call (in production code)
$Spapi = Spapi::from($rdt);
$Order = $Spapi->orders()->getOrder('order-id');