worksome / company-info
查找公司信息
Requires
- php: ^8.2
- illuminate/contracts: ^10.0 || ^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- guzzlehttp/guzzle: ^7.8
- larastan/larastan: ^2.6
- nunomaduro/collision: ^7.0 || ^8.1
- orchestra/testbench: ^8.0 || ^9.0
- pestphp/pest: ^2.33
- pestphp/pest-plugin-laravel: ^2.0
- worksome/coding-style: ^2.8
README
从公共服务中查找公司信息。
如果你的应用程序需要有关特定公司的信息,那么有一些公共服务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
参数,它必须是支持的国家之一,或者省略或留空以使用配置的默认国家。
国家代码选择适当的底层服务进行查找。目前,该包支持dk
和no
国家,用于丹麦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)。有关更多信息,请参阅许可证文件。