ufo/client

该软件包已被弃用,不再维护。作者建议使用 uwkluis/client 软件包。

UwKluis API 的客户端包

0.6.5 2020-11-13 11:26 UTC

README

Latest Version on Packagist Software License Coverage Status Quality Score Total Downloads

本软件包可帮助连接到 UwKluis API。兼容 OpenAPI 的模式以及由 Swagger 生成的关于各个端点的文档可在此域根目录中找到。

结构

src/
src/Consumer
src/Exception
src/Organization
src/Traits
tests/

安装

通过 Composer

$ composer require ufo/client

用法

首先设置路由和控制器以处理 OAuth2 回调。以某种方式存储令牌响应的数据。

$config = new \Ufo\Client\Organization\Config(
    'registered-client-name',
    'registered-callback-url',
    1,
    'registered-client-secret',
    ['read-person-data', 'read-write-mortgages-data']
);
$guzzleClient = new GuzzleHttp\Client();
$organizationConnect = new Ufo\Client\Organization\Connect($config, $guzzleClient);
$accessTokenResponse = $organizationConnect->processResponse($psr7request);
$accessToken = $accessTokenResponse->getAccessToken();
$refreshToken = $accessTokenResponse->getRefreshToken();
$expiration = $accessTokenResponse->getExpiration();

将组织用户发送到 Oauth2 URL 以建立连接。将向回调路由发送请求作为响应。

/** @var $connect Ufo\Client\Organization\Connect */
echo '<a href="' . $connect->getAuthorizeUrl() . '">Connect</a>';

然后可以基于用户的电话号码和电子邮件地址向消费者发送邀请。您的客户端现在需要之前存储的访问令牌。结果响应对象将包含组织消费者 ID 和 UFO 消费者 ID(一个 UUID)。将这些存储起来以供将来请求使用。

$organizationConsumerId = 'JOHNSON_AMSTERDAM_001';
$consumerConnect = new \Ufo\Client\Consumer\Connect($config, $guzzleClient);
$connection = $consumerConnect->inviteConsumer('johnson@example.org', '0612345678');
$uwKluisConsumerId = $connection->getUwKluisConsumerId();

如果用户的组织已经建立了连接,则请求将失败,并抛出 \Ufo\Client\Exception\ConsumerConnectionConflict 异常,其中包含冲突的连接。这可以通过 \Ufo\Client\Exception\ConsumerConnectionConflict::getConflictingConnection() 提取。可以通过以下方式检索有关现有连接的信息,例如上述异常返回的信息:

 /** @var $consumerConnect \Ufo\Client\Consumer\Connect */
 /** @var $token \Lcobucci\JWT\Token */
 /** @var $uwKluisConsumerId \Ramsey\Uuid\UuidInterface */
 /** @var $connection \Ufo\Client\Consumer\Connect */
$connection = $consumerConnect->getConnectionStatus($token, $uwKluisConsumerId);

如果已向消费者发送了邀请,但他们无法接受因为它,要么电话号码或电子邮件地址不正确,要么他们找不到邀请,可以使用现有的连接 ID 发送新的邀请

/** @var $consumerConnect \Ufo\Client\Consumer\Connect */
/** @var $token \Lcobucci\JWT\Token */
/** @var $uwKluisConsumerId \Ramsey\Uuid\UuidInterface */
$consumerConnect->updateAndReinviteConsumer($token, $uwKluisConsumerId, 'newEmail@example.org', '0612345678');

首先使用组织的访问令牌、组织消费者 ID 和所需的消费者档案 JSON 模式版本请求当前消费者档案

$dossier = new \Ufo\Client\Consumer\Dossier($config, $guzzleClient);
$response = $dossier->getData(
    $accessToken,
    $uwKluisConsumerId,
    1
);
$data = $response['data'];

如果您想更新消费者档案数据,首先将检索到的数据与您自己的数据合并,然后使用 updateData() 方法发送该数据。

/** @var array $mergedData */
$dossier->updateData(
    $accessToken,
    $uwKluisConsumerId,
    $mergedData
    1,
    false
);

Webhooks

UwKluis API 提供了多个 webhook 选项,因此您的客户端可以在消费者连接更改时(例如,当消费者建立连接或更改授予的权限)或消费者档案更改时(无论是消费者还是其他客户端应用程序或组织)得到通知。在组织用户使用 OAuth2 建立连接后可以注册 webhook。ufo/webhook-client 软件包可以帮助在您的客户端应用程序中实现 webhook。

测试

$ composer test

贡献

有关详细信息,请参阅 CONTRIBUTINGCODE_OF_CONDUCT

安全性

如果您发现任何安全相关的问题,请通过 info@hypotheekbond.nl 发送电子邮件,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件