yuca / amazon-advertising-api-php-sdk
Amazon Advertising API 客户端库
Requires
- php: >=5.3.0
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^8.5
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
文档
教程
注册沙盒配置文件 - 本教程将向您展示如何使用 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"
}
]