dlab/itc-reporter

mikebarlow的'iTunes Connect - Replacement for Apples Java based Reporter.jar'的分支

dev-master 2022-11-07 14:12 UTC

This package is auto-updated.

Last update: 2024-09-07 18:17:23 UTC


README

这是以下存储库的修改分支: https://github.com/mikebarlow/itc-reporter

简介

ITC Reporter是一个符合PSR-2规范的包,用于从iTunes Connect获取数据。它作为苹果提供的Java基于reporter.jar的PHP端口这里

当前的自动摄取工具将从2016年11月底停止工作,他们建议所有人切换到使用此帖子中的新 Reporter 工具。

这是Reporter工具的第一个基于PHP Composer的端口,通过处理API返回的XML并将其作为数组返回以简化使用。

要求

Composer

ITC-Reporter需要以下内容

  • "php": ">=5.5.0"
  • "guzzlehttp/guzzle": "7.*"
  • "snscripts/result": "1.0.*"

如果您想以开发模式运行并运行测试,则需要以下内容。

  • "phpunit/phpunit": "9.*"
  • "squizlabs/php_codesniffer": "~2.0"

安装

Composer

最简单的安装方法是通过composer。

composer require dlab/itc-reporter 2.*

或将其添加到您的项目的composer.json文件中。

{
    "require": {
        "dlab/itc-reporter": "2.*"
    }
}

设置

按照以下方式实例化类。

$Reporter = new \Dlab\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();

供应商编号

在检索报告之前需要最后一个ID是供应商编号。在您能够获取供应商列表之前,必须设置账户号码。

一旦设置了账户号码,您就可以获取“销售和趋势”以及“支付和财务报告”的供应商。销售和趋势供应商的数据与支付和财务供应商的数据不同。

在这两种情况下,如果没有供应商,将返回空数组。

销售供应商

使用以下函数获取销售和趋势的供应商;

$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 \Dlab\ITCReporter\Reporter(
    new \GuzzleHttp\Client
);

$Reporter->setAccessToken('12345678-1234-abcd-abcd-12345678abcd');

$failedAccounts = $Reporter->getSalesAccount();

$Result = $Reporter->getLastResult();

如果没有执行任何操作,则结果将返回一个null值。

变更日志

您可以在此处查看变更日志。

贡献

有关详细信息,请参阅贡献指南

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件