オーストラリア法人番号 (ABN) を検証し、オーストラリア法人登録 Web サービス API でそれらを検証するための PHP SDK。検証と検証の違いは次のように概説できます。
API を使用するには (検証の場合にのみ必要)、API キーとして使用される GUID を受け取るアカウントを登録する必要があります。登録すると、公式デモを使用して API を試すことができます (この SDK は XML ではなく JSON サービスを使用することに注意してください)。
SDK は、有効な AbnResponse モデルと NamesResponse モデルを提供するために、Symfony Serializer と Symfony Validator を利用して、ABR API から返されたデータを逆シリアル化および検証します。これは、SDK から応答を受け取った場合、その応答が有効であることが保証されることを意味します。
ABR からの無効な応答は 3 つのカテゴリに分類され、例外として処理されます。
AbrConnectionException
: ABR に接続できないか、ABR が予期しない応答を返しましたInvalidAbnException
: ABN が無効です (つまり、検証が失敗しました)AbnNotFoundException
: ABN は有効ですが、ビジネスに割り当てられていません (つまり、検証に失敗しました) $ composer require hyraiq/abnlookup
services.yaml
では、ABR GUID をAbnClient
に渡し、 AbnClientInterface
にAbnClient
登録する必要があります。
HyraAbnLookupAbnClientInterface : ' @HyraAbnLookupAbnClient '
HyraAbnLookupAbnClient :
arguments :
$abnLookupGuid : " %env(ABN_LOOKUP_GUID)% "
その後、 AbnClientInterface
コントローラー/サービスに直接挿入できます。
class VerifyAbnController extends AbtractController
{
public function __construct (
private AbnClientInterface $ abnClient ,
) {
}
// ...
}
Symfony を使用していない場合は、ABN クライアントを自分でインスタンス化する必要があります。これはサービスコンテナに登録することも、直接使用することもできます。最小限のオプションで Symfony Serializer と Validator を作成するために、 Dependencies
クラスにいくつかのヘルパーを提供しました。
use Hyra AbnLookup Dependencies ;
use Hyra AbnLookup AbnClient ;
$ abrGuid = ' <insert your ABR GUID here> '
// Whichever http client you choose
$ httpClient = new HttpClient ();
$ denormalizer = Dependencies :: serializer ();
$ validator = Dependencies :: validator ();
$ abnClient = new AbnClient ( $ denormalizer , $ validator , $ httpClient , $ abrGuid );
AbnClient
設定したら、個々の ABN を検索できます。これにより、不必要な API リクエストを防ぐために、API を呼び出す前に ABN が検証されることに注意してください。
$ abn = ' 12620650553 ' ;
try {
$ abnResponse = $ abnClient -> lookupAbn ( $ abn );
} catch ( AbrConnectionException $ e ) {
die ( $ e -> getMessage ())
} catch ( InvalidAbnException ) {
die ( ' Invalid ABN ' );
} catch ( AbnNotFoundException ) {
die ( ' ABN not found ' );
}
echo $ abnResponse -> abn ; // 12620650553
echo $ abnResponse -> entityName ; // Blenktech PTY LTD
echo $ abnResponse -> status ; // Active
ABR を名前で検索して、検索用語に一致する登録ビジネスのリストを取得することもできます。
$ namesResponse = $ abnClient -> lookupName ( ' Hyra iQ ' );
echo sprintf ( ' Received %d results ' , count ( $ namesResponse -> names ));
foreach ( $ namesResponse -> names as $ name ) {
echo sprintf ( ' %s: %s ' , $ name -> abn , $ name -> name );
}
自動テストでは、ABR からの応答を模擬するために、 AbnClient
StubAbnClient
に置き換えることができます。テスト中に有効な ABN と無効な ABN の両方を取得するために使用できるAbnFaker
もあります。
use Hyra AbnLookup Stubs AbnFaker ;
use Hyra AbnLookup Stubs StubAbnClient ;
$ stubClient = new StubAbnClient ();
$ stubClient -> lookupAbn ( AbnFaker :: invalidAbn ()); // InvalidAbnException - Note, the stub still uses the validator
$ stubClient -> lookupAbn ( AbnFaker :: validAbn ()); // LogicException - You need to tell the stub how to respond to specific queries
$ abn = AbnFaker :: validAbn ();
$ stubClient -> addNotFoundAbns ( $ abn );
$ stubClient -> lookupAbn ( $ abn ); // AbnNotFoundException
$ abn = AbnFaker :: validAbn ();
$ mockResponse = new AbnResponse ();
$ response -> abn = $ abn ;
$ response -> abnStatus = ' active ' ;
$ response -> abnStatusEffectiveFrom = new DateTimeImmutable ( ' 2 years ago ' );
$ response -> entityTypeCode = ' PRV ' ;
$ response -> entityTypeName = ' Australian Private Company ' ;
$ stubClient -> addMockResponse ( $ mockResponse );
$ abnResponse = $ stubClient -> lookupAbn ( $ abn ); // $abnResponse === $mockResponse
すべての貢献を歓迎します!テストと CI プロセスをローカルで実行するには、docker をインストールする必要があります。これらはプル リクエストに対しても実行され、失敗した場合はファイル ビューに GitHub アノテーションとして追加されます。
# First build the required docker container
$ docker compose build
# Then you can install composer dependencies
$ docker compose run php ./composer.phar install
# Now you can run tests and other tools
$ docker compose run php make (fix | psalm | phpstan | phpunit)
PR が受け入れられるには、テストでカバーされ、次の機関によって受け入れられる必要があります。