Передаю в SoapClient параметр 123, а в трассировке получаю такой параметр: "MTIz" и из-за этого преобразования весь WSDL не работает!
Передаю в SOAPUI то, что показывает в трассировке и получаю аналогичную ошибку! При этом, стойкое ощущение, что если бы не подобное преобразование, то работало бы нормально!
В SOAP UI все четко: ОДно замечание - когда вставляю в SOAPUI ссылку на WSDL, то запросы автоматом идут на https://ssd.marinet.ru/ssd/LiteService.svc/cert, и стоит мне убрать /cert из урл, то сразу работает! Пытался на NODEJS сделать, там ошибка с SSL (iss-овская ошибка):
Ошибка HTTP 403.7 — Forbidden Страница, к которой вы пытаетесь обратиться, требует, чтобы веб-браузер имел SSL-сертификат клиента, признаваемый веб-сервером. ... ....
Эта ошибка означает, что для доступа к запрошенному URL-адресу нужно использовать протокол SSL. Сертификат клиента используется для подтверждения ваших прав как законного пользователя этого ресурса. С вопросами о том, как получить корректный сертификат для использования на веб-сайте, обращайтесь к администратору сайта
КОД NODEJS:
var url = 'http://ssd.marinet.ru/ssd/LiteService.svc?wsdl';
var soap = require('soap');
var express = require('express');
var args = {name: 'value'};
soap.createClient(url, function(err, client) {
console.log(client)
console.log(`
==========================================
`)
client.PreSignDocument(args, function(err, result) {
console.log(result);
});
});
Работаю с (собственным) dss-lite сервером КриптоПро
Сам WSDL можно здесь посмотреть: https://ssd.marinet.ru/ssd/LiteService.svc?wsdl
Вот код:
$url = 'https://ssd.marinet.ru/ssd/LiteService.svc?wsdl';
$document =123;
$rawCertificate ='123';
$soap_params = [
'soap_version' => SOAP_1_1,
'trace' => 1,
'exceptions' => true,
'verifypeer' => false,
'verifyhost' => false,
'cache_wsdl' => WSDL_CACHE_NONE,
'encoding'=>'UTF-8',
'connection_timeout'=>15000,
'style'=>SOAP_RPC,
'uri'=>'http://schemas.xmlsoap.org/soap/envelope/', // "urn:xmethods-delayed-quotes", // Пространство имен SOAP-метода
"soapaction" => "urn:xmethods-delayed-quotes#getQuote", // HTTP-заголовок SOAPAction для SOAP-метода
"use" => SOAP_ENCODED,
"location" => $url
];
var_dump( $soap_service);
$soap_service = new SoapClient( $url, $soap_params );
echo '<h1>FUNCTIONS:</h1>';
print_r($soap_service->__getTypes ());
echo '<h1>Response:</h1>';
$res = $soap_service->PreSignDocument([ 'document' => $document,
'rawCertificate' => $rawCertificate,
'signatureType' => 'PDF',
'signatureParams' => array()
]);
var_dump($res);
}catch(Exception $e){
echo '<h1>err:</h1>';
echo $soap_service->__getLastRequest();
die($e->getMessage());
}
На выходе:
FUNCTIONS:
Array ([0] => struct ArrayOfKeyValueOfSignatureParamsstring1Iy7z97I {
KeyValueOfSignatureParamsstring1Iy7z97I KeyValueOfSignatureParamsstring1Iy7z97I; }
[1] => struct KeyValueOfSignatureParamsstring1Iy7z97I { SignatureParams Key; string Value; }
[2] => string SignatureType
[3] => string SignatureParams
[4] => struct DSSPreSignResponse { base64Binary HashValue; string СacheObjectId; }
[5] => struct DssFault { string Message; }
[6] => struct DSSLitePolicy { ArrayOfSignatureType AllowedSignatureTypes; ArrayOfTspService TspServices; }
[7] => struct ArrayOfSignatureType { SignatureType SignatureType; }
[8] => struct ArrayOfTspService { TspService TspService; }
[9] => struct TspService { string Name; string Title; string Url; }
[10] => struct PreSignArgs { base64Binary document; base64Binary rawCertificate; ArrayOfKeyValueOfSignatureParamsstring1Iy7z97I signatureParams; SignatureType signatureType; }
[11] => struct PostSignArgs { string cacheObjectId; ArrayOfKeyValueOfSignatureParamsstring1Iy7z97I signatureParams; SignatureType signatureType; base64Binary signatureValue; base64Binary signedHashValue; }
[12] => struct EnhanceSignatureArgs { base64Binary document; ArrayOfKeyValueOfSignatureParamsstring1Iy7z97I signatureParams; SignatureType signatureType; }
[13] => struct PreSignDocument { base64Binary document; SignatureType signatureType; base64Binary rawCertificate; ArrayOfKeyValueOfSignatureParamsstring1Iy7z97I signatureParams; }
[14] => struct PreSignDocumentResponse { DSSPreSignResponse PreSignDocumentResult; }
[15] => struct PostSignDocument { string cacheObjectId; base64Binary signedHashValue; base64Binary signatureValue; SignatureType signatureType; ArrayOfKeyValueOfSignatureParamsstring1Iy7z97I signatureParams; }
[16] => struct PostSignDocumentResponse { base64Binary PostSignDocumentResult; }
[17] => struct EnhanceSignature { base64Binary document; SignatureType signatureType; ArrayOfKeyValueOfSignatureParamsstring1Iy7z97I signatureParams; }
[18] => struct EnhanceSignatureResponse { base64Binary EnhanceSignatureResult; }
[19] => struct GetPolicy { }
[20] => struct GetPolicyResponse { DSSLitePolicy GetPolicyResult; }
[21] => struct PreSignDocumentRest { PreSignArgs preSignArguments; }
[22] => struct PreSignDocumentRestResponse { DSSPreSignResponse PreSignDocumentRestResult; }
[23] => struct PostSignDocumentRest { PostSignArgs postSignArgs; }
[24] => struct PostSignDocumentRestResponse { base64Binary PostSignDocumentRestResult; }
[25] => struct EnhanceSignatureRest { EnhanceSignatureArgs enhanceSignatureArgs; }
[26] => struct EnhanceSignatureRestResponse { base64Binary EnhanceSignatureRestResult; }
[27] => struct GetPolicyRest { }
[28] => struct GetPolicyRestResponse { DSSLitePolicy GetPolicyRestResult; }
[29] => int char
[30] => duration duration
[31] => string guid
)
Response:
err:
MTIzPDFMTIz Требуемый объект не найден.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть сайт (на php) на котором я хочу реализовать загрузку/показ фото и видеоК каким мерам безопасности я должен придерживаться и что для этого...
Подскажите реализацию следующей задачиТребуется выполнение что-то наподобие cron либо же как то добавлять новую крон задачу средствами php на сайт
В чём суть же проблемы я установил laravel,обновил composer и что же я вижу?