Я пытаюсь использовать 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,документ результата, документ загрузки или предоставленный документ