PHP code example of lai3221 / amazon-ads-api-v1

1. Go to this page and download the library: Download lai3221/amazon-ads-api-v1 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/ */

    

lai3221 / amazon-ads-api-v1 example snippets




use Lai3221\AmazonAdsApiV1\Generated\Model\AdProduct;
use Lai3221\AmazonAdsApiV1\Generated\Model\CampaignCreate;
use Lai3221\AmazonAdsApiV1\Generated\Model\CreateCampaignRequest;
use Lai3221\AmazonAdsApiV1\Generated\Model\CreateState;
use Lai3221\AmazonAdsApiV1\Laravel\Facades\AmazonAds;
use Lai3221\AmazonAdsApiV1\RequestContext;

$campaign = new CampaignCreate([
    'adProduct' => AdProduct::SPONSORED_PRODUCTS,
    'name' => 'Summer launch',
    'state' => CreateState::PAUSED,
]);

$request = new CreateCampaignRequest([
    'campaigns' => [$campaign],
]);

$response = AmazonAds::campaigns()->createCampaign(
    request: $request,
    context: new RequestContext(profileId: '1234567890'),
);

$result = $response->body;
$requestId = $response->requestId;

use Lai3221\AmazonAdsApiV1\AmazonAdsClient;

final class SyncCampaigns
{
    public function __construct(private AmazonAdsClient $amazonAds)
    {
    }

    public function __invoke(): void
    {
        $response = $this->amazonAds->campaigns()->queryCampaign([
            'maxResults' => 100,
        ]);

        // $response->body is a generated CampaignSuccessResponse model.
    }
}

use GuzzleHttp\Client;
use Lai3221\AmazonAdsApiV1\Auth\LoginWithAmazonOAuth;

$oauth = new LoginWithAmazonOAuth(
    http: new Client(),
    clientId: config('amazon-ads.client_id'),
    clientSecret: config('amazon-ads.client_secret'),
    redirectUri: route('amazon-ads.callback'),
);

$authorizationUrl = $oauth->authorizationUrl(
    scopes: ['advertising::campaign_management'],
    state: csrf_token(),
);

$tokens = $oauth->exchangeAuthorizationCode($request->string('code'));
$refreshToken = $tokens->refreshToken;

$request = (new CreateCampaignRequest())
    ->setCampaigns([$campaign]);

$request->validate();
$payload = $request->toArray();

use Lai3221\AmazonAdsApiV1\Generated\Model\CreateCreative;

$creative = new CreateCreative([
    'productCreative' => [
        // Fields defined by the selected productCreative variant.
    ],
]);

use Lai3221\AmazonAdsApiV1\Exception\ApiException;

try {
    $response = AmazonAds::campaigns()->queryCampaign([]);
} catch (ApiException $exception) {
    report([
        'status' => $exception->statusCode,
        'request_id' => $exception->requestId,
        'rate_limited' => $exception->isRateLimited(),
        'error' => $exception->responseBody,
    ]);
}

use GuzzleHttp\Client;
use Lai3221\AmazonAdsApiV1\AmazonAdsClient;
use Lai3221\AmazonAdsApiV1\Auth\LoginWithAmazonTokenProvider;
use Lai3221\AmazonAdsApiV1\Credentials;
use Lai3221\AmazonAdsApiV1\Http\HttpTransport;
use Lai3221\AmazonAdsApiV1\Region;
use Lai3221\AmazonAdsApiV1\SdkConfiguration;

$http = new Client();
$credentials = new Credentials($clientId, $clientSecret, $refreshToken);
$tokens = new LoginWithAmazonTokenProvider($http, $credentials);
$transport = new HttpTransport(
    http: $http,
    tokens: $tokens,
    credentials: $credentials,
    configuration: new SdkConfiguration(region: Region::EUROPE),
);

$amazonAds = new AmazonAdsClient($transport);
bash
php artisan vendor:publish --tag=amazon-ads-config