호주 사업자 번호(ABN)를 검증하고 호주 사업자 등록 웹 서비스 API로 확인하는 PHP SDK입니다. 검증과 검증의 차이점은 다음과 같이 요약할 수 있습니다.
API(인증에만 필요)를 사용하려면 API 키로 사용되는 GUID를 받을 계정을 등록해야 합니다. 등록하고 나면 공식 데모를 사용하여 API를 사용해 볼 수 있습니다(이 SDK는 XML 대신 JSON 서비스를 사용한다는 점에 유의하세요).
SDK는 유효한 AbnResponse 및 NamesResponse 모델을 제공하기 위해 Symfony Serializer 및 Symfony Validator를 활용하여 ABR API에서 반환된 데이터를 역직렬화하고 유효성을 검사합니다. 즉, SDK로부터 응답을 받으면 유효하다는 것이 보장됩니다.
ABR의 유효하지 않은 응답은 세 가지 범주로 분류되며 예외로 처리됩니다.
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이 승인되려면 테스트를 거쳐 다음 기관에서 승인을 받아야 합니다.