ircykk/ezwm

EZWM API

v1.0.0 2022-09-08 16:47 UTC

This package is auto-updated.

Last update: 2024-09-16 01:47:49 UTC


README

用于NFZ EZWM服务的API客户端 ezwm.nfz.gov.pl,文档(PDF): nfz.gov.pl.

这个仓库不会经常更新,但欢迎贡献。

安装

通过Composer

composer require ircykk/ezwm

使用

如何创建会话(获取认证令牌和会话ID)的示例

<?php

use Ircykk\Ezwm\Auth\authToken;
use Ircykk\Ezwm\Auth\session;
use Ircykk\Ezwm\AuthService\AuthClientFactory;
use Ircykk\Ezwm\AuthService\AuthService;
use Ircykk\Ezwm\AuthService\Credentials;

include_once __DIR__.'/vendor/autoload.php';

const EZWM_ENV_TEST = false;
const EZWM_SOAP_TRACE = false;

// credentials
$login = '*********';
$password = '********';
$operatorId = '***/******';
$domain = '**';
$type = '***';

// create credentials object
$credentials = new Credentials(
    $login,
    $password,
    $operatorId,
    $domain,
    $type
);

$authClientFactory = new AuthClientFactory();
$authClient = $authClientFactory->build(EZWM_ENV_TEST);
$authService = new AuthService($credentials, $authClient);

try {
    $sessionResponse = $authService->createSession();

    /** @var session $session */
    $session = $sessionResponse['session'];
    /** @var authToken $authToken */
    $authToken = $sessionResponse['authToken'];

    $sessionId = $session->getId();
    $authTokenId = $authToken->getId();

    echo "Session ID: $sessionId; Auth Token ID: $authTokenId";
} catch (Exception $e) {
    echo html_entity_decode($e->getMessage());
}

从wsdl/xsd构建类

仓库包含预构建的类,但如果需要,您也可以自行构建。

从模式生成服务类

生成器将为命名空间 Ircykk\Ezwm\ServiceBrokerIrcykk\Ezwm\Auth 生成从wsdl模式生成的类。

  1. 安装composer依赖项
    composer install
  2. 运行生成器
    php bin/wsdl2php.php

更多详情: https://github.com/wsdl2phpgenerator/wsdl2phpgenerator

从xsd模式生成文档类

生成器将为命名空间 Ircykk\Ezwm\Schema 从xsd模式生成类。

  1. 安装composer依赖项
    composer install
  2. 运行生成器
    bash bin/xsd2php.sh

您可以在 bin/config.yml 中调整生成器配置。
更多详情: https://github.com/goetas-webservices/xsd2php

构建后修复

由于会话在SOAP响应头中返回,我们需要在 Ircykk\Ezwm\Auth\AuthenticationService 类的 login 方法中进行调整。我们需要将 $outputHeaders 添加到参数中,以便我们可以从响应头中获取会话ID。

/**
 * @param loginRequest $request
 * @param null $outputHeaders
 * @return string
 */
public function login(loginRequest $request, &$outputHeaders = null)
{
   return $this->__soapCall('login', array($request), null, null, $outputHeaders);
}