yuca/amazon-advertising-api-php-sdk

Amazon Advertising API 客户端库

dev-master 2023-06-05 13:05 UTC

This package is auto-updated.

Last update: 2024-09-05 15:45:20 UTC


README

官方 支持 V2 的 Amazon Advertising API PHP 客户端库。

要求

PHP >= 5.3.0
cURL >= 7.18

文档

API 参考
访问请求
入门

教程

注册沙盒配置文件 - 本教程将向您展示如何使用 CURL 在沙盒中注册配置文件。
使用 CURL 生成并下载报告 - 在进行此教程之前,您需要先在沙盒中注册配置文件。

沙盒自助服务

如果您想在沙盒中测试 API,您需要为要测试的区域注册一个配置文件。可以通过调用 registerProfile API 来执行此操作。在调用此之前,请确保以 sandbox 模式实例化客户端,否则会失败。

以下国家代码可用于测试。

US, CA, UK, DE, FR, ES, IT, IN, CN, JP

$client->registerProfile(["countryCode" => "IT"]);
{
  "registerProfileId": "5cf1aca5-4ab8-4489-8c33-013d1f85c586JP",
  "status": "IN_PROGRESS",
  "statusDetails": "Registration workflow has been started"
}

快速入门

实例化客户端

如果没有刷新令牌,可以传入 accessToken

<?php
use AmazonAdvertisingApi\Client;

$config = [
    "clientId" => "CLIENT_ID",
    "clientSecret" => "CLIENT_SECRET",
    "refreshToken" => "REFRESH_TOKEN",
    "region" => "na",
    "sandbox" => false,
];

$client = new Client($config);

刷新访问令牌

当访问令牌过期时,您可以使用以下方法刷新访问令牌。新的访问令牌将在请求响应中。此方法将为您设置,因此它主要用于参考,如果需要的话。

$request = $client->doRefreshToken();

获取配置文件列表

$request = $client->listProfiles();
[
    [
        "profileId" => 1234567890,
        "countryCode" => "US",
        "currencyCode" => "USD",
        "dailyBudget" => 10.00,
        "timezone" => "America/Los_Angeles",
        "accountInfo" => {
        "marketplaceStringId" => "ABC123",
        "sellerStringId" => "DEF456"
    ]
]

设置配置文件 ID

$client->setProfileId("1234567890");

设置配置文件 ID 后,您就可以开始调用 API 了。

启用调试

$client->setDebug(true);

示例 API 调用

getProfile

通过 ID 获取单个配置文件。

$client->getProfile("1234567890");
[
  "profileId" => 1234567890,
  "countryCode" => "US",
  "currencyCode" => "USD",
  "dailyBudget" => 3.99,
  "timezone" => "America/Los_Angeles",
  "accountInfo" => [
    "marketplaceStringId" => "ABC123",
    "sellerStringId" => "DEF456"
  ]
]

updateProfiles

更新一个或多个配置文件。广告商使用其 profileIds 进行识别。

$client->updateProfiles([
    [
        "profileId" => $client->getProfileId(),
        "dailyBudget" => 3.99
    ],
    [
        "profileId" => 11223344,
        "dailyBudget" => 6.00
    ]
]);
[
  {
    "code": "SUCCESS",
    "profileId": 1234567890
  },
  {
    "code": "NOT_FOUND",
    "description": "Profile with id 11223344 was not found for this advertiser.",
    "profileId": 0
  }
]

listCampaigns

检索满足可选条件的活动列表。

$client->listCampaigns(["stateFilter" => "enabled"));
[
  {
    "campaignId": 59836775211065,
    "name": "CampaignOne",
    "campaignType": "sponsoredProducts",
    "targetingType": "manual",
    "dailyBudget": 15.0,
    "startDate": "20160330",
    "state": "enabled"
  },
  {
    "campaignId": 254238342004647,
    "name": "CampaignTwo",
    "campaignType": "sponsoredProducts",
    "targetingType": "manual",
    "dailyBudget": 5.0,
    "startDate": "20160510",
    "state": "enabled"
  }
]

getCampaign

通过 ID 检索活动。请注意,此调用返回的最小活动字段集,但比 getCampaignEx 更高效。

$client->getCampaign(1234567890);
{
  "campaignId": 1234567890,
  "name": "CampaignOne",
  "campaignType": "sponsoredProducts",
  "targetingType": "manual",
  "dailyBudget": 15.0,
  "startDate": "20160330",
  "state": "enabled"
}

createCampaigns

创建一个或多个活动。成功创建的活动将被分配唯一的 campaignId

$client->createCampaigns(
    [
        ["name" => "My Campaign One",
              "campaignType" => "sponsoredProducts",
              "targetingType" => "manual",
              "state" => "enabled",
              "dailyBudget" => 5.00,
              "startDate" => date("Ymd")),
        ["name" => "My Campaign Two",
              "campaignType" => "sponsoredProducts",
              "targetingType" => "manual",
              "state" => "enabled",
              "dailyBudget" => 15.00,
              "startDate" => date("Ymd"))));
[
  {
    "code": "SUCCESS",
    "campaignId": 173284463890123
  },
  {
    "code": "SUCCESS",
    "campaignId": 27074907785456
  }
]

updateCampaigns

更新一个或多个活动。活动通过其 campaignId 进行标识。

$client->updateCampaigns(
    [
        ["campaignId" => 173284463890123,
              "name" => "Update Campaign One",
              "state" => "enabled",
              "dailyBudget" => 10.99),
        ["campaignId" => 27074907785456,
              "name" => "Update Campaign Two",
              "state" => "enabled",
              "dailyBudget" => 99.99)));
[
  {
    "code": "SUCCESS",
    "campaignId": 173284463890123
  },
  {
    "code": "SUCCESS",
    "campaignId": 27074907785456
  }
]

archiveCampaign

将活动状态设置为存档。此操作可以通过更新执行,但包括在此处以保持完整性。

$client->archiveCampaign(1234567890);
{
  "code": "SUCCESS",
  "campaignId": 1234567890
}

listAdGroups

检索满足可选条件的广告组列表。

$client->listAdGroups(["stateFilter" => "enabled"));
[
  {
    "adGroupId": 262960563101486,
    "name": "AdGroup One",
    "campaignId": 181483024866689,
    "defaultBid": 1.0,
    "state": "enabled"
  },
  {
    "adGroupId": 52169162825843,
    "name": "AdGroup Two",
    "campaignId": 250040549047739,
    "defaultBid": 2.0,
    "state": "enabled"
  }
]

getAdGroup

通过ID检索广告组。请注意,此调用返回广告组的最低字段集,但比 getAdGroupEx 更有效。

$client->getAdGroup(262960563101486);
{
  "adGroupId": 262960563101486,
  "name": "AdGroup One",
  "campaignId": 181483024866689,
  "defaultBid": 1.0,
  "state": "enabled"
}

createAdGroups

创建一个或多个广告组。成功创建的广告组将被分配唯一的 adGroupId

$client->createAdGroups(
    [
        [
            "campaignId" => 250040549047739,
            "name" => "New AdGroup One",
            "state" => "enabled",
            "defaultBid" => 2.0),
        [
            "campaignId" => 59836775211065,
            "name" => "New AdGroup Two",
            "state" => "enabled",
            "defaultBid" => 5.0)));
[
  {
    "code": "SUCCESS",
    "adGroupId": 117483076163518
  },
  {
    "code": "SUCCESS",
    "adGroupId": 123431426718271
  }
]

updateAdGroups

更新一个或多个广告组。广告组通过其 adGroupId 进行标识。

$client->updateAdGroups(
    [
        [
            "adGroupId" => 117483076163518,
            "state" => "enabled",
            "defaultBid" => 20.0),
        [
            "adGroupId" => 123431426718271,
            "state" => "enabled",
            "defaultBid" => 15.0)));
[
  {
    "code": "SUCCESS",
    "adGroupId": 117483076163518
  },
  {
    "code": "SUCCESS",
    "adGroupId": 123431426718271
  }
]

archiveAdGroup

将广告组状态设置为存档。此操作可以通过更新执行,但包括在此处以保持完整性。

$client->archiveAdGroup(117483076163518);
{
  "code": "SUCCESS",
  "adGroupId": 117483076163518
}

listKeywords

检索满足可选条件的关键词列表。

$client->listKeywords(["stateFilter" => "enabled"));
[
  {
    "keywordId": 174140697976855,
    "adGroupId": 52169162825843,
    "campaignId": 250040549047739,
    "keywordText": "KeywordOne",
    "matchType": "exact",
    "state": "enabled"
  },
  {
    "keywordId": 118195812188994,
    "adGroupId": 52169162825843,
    "campaignId": 250040549047739,
    "keywordText": "KeywordTwo",
    "matchType": "exact",
    "state": "enabled"
  }
]

getKeyword

通过ID检索关键词。请注意,此调用返回关键词的最低字段集,但比 getKeywordEx 更有效。

$client->getKeyword(174140697976855);
{
  "keywordId": 174140697976855,
  "adGroupId": 52169162825843,
  "campaignId": 250040549047739,
  "keywordText": "KeywordOne",
  "matchType": "exact",
  "state": "enabled"
}

createKeywords

创建一个或多个关键词。成功创建的关键词将被分配唯一的 keywordId

$client->createKeywords(
    [
        [
            "campaignId" => 250040549047739,
            "adGroupId" => 52169162825843,
            "keywordText" => "AnotherKeyword",
            "matchType" => "exact",
            "state" => "enabled"),
        [
            "campaignId" => 250040549047739,
            "adGroupId" => 52169162825843,
            "keywordText" => "YetAnotherKeyword",
            "matchType" => "exact",
            "state" => "enabled")));
[
  {
    "code": "SUCCESS",
    "keywordId": 112210768353976
  },
  {
    "code": "SUCCESS",
    "keywordId": 249490346605943
  }
]

updateKeywords

更新一个或多个关键词。关键词通过其 keywordId 进行标识。

$client->updateKeywords(
       [
           [
               "keywordId" => 112210768353976,
               "bid" => 100.0,
               "state" => "archived"),
           [
               "keywordId" => 249490346605943,
               "bid" => 50.0,
               "state" => "archived")));
[
  {
    "code": "SUCCESS",
    "keywordId": 112210768353976
  },
  {
    "code": "SUCCESS",
    "keywordId": 249490346605943
  }
]

archiveKeyword

将关键词状态设置为存档。此操作可以通过更新执行,但包括在此处以保持完整性。

$client->archiveKeyword(112210768353976);
{
  "code": "200",
  "requestId": "0TR95PJD6Z16FFCZDXD0"
}

listNegativeKeywords

检索满足可选条件的否定关键词列表。

$client->listNegativeKeywords(["stateFilter" => "enabled"));
[
  {
    "keywordId": 281218602770639,
    "adGroupId": 52169162825843,
    "campaignId": 250040549047739,
    "keywordText": "KeywordOne",
    "matchType": "negativeExact",
    "state": "enabled"
  },
  {
    "keywordId": 280875877064090,
    "adGroupId": 262960563101486,
    "campaignId": 181483024866689,
    "keywordText": "KeywordTwo",
    "matchType": "negativeExact",
    "state": "enabled"
  }
]

getNegativeKeyword

通过ID检索否定关键词。请注意,此调用返回关键词的最低字段集,但比 getNegativeKeywordEx 更有效。

$client->getNegativeKeyword(281218602770639);
{
  "keywordId": 281218602770639,
  "adGroupId": 52169162825843,
  "campaignId": 250040549047739,
  "keywordText": "KeywordOne",
  "matchType": "negativeExact",
  "state": "enabled"
}

createNegativeKeywords

创建一个或多个否定关键词。成功创建的关键词将被分配唯一的 keywordId。

$client->createNegativeKeywords(
    [
        [
            "campaignId" => 250040549047739,
            "adGroupId" => 52169162825843,
            "keywordText" => "AnotherKeyword",
            "matchType" => "negativeExact",
            "state" => "enabled"),
        [
            "campaignId" => 181483024866689,
            "adGroupId" => 262960563101486,
            "keywordText" => "YetAnotherKeyword",
            "matchType" => "negativeExact",
            "state" => "enabled")));
[
  {
    "code": "SUCCESS",
    "keywordId": 61857817062026
  },
  {
    "code": "SUCCESS",
    "keywordId": 147623067066967
  }
]

updateNegativeKeywords

更新一个或多个否定关键词。关键词通过其 keywordId 进行标识。

$client->updateNegativeKeywords(
       [
           [
               "keywordId" => 61857817062026,
               "state" => "enabled",
               "bid" => 15.0),
           [
               "keywordId" => 61857817062026,
               "state" => "enabled",
               "bid" => 20.0)));
[
  {
    "code": "SUCCESS",
    "keywordId": 61857817062026
  },
  {
    "code": "INVALID_ARGUMENT",
    "description": "Entity with id 61857817062026 already specified in this update operation."
  }
]

archiveNegativeKeyword

将否定关键词状态设置为存档。此操作可以通过更新状态执行,但包括在此处以保持完整性。

$client->archiveNegativeKeyword(61857817062026);
{
  "code": "SUCCESS",
  "keywordId": 61857817062026
}

listCampaignNegativeKeywords

检索满足可选条件的否定活动关键词列表。

$client->listCampaignNegativeKeywords(["matchTypeFilter" => "negativeExact"));
[
  {
    "keywordId": 131747786239884,
    "adGroupId": null,
    "campaignId": 181483024866689,
    "keywordText": "Negative Keyword",
    "matchType": "negativeExact",
    "state": "enabled"
  },
  {
    "keywordId": 197201372210821,
    "adGroupId": null,
    "campaignId": 181483024866689,
    "keywordText": "My Negative Keyword",
    "matchType": "negativeExact",
    "state": "enabled"
  }
]

getCampaignNegativeKeyword

通过ID检索活动否定关键词。请注意,此调用返回关键词的最低字段集,但比 getCampaignNegativeKeywordEx 更有效。

$client->getCampaignNegativeKeyword(197201372210821);
{
  "keywordId": 197201372210821,
  "adGroupId": null,
  "campaignId": 181483024866689,
  "keywordText": "My Negative Keyword",
  "matchType": "negativeExact",
  "state": "enabled"
}

createCampaignNegativeKeywords

创建一个或多个活动否定关键词。成功创建的关键词将被分配唯一的 keywordId

$client->createCampaignNegativeKeywords(
       [
           [
               "campaignId" => 181483024866689,
               "keywordText" => "Negative Keyword One",
               "matchType" => "negativeExact",
               "state" => "enabled"),
           [
               "campaignId" => 181483024866689,
               "keywordText" => "Negative Keyword Two",
               "matchType" => "negativeExact",
               "state" => "enabled")));
[
  {
    "code": "SUCCESS",
    "keywordId": 196797670902082
  },
  {
    "code": "SUCCESS",
    "keywordId": 186203479904657
  }
]

updateCampaignNegativeKeywords

更新一个或多个活动否定关键词。关键词通过其 keywordId 进行标识。

活动否定关键词目前只能被删除。

removeCampaignNegativeKeyword

将活动否定关键词状态设置为删除。此操作可以通过更新状态执行,但包括在此处以保持完整性。

$client->removeCampaignNegativeKeyword(186203479904657);
{
  "code": "SUCCESS",
  "keywordId": 186203479904657
}

listProductAds

检索满足可选条件的商品广告列表。

$client->listProductAds(["stateFilter" => "enabled"));
[
  {
    "adId": 247309761200483,
    "adGroupId": 262960563101486,
    "campaignId": 181483024866689,
    "sku": "TEST001",
    "state": "enabled"
  }
]

getProductAd

通过ID检索商品广告。请注意,此调用返回商品广告的最低字段集,但比 getProductAdEx 更有效。

$client->getProductAd(247309761200483);
{
  "adId": 247309761200483,
  "adGroupId": 262960563101486,
  "campaignId": 181483024866689,
  "sku": "TEST001",
  "state": "enabled"
}

createProductAds

创建一个或多个商品广告。成功创建的商品广告将被分配唯一的 adId

$client->createProductAds(
    [
        [
            "campaignId" => 181483024866689,
            "adGroupId" => 262960563101486,
            "sku" => "TEST002",
            "state" => "enabled"),
        [
            "campaignId" => 181483024866689,
            "adGroupId" => 262960563101486,
            "sku" => "TEST003",
            "state" => "enabled")));
[
  {
    "code": "SUCCESS",
    "adId": 239870616623537
  },
  {
    "code": "SUCCESS",
    "adId": 191456410590622
  }
]

updateProductAds

更新一个或多个商品广告。商品广告通过其 adId 进行标识。

$client->updateProductAds(
    [
        [
            "adId" => 239870616623537,
            "state" => "archived"),
        [
            "adId" => 191456410590622,
            "state" => "archived")));
[
  {
    "code": "SUCCESS",
    "adId": 239870616623537
  },
  {
    "code": "SUCCESS",
    "adId": 191456410590622
  }
]

archiveProductAd

将商品广告状态设置为存档。此操作可以通过更新执行,但包括在此处以保持完整性。

$client->archiveProductAd(239870616623537);
{
  "code": "SUCCESS",
  "adId": 239870616623537
}

requestSnapshot

请求单个类型所有实体的快照报告。

$client->requestSnapshot(
    "campaigns",
    ["stateFilter" => "enabled,paused,archived",
          "campaignType" => "sponsoredProducts"));
{
  "snapshotId": "amzn1.clicksAPI.v1.p1.573A0477.ec41773a-1659-4013-8eb9-fa18c87ef5df",
  "recordType": "campaign",
  "status": "IN_PROGRESS"
}

getSnapshot

检索之前请求的报告。

$client->getSnapshot("amzn1.clicksAPI.v1.p1.573A0477.ec41773a-1659-4013-8eb9-fa18c87ef5df");
[
  {
    "campaignId": 181483024866689,
    "name": "Campaign One",
    "campaignType": "sponsoredProducts",
    "targetingType": "manual",
    "dailyBudget": 5.0,
    "startDate": "20160330",
    "state": "archived"
  },
  {
    "campaignId": 59836775211065,
    "name": "Campaign Two",
    "campaignType": "sponsoredProducts",
    "targetingType": "manual",
    "dailyBudget": 10.99,
    "startDate": "20160330",
    "state": "archived"
  },
  {
    "campaignId": 254238342004647,
    "name": "Campaign Three",
    "campaignType": "sponsoredProducts",
    "targetingType": "manual",
    "dailyBudget": 99.99,
    "startDate": "20160510",
    "state": "enabled"
  }
]

requestReport

请求单个类型所有具有报告性能数据的实体的自定义性能报告。

$client->requestReport(
    "campaigns",
    ["reportDate" => "20160515",
          "campaignType" => "sponsoredProducts",
          "metrics" => "impressions,clicks,cost"));
{
  "reportId": "amzn1.clicksAPI.v1.m1.573A0808.32908def-66a1-4ce2-8f12-780dc4ae1d43",
  "recordType": "campaign",
  "status": "IN_PROGRESS",
  "statusDetails": "Report is submitted"
}

getReport

检索之前请求的报告。

$client->getReport("amzn1.clicksAPI.v1.m1.573A0808.32908def-66a1-4ce2-8f12-780dc4ae1d43");

沙盒将返回虚拟数据。

[
  {
    "cost": 647.75,
    "campaignId": 230751293360275,
    "clicks": 2591,
    "impressions": 58288
  },
  {
    "cost": 619.5,
    "campaignId": 52110033002744,
    "clicks": 2478,
    "impressions": 68408
  },
  {
    "cost": 151.91,
    "campaignId": 140739567440917,
    "clicks": 633,
    "impressions": 17343
  },
  {
    "cost": 143.46,
    "campaignId": 79132327246328,
    "clicks": 797,
    "impressions": 48903
  }
]

getAdGroupBidRecommendations

请求指定广告组的出价建议。

$client->getAdGroupBidRecommendations(1234509876);
{
  "adGroupId": 1234509876,
  "suggestedBid": {
    "rangeEnd": 2.16,
    "rangeStart": 0.67,
    "suggested": 1.67
  }
}

getKeywordBidRecommendations

请求指定关键词的出价建议。

$client->getKeywordBidRecommendations(85243141758914);
{
  "keywordId": 85243141758914,
  "adGroupId": 252673310548066,
  "suggestedBid": {
    "rangeEnd": 3.18,
    "rangeStart": 0.35,
    "suggested": 2.97
  }
}

bulkGetKeywordBidRecommendations

请求最多100个关键词的出价建议。

$client->bulkGetKeywordBidRecommendations(
    242783265349805,
    [
        ["keyword" => "testKeywordOne",
              "matchType" => "exact"),
        ["keyword" => "testKeywordTwo",
              "matchType" => "exact")
    ));
{
  "adGroupId": 242783265349805,
  "recommendations": [
    {
      "code": "SUCCESS",
      "keyword": "testKeywordOne",
      "matchType": "exact",
      "suggestedBid": {
        "rangeEnd": 2.67,
        "rangeStart": 0.38,
        "suggested": 2.07
      }
    },
    {
      "code": "SUCCESS",
      "keyword": "testKeywordTwo",
      "matchType": "exact",
      "suggestedBid": {
        "rangeEnd": 3.19,
        "rangeStart": 0.79,
        "suggested": 3.03
      }
    }
  ]
}

getAdGroupKeywordSuggestions

请求指定广告组的关键词建议。

$client->getAdGroupKeywordSuggestions(
    ["adGroupId" => 1234567890,
          "maxNumSuggestions" => 2,
          "adStateFilter" => "enabled"));
{
  "adGroupId": 1234567890,
  "suggestedKeywords": [
    {
      "keywordText": "keyword PRODUCT_AD_A 1",
      "matchType": "broad"
    },
    {
      "keywordText": "keyword PRODUCT_AD_B 1",
      "matchType": "broad"
    }
  ]
}

getAdGroupKeywordSuggestionsEx

请求指定广告组的关键词建议,扩展版本。增加了返回关键词出价建议的能力。

$client->getAdGroupKeywordSuggestionsEx(
    ["adGroupId" => 1234567890,
          "maxNumSuggestions" => 2,
          "suggestBids" => "yes",
          "adStateFilter" => "enabled"));
[
  {
    "adGroupId": 1234567890,
    "campaignId": 0987654321,
    "keywordText": "keyword TESTASINXX 1",
    "matchType": "broad",
    "state": "enabled",
    "bid": 1.84
  },
  {
    "adGroupId": 1234567890,
    "campaignId": 0987654321,
    "keywordText": "keyword TESTASINXX 2",
    "matchType": "broad",
    "state": "enabled",
    "bid": 1.07
  }
]

getAsinKeywordSuggestions

请求指定asin的关键词建议。

$client->getAsinKeywordSuggestions(
    ["asin" => "B00IJSNPM0",
          "maxNumSuggestions" => 2));
[
  {
    "keywordText": "keyword B00IJSNPM0 1",
    "matchType": "broad"
  },
  {
    "keywordText": "keyword B00IJSNPM0 2",
    "matchType": "broad"
  }
]

bulkGetAsinKeywordSuggestions

请求asin列表的关键词建议。

$client->bulkGetAsinKeywordSuggestions(
    ["asins" => [
              "B00IJSNPM0",
              "B00IJSO1NM"),
          "maxNumSuggestions" => 2));
[
  {
    "keywordText": "keyword B00IJSNPM0 1",
    "matchType": "broad"
  },
  {
    "keywordText": "keyword B00IJSO1NM 1",
    "matchType": "broad"
  }
]