Получение строки ошибки в SABER HOTEL API: действие, указанное в EbxmlMessage, не существует

Я получаю строковый код ошибки типа -Action, указанный в EbxmlMessage, не существует

Может ли кто-нибудь помочь мне, что мне не хватает.

$OTA_HotelAvailRQ = new stdClass;
$OTA_HotelAvailRQ->AvailRequestSegment = new stdClass;
$OTA_HotelAvailRQ->AvailRequestSegment->ReturnHostCommand = true;
$OTA_HotelAvailRQ->AvailRequestSegment->TimeStamp = '2015-11-12T11:22:06';
$OTA_HotelAvailRQ->AvailRequestSegment->Version = '2.2.1';

$client = new SoapClient("http://webservices.sabre.com/wsdl/tpfc/OTA_HotelAvailLLS2.2.1RQ.wsdl", [
"trace"      => 1,
"exceptions" => 0,
"cache_wsdl" => 0
]);

$client->__setSoapHeaders(new SoapHeader('NAMESPACE','Auth', [
'UserName'=>'',
'Password'=>'',
'SystemId'=> [
'_'=>'DATA',
'Param'=>'PARAM'
]
], false));

print_r( $client->OTA_HotelAvailRQ($OTA_HotelAvailRQ));
echo "<p>Request :".htmlspecialchars($client->__getLastRequest()) ."</p>";
echo "<p>Response:".htmlspecialchars($client->__getLastResponse())."</p>";

0

Решение

Я не вижу, какое действие вы используете MessageHeader, но правильным является не OTA_HotelAvailRQ, а OTA_HotelAvailLLSRQ


РЕДАКТИРОВАТЬ:

Позвольте мне начать с того, что имя пользователя должно использоваться только в SessionCreate для получения нового сеанса, с этого момента вам нужно будет использовать возвращаемый BinarySecurityToken. Это будет действовать для той же среды, пока не истечет сеанс или он не будет закрыт с помощью SessionClose. Давайте представим, что у меня есть это в переменной $ bst.

То, что я сделал ниже, это не то, что я мог бы проверить, так что может быть что-то не так, плюс, мои знания php весьма ограничены (имейте это в виду) 🙂

Итак, вам нужно 2 основных элемента в мыльном заголовке, messageHeader и Security. Безопасность — самое простое, давайте начнем с этого.

Безопасность:

$auth = array(
'BinarySecurityToken'=>$bst
);
$authHeader = new SoapHeader('http://schemas.xmlsoap.org/ws/2002/12/secext','Security',$auth,false);

Заголовок сообщения:

$partyId=array(
'PartyId'=>''
);

$messageData=array(
'Timestamp'=>date('Y-m-d')
);

$messageHeader=array(
'ConversationId'=>'',
'From'=>$partyId,
'To'=>$partyId,
'CPAId'=>'',
'Service'=>'OTA_HotelAvailLLSRQ',
'Action'=>'OTA_HotelAvailLLSRQ',
'MessageData'=>$messageData
);

$messageHeaderHeader = new SoapHeader('http://www.ebxml.org/namespaces/messageHeader','MessageHeader',$messageHeader,false);

Наконец присоединитесь к ним и установите это:

$headers=array();
$headers[]=$authHeader;
$headers[]=$messageHeaderHeader;

$soap_client->__setSoapHeaders($headers);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]