worksome/company-info

查找公司信息

1.3.0 2024-02-08 16:46 UTC

README

从公共服务中查找公司信息。

Tests PHPStan

如果你的应用程序需要有关特定公司的信息,那么有一些公共服务API可以提供这些信息。实现每个不同服务的支持可能需要大量工作,尤其是如果你需要为多个不同国家使用它。

公司信息包提供了一种服务,它包装了公共服务,并为您提供了执行查找的简单方式。

目前,该包支持丹麦VIRK和CVR API服务的公共服务API以及GB公报服务。

安装

您可以通过composer安装此包

composer require worksome/company-info

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="company-info-config"

配置

以下环境变量可用于配置该包

# Define the default country, used when a country is not given.
COMPANY_INFO_DEFAULT_COUNTRY=dk

# Define URL and credentials for the Danish CVR API service.
COMPANY_INFO_CVRAPI_BASE_URL=https://cvrapi.dk/api

# Define URL and credentials for the Danish VIRK service.
COMPANY_INFO_VIRK_BASE_URL=http://distribution.virk.dk
COMPANY_INFO_VIRK_USER_ID=xxx
COMPANY_INFO_VIRK_PASSWORD=xxx

# Define URL and credentials for the English Gazette service.
COMPANY_INFO_GAZETTE_BASE_URL=https://api.companieshouse.gov.uk
COMPANY_INFO_GAZETTE_KEY=xxx

# Define maximum number of results returned (works for VIRK and Gazette).
COMPANY_INFO_MAX_RESULTS=10

# Define the default provider for each country.
COMPANY_INFO_PROVIDER_DK=virk # Can also be cvrapi.
COMPANY_INFO_PROVIDER_GB=gazette
COMPANY_INFO_PROVIDER_NO=cvrapi

使用方法

该包提供了两个通用静态方法,允许您从名称或编号(在丹麦,编号是CVR编号)执行公司查找。

这些方法接受一个country参数,它必须是支持的国家之一,或者省略或留空以使用配置的默认国家。

国家代码选择适当的底层服务进行查找。目前,该包支持dkno国家,用于丹麦CVR API服务,dk用于丹麦VIRK服务,以及gb用于英国公报服务。如果给出无效的国家,则抛出InvalidCountryException

示例查找

use Worksome\CompanyInfo\Facades\CompanyInfo;

$companies = CompanyInfo::lookupName('worksome', 'dk');
// - or -
$companies = CompanyInfo::lookupNumber('37990485', 'dk');

查找方法返回与名称或编号匹配的公司数组,如果底层服务失败,则返回null

如果没有任何公司与给定的名称或编号匹配,则数组可能为空。

如果有匹配项(或只有一个),则每个匹配的公司都可以在数组中找到。

公司信息数据结构

公司信息是底层服务提供的数据的简化统一表示。

[
    'number'   => '37990485',
    'name'     => 'Worksome ApS',
    'address1' => 'Toldbodgade 35, 1.',
    'address2' => '',
    'zipcode'  => '1253',
    'city'     => 'København K',
    'country'  => 'DK',
    'phone'    => '71991931',
    'email'    => 'accounting@worksome.com',
]

number字段是dk国家的CVR编号,以及gb国家的公司编号。

Artisan

该包添加了一个用于在命令行执行查找的命令。这可能在配置服务时最有用,以检查您的访问是否正常。

php artisan company-info:lookup --name=worksome --country=dk
php artisan company-info:lookup --number=37990485 --country=dk

公司信息将以表格格式显示,除非指定了选项--json,否则将以格式化的JSON输出。

服务的文档

CVR API(DK)

有一个免费的丹麦CVR查找API服务(CVR API),无需从VIRK获取访问权限,但有限制速率,所以如果你请求很多,可能会突然得到null结果,这是由于CVR API的"QUOTA EXCEEDED"错误。您可以支付更大的配额,或者使用官方VIRK服务(见下文)。

VIRK(DK)

VIRK是官方的丹麦CVR查找服务。有关一些文档,请参阅这里

要获取丹麦VIRK服务的访问权限和凭证,请联系Erhvervsstyrelsen通过此页面:https://datacvr.virk.dk/artikel/system-til-system-adgang-til-cvr-data

公报(GB)

此包使用公报服务的公司搜索部分。

要获取对公报服务的访问权限和凭据,请参阅https://developer-specs.company-information.service.gov.uk/

测试

为了帮助您使用CompanyInfo编写测试,我们通过CompanyInfo::fake()方法提供模拟实现。

<?php

declare(strict_types=1);

use Worksome\CompanyInfo\Facades\CompanyInfo;

it('can perform company info lookup using faked response', function () {
    $lookup = [
        'name'    => 'worksome',
        'country' => 'dk',
    ];

    $response = [[
        'number'   => '37990485',
        'name'     => 'Worksome ApS',
        'address1' => 'Toldbodgade 35, 1.',
        'address2' => '',
        'zipcode'  => '1253',
        'city'     => 'København K',
        'country'  => 'DK',
        'phone'    => '71991931',
        'email'    => 'accounting@worksome.com',
    ]];

    CompanyInfo::fake($lookup, $response);

    $companies = CompanyInfo::lookupName('worksome', 'dk');

    expect($companies)->toHaveCount(1);

    expect($companies[0]->toArray())->toEqual($response[0]);
});

该包包含一系列功能测试以及phpstan分析和代码风格检查。

运行所有测试的方法如下

composer test

有关测试和代码风格检查的其他选项,请参阅composer.json

测试套件使用模拟的HTTP响应而不是调用实际的外部服务。模拟响应是实际服务响应的副本。

如果您想针对实际的外部服务运行测试,请将phpunit.xml.dist复制到phpunit.xml,并将其中的COMPANY_INFO_xxx变量更改为您获得的凭据。

变更日志

有关最近更改的更多信息,请参阅GitHub Releases

贡献

有关详细信息,请参阅CONTRIBUTING

安全漏洞

有关如何报告安全漏洞,请参阅我们的安全策略

鸣谢

许可证

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