s-patompong/hmrc-api-php

v1.2.0 2019-04-07 06:07 UTC

README

Build Status StyleCI

这个库可以用来连接并操作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 命令即可。