Кодировка параметров SOAP WSDL из PHP

229
08 июня 2018, 09:00

Передаю в 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 Требуемый объект не найден.
READ ALSO
Защита сайта при загрузки фото и видео

Защита сайта при загрузки фото и видео

Есть сайт (на php) на котором я хочу реализовать загрузку/показ фото и видеоК каким мерам безопасности я должен придерживаться и что для этого...

227
Добавление новых задач (cron)

Добавление новых задач (cron)

Подскажите реализацию следующей задачиТребуется выполнение что-то наподобие cron либо же как то добавлять новую крон задачу средствами php на сайт

207
Laravel ошибка в создании нового проекта

Laravel ошибка в создании нового проекта

В чём суть же проблемы я установил laravel,обновил composer и что же я вижу?

176
Проблемы с кодировкой при шифровании

Проблемы с кодировкой при шифровании

Использую данный класс для шифрования

203