Как передать параметр типа xsi в PHP SoapClient - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь использовать API, основанный на мыльном клиенте https://developer.signicat.com/documentation/signing/get-started-with-signing/full-flow-example/

Есть два способа его получения: вам нужно загрузить документ, и он вернет вам SDS ID, эта часть работает нормально

2 - тогда вам нужно использовать этот SDS ID во второй части API, чтобы создать метод запроса знака с именем createRequest (),

Здесь я получаю проблему, я передал все параметрыно все еще получаю ошибку на одном параметре, который является xsi: type, я не уверен, как передать этот параметр из массива php.

Вот пример XML

 <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ref-sds-id="090520195vbxk9uuw4dks9tjm2pmpy7sx3na397xz6qclxtepaslnb00q7" send-to-archive="false" xsi:type="sds-document">
                        <sign-text-entry/>
                        <description>Loan contract.pdf</description>
                    </document>

здесь xsi: type= "sds-document" эта часть вызывает проблему

Мой код:

<code>    $url = 'https://preprod.signicat.com/ws/documentservice-v3?wsdl';

    $soap_setting = array(
            "trace" => 1,  

            'features' => SOAP_SINGLE_ELEMENT_ARRAYS + SOAP_USE_XSI_ARRAY_TYPE 
        );


    $client = new SoapClient($url,$soap_setting);


    $subject_type = $client->__getTypes();
    $functions = $client->__getFunctions();



    $subject = array(
        'national-id'=> '198003010306',
        'first-name'  => 'Oskar',
        'last-name'   => 'Johansson',
        'email'       => 'kamran@creativerays.com'
    );

    $notification = array(
        'recipient' => 'http://localhost/sign/php/',
        'type' => 'URL',
        'message' => 'Please seign ${taskUrl}',
        'header'=> 'Test',
        'notification-id' => '001'
    );
    $sdsdocument = array(
        'ref-sds-id' => '100520193oz5vev0onyueul43ury4vz8g1hsnhr7w69pcwnoan96ojbtbb',
        'send-to-archive' => true,
        'description'=> 'test',
        'sign-text-entry'=> 'test',
        'xsi:type' => 'sds-document'

    );
    $documentaction = array(
        'document'=> $sdsdocument,

        'type'=> 'sign',
        'optional'=> true,
        'send-result-to-archive'=> true
    );
    $tasks = array(
        'subject'=> $subject,
        'document-action'=> $documentaction,
        'notification'=> $notification,
        'on-task-postpone'=> 'http://localhost/sign/php/?requestId=${requestId}&taskId=${taskId}&status=taskpostponed',
        'on-task-complete'=> 'http://localhost/sign/php/?requestId=${requestId}&taskId=${taskId}&status=taskcomplete',
        'on-task-cancel'=> 'http://localhost/sign/php/?requestId=${requestId}&taskId=${taskId}&status=taskcancelled',
        'configuration'=> 'default',
        'signature' =>array('method'=>'nbid-sign'),
        'id'=> 'task00001',
        'bundle'=> False
    );

    $request = array(
        'language'=> 'en',
        'task'=> $tasks
    );



    $tparam = array(
        'service'=>'demo',
        'password'=>'Bond007',
        'request' =>$request
    );


    $create = $client->createRequest($tparam);
    echo '<pre>';
    print_r($create);
    echo $client->__getLastRequestHeaders();
    echo '
';

Ошибка, которую я получаю: Неустранимая ошибка: Uncaught Исключение SoapFault: [soap: Client] Не удалось зарегистрировать новый запрос действия документа: Документ с идентификатором null должен иметь подтип archive-document, sds-document,документ результата, документ загрузки или предоставленный документ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...