s-patompong / hmrc-api-php
Requires
- php: ^7.1
- guzzlehttp/guzzle: ^6.3
- league/oauth2-client: ^2.4
Requires (Dev)
- phpunit/phpunit: ^7.5
This package is auto-updated.
Last update: 2024-09-22 22:34:46 UTC
README
这个库可以用来连接并操作HMRC API https://developer.service.hmrc.gov.uk/api-documentation。
如何使用
对于全局API,例如Hello World,您可以使用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调用,请参阅下一节。
用户受限API调用
了解这一点的最简单方法是使用命令 php -S localhost:8080
在此库的根目录下运行本地服务器。然后,在浏览器中导航到 https://:8080/examples/index.php。别忘了在 examples/config.php 文件中设置凭证。
<?php $clientId = 'clientid'; $clientSecret = 'clientsecret'; $serverToken = 'servertoken';
您可以通过创建HMRC Oauth2提供者并重定向到授权URL(例如,请参阅 example/oauth2/create-access-token.php)来获取访问令牌。
<?php $callbackUri = "https://: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文件。
callback.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;
您需要使用 \HMRC\Oauth2\AccessToken
类来获取和设置访问令牌。执行请求的类将从此类中获取访问令牌。
获取访问令牌并将其保存在 \HMRC\Oauth2\AccessToken
中后,我们就可以开始调用用户受限API。例如,这里是对hello用户端点的请求。
<?php $request = new \HMRC\Hello\HelloUserRequest; $response = $request->fire(); return $response->getBody();
在沙箱和实时环境之间切换
在默认模式下,此库将与HMRC的沙箱环境通信。如果您想使用实时环境,您可以通过 Environment
单例调用它。
<?php \HMRC\Environment\Environment::getInstance()->setToLive();
开发和贡献
贡献者非常欢迎帮助开发此库,所有重要的方法都应该有单元测试。
要运行测试,只需在终端中调用 composer test
命令即可。