snscripts/itc-reporter

用于从iTunes Connect下载统计信息的PHP包 - 替代Apples基于Java的Reporter.jar

2.0.2 2019-09-03 22:08 UTC

This package is auto-updated.

Last update: 2024-09-04 08:50:10 UTC


README

Author Source Code Latest Version Software License Build Status

简介

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)。有关更多信息,请参阅 许可文件