snscripts / itc-reporter
用于从iTunes Connect下载统计信息的PHP包 - 替代Apples基于Java的Reporter.jar
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: 6.*
- snscripts/result: 1.0.*
Requires (Dev)
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: ~2.0
README
简介
ITC Reporter是一个遵守PSR-2规范的包,用于从iTunes Connect获取数据。它作为苹果提供的基于Java的reporter.jar的PHP端口,具体信息请见此处。
当前的自动采集工具将从2016年11月底停止工作,他们建议所有人都切换到使用此帖子中推荐的新的 Reporter 工具。
这是第一个基于PHP Composer的Reporter工具的端口,尝试通过处理API返回的XML并将其作为数组返回,以简化工具和报告的使用。
需求
Composer
ITC-Reporter需要以下内容
- "php": ">=5.5.0"
- "guzzlehttp/guzzle": "6.*"
- "snscripts/result": "1.0.*"
如果您希望以开发模式运行并运行测试,则需要以下内容。
- "phpunit/phpunit": "~4.0"
- "squizlabs/php_codesniffer": "~2.0"
安装
Composer
最简单的安装方式是通过composer。
composer require snscripts/itc-reporter 2.*
或者将其添加到您的项目 composer.json
文件中。
{
"require": {
"snscripts/itc-reporter": "2.*"
}
}
设置
按照以下方式实例化类。
$Reporter = new \Snscripts\ITCReporter\Reporter(
new \GuzzleHttp\Client
);
使用
基础
除了返回数据的主要方法之外,所有方法都支持链式调用。
要使用Reporter,您需要您的iTunes Connect账户的访问令牌。这可以从iTunes Connect 销售和趋势屏幕获得,具体请参考Reporter 文档。按照以下方式设置访问令牌。
$Reporter->setAccessToken('12345678-1234-abcd-abcd-12345678abcd');
还有“获取器”方法来检索当前设置的数据。
$Reporter->getAccessToken();
在进一步使用此包之前,建议您查阅苹果的文档,请访问https://help.apple.com/itc/appsreporterguide/。
账户号码
大多数操作还需要设置账户号码。您可以使用以下函数检索用户可用的“销售和趋势”和“支付和财务报告”账户。
$Reporter->getSalesAccounts();
$Reporter->getFinanceAccounts();
这两个函数返回相同格式的数据。如果没有访问任何账户,将返回空数组。如果有访问权限,它们将返回以下格式的数组。
[
1234567 => [
'Name' => 'John Smith',
'Number' => 1234567
],
9876543 => [
'Name' => 'Jane Doe',
'Number' => 9876543
]
]
'Number' 元素是其余端点所需的账户号码。
您可以通过以下方式设置要使用的账户号码:
$Reporter->setAccountNum(1234567);
然后,您还可以通过以下方式检索当前设置的账户号码:
$Reporter->getAccountNum();
供应商号码
在检索报告之前,还需要一个供应商号码。在获取供应商列表之前,需要设置账户号码。
一旦设置了账户号码,您就可以获取“销售和趋势”和“支付和财务报告”的供应商,对于销售和趋势供应商的数据与支付和财务供应商的数据不同。
在这两种情况下,如果没有供应商存在,将返回空数组。
销售供应商
使用以下函数获取销售和趋势的供应商:
$Reporter->getSalesVendors();
这将返回一个包含供应商号码的简单数组。
[
1234567,
9876543
]
财务供应商
使用以下函数获取支付和财务报告的供应商:
$Reporter->getFinanceVendors();
此操作返回一个稍微复杂一些的数组,详细说明了供应商、可用的地区代码以及每个地区代码可用的报告。
[
1234567 => [
'Number' => 1234567,
'Regions' => [
'AE' => [
'Code' => 'AE',
'Reports' => [
'Financial'
]
],
'AU' => [
'Code' => 'AU',
'Reports' => [
'Financial'
]
]
]
],
9876543 => [
'Number' => 9876543,
'Regions' => [
'EU' => [
'Code' => 'EU',
'Reports' => [
'Financial'
]
]
]
]
]
报告
销售报告和财务报告都需要关于您想要哪种报告的具体数据。请查阅每个部分的文档,以便了解可用的参数。
销售报告
有关销售报告,请参阅以下文档查看参数描述:这里
获取报告的方法如下
$Reporter->getSalesReport(
$vendorNum,
$reportType,
$reportSubType,
$dateType,
$date
);
实际的调用可能如下所示
$Reporter->getSalesReport(
1234567,
'Sales',
'Summary',
'Daily',
'20161025' //YYYYMMDD
);
如果没有找到任何内容或发生错误,将返回一个空数组。如果报告确实有数据,将返回一个类似于以下内容的数组。
[
[
[Provider] => APPLE
[Provider Country] => US
[SKU] => 12345678901
[Developer] => John Smith
[Title] => My App
[Version] => 2.0.1
[Product Type Identifier] => 1F
[Units] => 1
[Developer Proceeds] => 0
[Begin Date] => 10/23/2016
[End Date] => 10/23/2016
[Customer Currency] => AUD
[Country Code] => AU
[Currency of Proceeds] => AUD
[Apple Identifier] => 123456789
[Customer Price] => 0
[Promo Code] =>
[Parent Identifier] =>
[Subscription] =>
[Period] =>
[Category] => Travel
[CMB] =>
[Device] => iPad
[Supported Platforms] => iOS
[Proceeds Reason] =>
[Preserved Pricing] =>
[Client] =>
],
[
[Provider] => APPLE
[Provider Country] => US
[SKU] => 12345678901
[Developer] => John Smith
[Title] => My App
[Version] => 2.0.1
[Product Type Identifier] => 3F
[Units] => 1
[Developer Proceeds] => 0
[Begin Date] => 10/23/2016
[End Date] => 10/23/2016
[Customer Currency] => USD
[Country Code] => BR
[Currency of Proceeds] => USD
[Apple Identifier] => 123456789
[Customer Price] => 0
[Promo Code] =>
[Parent Identifier] =>
[Subscription] =>
[Period] =>
[Category] => Travel
[CMB] =>
[Device] => iPhone
[Supported Platforms] => iOS
[Proceeds Reason] =>
[Preserved Pricing] =>
[Client] =>
]
]
财务报告
有关财务报告,请参阅以下文档查看参数描述:这里
获取报告的方法如下
$Reporter->getFinanceReport(
$vendorNum,
$regionCode,
$reportType,
$fiscalYear,
$fiscalPeriod
);
实际的调用可能如下所示
$Reporter->getSalesReport(
1234567,
'GB',
'Financial',
'2016',
'1' //YYYYMMDD
);
如果没有找到任何内容或发生错误,将返回一个空数组。如果报告确实有数据,将返回一个类似于以下内容的数组。
[
[
[Start Date] => 09/27/2015
[End Date] => 10/31/2015
[UPC] =>
[ISRC/ISBN] =>
[Vendor Identifier] => 123456789012
[Quantity] => 22
[Partner Share] => 0.46
[Extended Partner Share] => 10.12
[Partner Share Currency] => GBP
[Sales or Return] => S
[Apple Identifier] => 123456789
[Artist/Show/Developer/Author] => John Smith
[Title] => My App
[Label/Studio/Network/Developer/Publisher] =>
[Grid] =>
[Product Type Identifier] => 1
[ISAN/Other Identifier] =>
[Country Of Sale] => GB
[Pre-order Flag] =>
[Promo Code] =>
[Customer Price] => 0.79
[Customer Currency] => GBP
],
[
[Start Date] => 09/27/2015
[End Date] => 10/31/2015
[UPC] =>
[ISRC/ISBN] =>
[Vendor Identifier] => 123789456
[Quantity] => 1
[Partner Share] => 0.46
[Extended Partner Share] => 0.46
[Partner Share Currency] => GBP
[Sales or Return] => S
[Apple Identifier] => 987654321
[Artist/Show/Developer/Author] => John Smith
[Title] => My App 2
[Label/Studio/Network/Developer/Publisher] =>
[Grid] =>
[Product Type Identifier] => 1F
[ISAN/Other Identifier] =>
[Country Of Sale] => GB
[Pre-order Flag] =>
[Promo Code] =>
[Customer Price] => 0.79
[Customer Currency] => GBP
],
[Total_Rows] => 6
[Total_Amount] => 28.32
[Total_Units] => 58
]
调试
如果您运行了一个获取报告或账户/供应商编号的方法,但未获得预期结果,您可以检索最后返回的结果对象,此方法应包含任何可能失败请求的相关信息。
$Reporter = new \Snscripts\ITCReporter\Reporter(
new \GuzzleHttp\Client
);
$Reporter->setAccessToken('12345678-1234-abcd-abcd-12345678abcd');
$failedAccounts = $Reporter->getSalesAccount();
$Result = $Reporter->getLastResult();
如果没有执行任何操作,结果将返回一个 null
值。
变更日志
您可以在 这里 查看变更日志
贡献
有关详细信息,请参阅 贡献指南
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件