该库可用于连接 HMRC API https://developer.service.hmrc.gov.uk/api-documentation 并对其进行操作。
对于像Hello World这样的全局API,您可以使用HelloWorldRequest类来处理API调用。
<?php
$ request = new HMRC Hello HelloWorldRequest ;
// Response is instant of HMRCResponse class
$ response = $ request -> fire ();
return $ response -> getBody ();
用于应用程序限制的 API 调用,例如 Hello Application。首先使用 ServerToken 类设置服务器令牌,然后您可以使用 HelloApplicationRequest 类调用 API。
<?php
// ServerToken is singleton so please use getInstance() method to get an instance and then use set method on it
HMRC ServerToken ServerToken:: getInstance ()-> set ( $ _GET [ ' server_token ' ]);
$ request = new HMRC Hello HelloApplicationRequest ;
$ response = $ request -> fire ();
return $ response -> getBody ();
对于用户限制的API调用,请参见下一节。
了解这一点的最简单方法是在该库的根目录下使用php -S localhost:8080
命令运行本地服务器。然后在浏览器上导航到 http://localhost:8080/examples/index.php。不要忘记在 example/config.php 文件中设置凭据。
<?php
$ clientId = ' clientid ' ;
$ clientSecret = ' clientsecret ' ;
$ serverToken = ' servertoken ' ;
您可以通过创建 HMRC Oauth2 Provider 并重定向到授权 URL 来获取访问令牌(例如,请参阅 example/oauth2/create-access-token.php)。
<?php
$ callbackUri = " http://localhost:8080/examples/oauth2/callback.php " ;
$ _SESSION [ ' client_id ' ] = $ _GET [ ' client_id ' ];
$ _SESSION [ ' client_secret ' ] = $ _GET [ ' client_secret ' ];
$ _SESSION [ ' callback_uri ' ] = $ callbackUri ;
$ _SESSION [ ' caller ' ] = " /examples/index.php " ;
$ provider = new HMRC Oauth2 Provider (
$ _GET [ ' client_id ' ],
$ _GET [ ' client_secret ' ],
$ callbackUri
);
$ scope = [ HMRC Scope Scope:: VAT_READ , HMRC Scope Scope:: HELLO , HMRC Scope Scope:: VAT_WRITE ];
$ provider -> redirectToAuthorizationURL ( $ scope );
用户在 HMRC 授权页面授予授权后,会重定向回$callbackUri
,即上例中的 callback.php 文件。
回调.php的内容
<?php
$ provider = new HMRC Oauth2 Provider (
$ _SESSION [ ' client_id ' ],
$ _SESSION [ ' client_secret ' ],
$ _SESSION [ ' callback_uri ' ]
);
// Try to get an access token using the authorization code grant.
$ accessToken = $ provider -> getAccessToken ( ' authorization_code ' , [
' code ' => $ _GET [ ' code ' ]
]);
HMRC Oauth2 AccessToken:: set ( $ accessToken );
header ( " Location: /examples/index.php " );
exit ;
您需要使用HMRCOauth2AccessToken
类来获取和设置访问令牌。执行请求的类将从此类获取访问令牌。
获取访问令牌并将其保存在HMRCOauth2AccessToken
中后,我们就可以开始调用用户限制的 API。例如,以下是对 hello 用户端点的请求。
<?php
$ request = new HMRC Hello HelloUserRequest ;
$ response = $ request -> fire ();
return $ response -> getBody ();
在默认模式下,该库将与 HMRC 的sandbox
环境进行对话。如果你想使用实时环境,你可以通过Environment
单例来调用它。
<?php
HMRC Environment Environment:: getInstance ()-> setToLive ();
非常欢迎贡献者帮助开发这个库,所有重要的方法都应该有单元测试。
要运行测试,只需在终端上调用composer test
命令即可。