public function sendSoapRequest($message)
 {
     $client = new nusoap_client(HOTEL_ENDPOINT, false);
     $client->setCredentials(USERNAME, PASSWORD);
     $result = $client->send($message, HOTEL_ENDPOINT);
     return json_encode($result);
 }
 function UserAccountStatus()
 {
     $contents = '<GetAccountStatus xmlns="https://vesta.ecordia.com"><submission xmlns:a="http://optimizer.ecordia.com/types/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:ApiKey>' . $this->apiKey . '</a:ApiKey></submission></GetAccountStatus>';
     $contents = $this->client->serializeEnvelope($contents);
     $endpoint = 'https://vesta.ecordia.com/IUserManagement/GetAccountStatus';
     $results = $this->client->send($contents, $endpoint, 0, 180);
     $this->results = $results;
     $this->requestHasBeenExecuted = true;
 }
    function GetAlternateKeywords($keyword)
    {
        $contents = '
		<GetKeywordAlternates xmlns="https://vesta.ecordia.com">
			<request xmlns:a="http://optimizer.ecordia.com/types/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
				<a:ApiKey>' . $this->apiKey . '</a:ApiKey>
				<a:SeedTerm>' . $keyword . '</a:SeedTerm>
			</request>
		</GetKeywordAlternates>
		';
        $contents = $this->client->serializeEnvelope($contents);
        $endpoint = 'https://vesta.ecordia.com/IContentAnalysis/GetKeywordAlternates';
        $results = $this->client->send($contents, $endpoint, 0, 180);
        $this->results = $results;
        $this->requestHasBeenExecuted = true;
    }
function getStatus($refid)
{
    ini_set("soap.wsdl_cache_enabled", "0");
    //$mkey = '465A86C858B0293DD478D3D664E4B0CB18BC18C0332215CCF7D7C891CA25C3FAA4F5FC7CB187BFDA7233A720A747FB9FDEC866EB8D20D7C262287716F11C48A5';
    $mkey = 'CF82609ADB4A2352966649823625C1217BE486E1B23D4686621EFED077B0B42924B2098F0B36656BAC8B6008576BF05A254B244675B501DA3DF863311BF1BB75';
    $t_ref = $refid;
    //$t_ref = '12345678';
    //$p_id = '3996';
    $p_id = '3944';
    $hasval = $p_id . $t_ref . $mkey;
    $myHASH = hash("sha512", $hasval);
    $wsdlfile = "https://webpay.interswitchng.com/paydirect/services/webpayservice.svc?wsdl";
    $msg = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.interswitchng.com/" xmlns:web="http://schemas.datacontract.org/2004/07/WebPAY.Core.ServiceFramework.Contract"> <soapenv:Header/> <soapenv:Body> <ser:GetTransactionData> <ser:transactionQueryRequest> <web:Hash>' . $myHASH . '</web:Hash> <web:ProductId>' . $p_id . '</web:ProductId> <web:TransactionReference>' . $t_ref . '</web:TransactionReference> </ser:transactionQueryRequest> </ser:GetTransactionData> </soapenv:Body> </soapenv:Envelope>';
    //$s = new nusoap_client($wsdlfile);
    $s = new nusoap_client($wsdlfile, true);
    //$result = $s->call('GetTransactionData', $msg ,'http://services.interswitchng.com/','http://services.interswitchng.com/WebPayService/GetTransactionData');
    $do = $s->send($msg, 'http://services.interswitchng.com/WebPayService/GetTransactionData');
    $result = $s->responseData;
    $err = $s->getError();
    if ($err) {
        // Display the error
        echo '<h2>Network Timeout! </h2><pre></pre><b>Ooopsy! Kindly hit the button below and hit <b>accept/send/yes</b>  on all prompt request.</b><br /><br /><input type="button" value="Please Click here" onClick="document.location.reload(true);">';
    } else {
    }
    return $result;
}
    function GetAnalysis($title, $description, $content, $url)
    {
        $contents = '
		<GetAnalysis xmlns="https://vesta.ecordia.com">
			<request xmlns:a="http://optimizer.ecordia.com/types/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
				<a:ApiKey>' . $this->apiKey . '</a:ApiKey>
				<a:DocumentBody><![CDATA[' . $content . ']]></a:DocumentBody>
				<a:DocumentDescription><![CDATA[' . $description . ']]></a:DocumentDescription>
				<a:DocumentSampleUrl><![CDATA[' . $url . ']]></a:DocumentSampleUrl>
				<a:DocumentTitle><![CDATA[' . $title . ']]></a:DocumentTitle>
			</request>
		</GetAnalysis>
		';
        $contents = $this->client->serializeEnvelope($contents);
        $endpoint = 'https://vesta.ecordia.com/IContentAnalysis/GetAnalysis';
        $results = $this->client->send($contents, $endpoint, 0, 180);
        $this->results = $results;
        $this->requestHasBeenExecuted = true;
    }
 function GetSearchEngineLinks($terms, $searchType, $url)
 {
     $termText = '';
     foreach ($terms as $term) {
         $termText .= "<b:string><![CDATA[{$term}]]></b:string>";
     }
     $contents = '<GetSearchEngineResults xmlns="https://vesta.ecordia.com">
         <request xmlns:a="http://optimizer.ecordia.com/types/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
             <a:ApiKey>' . $this->apiKey . '</a:ApiKey>
             <a:SearchTerms xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">' . $termText . '</a:SearchTerms>
             <a:SearchType>' . $searchType . '</a:SearchType>
             <a:SubjectUrl><![CDATA[' . $url . ']]></a:SubjectUrl>
         </request>
     </GetSearchEngineResults>';
     $contents = $this->client->serializeEnvelope($contents);
     $endpoint = 'https://vesta.ecordia.com/IContentAnalysis/GetSearchEngineResults';
     $results = $this->client->send($contents, $endpoint, 0, 180);
     $this->results = $results;
     $this->requestHasBeenExecuted = true;
 }
function getHotelResultsJson($location, $num_adults, $checkin_date, $checkout_date, $num_rooms = 1)
{
    $message = file_get_contents(dirname(__FILE__) . "/sample_requests/HotelSearchAvailabilityReqNew.xml");
    $message = str_replace("{TARGET_BRANCH}", TARGET_BRANCH, $message);
    $message = str_replace("{LOCATION}", $location, $message);
    $message = str_replace("{NUM_ADULTS}", $num_adults, $message);
    $message = str_replace("{CHECKIN_DATE}", $checkin_date, $message);
    $message = str_replace("{CHECKOUT_DATE}", $checkout_date, $message);
    $message = str_replace("{NUM_ROOMS}", $num_rooms, $message);
    $client = new nusoap_client(HOTEL_ENDPOINT, false);
    $client->setCredentials(USERNAME, PASSWORD);
    $result = $client->send($message, HOTEL_ENDPOINT);
    return json_encode($result);
}
    public function operation($type, $ref, $price = NULL, $parameters = NULL)
    {
        try {
            $client = new nusoap_client($this->_file);
            $result = $client->send('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:mnop:acceptor:contract">
				<soapenv:Header>' . $this->_header . '</soapenv:Header>
				<soapenv:Body>
					<urn:cashManagementOperationRequest>
					 <urn:amount>' . (int) ((double) $price * 100) . '</urn:amount>
					 <urn:merchantSessionId></urn:merchantSessionId>
					 <urn:operationName>' . $type . '</urn:operationName>
					 <urn:operationSequence></urn:operationSequence>
					 <urn:operationOrigin></urn:operationOrigin>
					 <urn:requestVersion>' . $this->_requestVersion . '</urn:requestVersion>
					 <urn:operationParameters>' . $parameters . '</urn:operationParameters>
					 <urn:transactionReference>' . $ref . '</urn:transactionReference>
					</urn:cashManagementOperationRequest>
				</soapenv:Body>
			</soapenv:Envelope>');
        } catch (SoapFault $e) {
            echo $e->faultstring;
        } catch (Exception $e) {
            var_dump($e);
        }
        return $result;
    }
 /**
  * 
  * __run
  *
  * @access protected	
  * @param
  * @return	
  */
 protected function __run($xml_request, $soap_action, $GSD_err = FALSE)
 {
     //get service status
     $status_service = $this->CI->model_admin_system->check_service("OWS");
     $this->response_success = FALSE;
     $client = new nusoap_client($this->endpoint_url, true);
     $client->soap_defencoding = 'utf-8';
     $client->useHTTPPersistentConnection();
     //$proxy = $client->getProxy();
     $this->response = $client->send($xml_request, $this->base_request_file . $soap_action);
     if ($client->fault) {
         $this->response_success = FALSE;
     } else {
         // Check for errors
         $err = $client->getError();
         if ($err) {
             $this->response_error = $err;
             $this->response_success = FALSE;
             error_log("server encounter a problem while sending a request to " . $this->endpoint_url, 0);
             //if notification has not been sent
             if ($status_service->status == "active") {
                 $data["service"] = "OWS";
                 $data["status"] = "down";
                 $data["message"] = "server encounter a problem while sending a request";
                 $data["err"] = $err;
                 $email_cotent = $this->CI->load->view("email/OWS/server_system_health_error", $data, TRUE);
                 $this->CI->load->library('NY_emailer');
                 $this->CI->ny_emailer->set_message($email_cotent);
                 //notify administrators
                 $this->CI->ny_emailer->send("*****@*****.**", "SYSTEM NOTIFICATION - SERVICE OWS DOWN");
                 $this->CI->ny_emailer->send("*****@*****.**", "SYSTEM NOTIFICATION - SERVICE OWS DOWN");
                 $this->CI->model_admin_system->Update("OWS", "down");
             }
         } else {
             //if service is restore
             if ($status_service->status == "down") {
                 $data["service"] = "OWS";
                 $data["status"] = "active";
                 $data["message"] = "service OWS restored";
                 $email_cotent = $this->CI->load->view("email/OWS/server_system_health_error", $data, TRUE);
                 $this->CI->load->library('NY_emailer');
                 $this->CI->ny_emailer->set_message($email_cotent);
                 //notify administrators
                 $this->CI->ny_emailer->send("*****@*****.**", "SYSTEM NOTIFICATION - SERVICE OWS RESTORED");
                 $this->CI->ny_emailer->send("*****@*****.**", "SYSTEM NOTIFICATION - SERVICE OWS DOWN");
                 $this->CI->model_admin_system->Update("OWS", "active");
             }
             if (key_exists("!resultStatusFlag", $this->response["Result"])) {
                 if ($this->response["Result"]["!resultStatusFlag"] == "SUCCESS") {
                     $this->response_success = TRUE;
                 }
             }
             if (!$this->response_success) {
                 if (!key_exists("Text", $this->response["Result"])) {
                     $GSD_err = TRUE;
                 }
                 if ($GSD_err) {
                     if (key_exists("GDSError", $this->response["Result"])) {
                         $this->response_error = "<b>Error (code " . $this->response["Result"]["GDSError"]["!errorCode"] . ") </b><br />" . $this->response["Result"]["GDSError"]["!"];
                     } else {
                         $this->response_error = $this->response["Result"]["Text"]["TextElement"];
                     }
                 } else {
                     $this->response_error = $this->response["Result"]["Text"]["TextElement"];
                 }
             }
         }
     }
 }
<com:CityOrAirport Code="LON" />
</air:SearchOrigin>
<air:SearchDestination>
<com:CityOrAirport Code="AMS" />
</air:SearchDestination>
<air:SearchDestination>
<com:CityOrAirport Code="CPH" />
</air:SearchDestination>
<air:SearchDepTime PreferredTime="2014-04-15" />
</air:SearchAirLeg>
<air:AirSearchModifiers>
<air:PreferredProviders>
<com:Provider Code="1G" />
</air:PreferredProviders>
</air:AirSearchModifiers>
<com:SearchPassenger Code="ADT" />
</air:LowFareSearchReq>
</soapenv:Body>
</soapenv:Envelope>
EOM;
$client = new nusoap_client($endpoint, false);
$client->setCredentials($username, $password);
$result = $client->send($message, $endpoint);
file_put_contents("data/lowfaresearch_resp.json_08mar", json_encode($result));
//echo '<h2>Request</h2>';
//echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
//echo '<h2>Response</h2>';
//echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
// Display the debug messages
//echo '<h2>Debug</h2>';
//echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
 /**
  * Internal utility methods
  */
 private function call($service, $method, $params)
 {
     ini_set('memory_limit', '1024M');
     ini_set('max_execution_time', 1800);
     set_time_limit(0);
     $url = $this->wsdl_root . $service . '.asmx?wsdl';
     $timeout = 3000;
     $cache = new nusoap_wsdlcache($this->cache_dir, $timeout);
     $wsdl = $cache->get($url);
     // Set the WSDL
     if (is_null($wsdl)) {
         $wsdl = new wsdl($url, NULL, NULL, NULL, NULL, 0, $timeout, NULL, TRUE);
         $error = $wsdl->getError();
         $debug = $wsdl->getDebug();
         $wsdl->clearDebug();
         // Check for SOAP errors
         if (!empty($error)) {
             $this->errors[] = $error;
             if ($debug) {
                 $this->errors[] = '<pre>' . print_r($debug, TRUE) . '</pre>';
             }
             return FALSE;
         }
         $cache->put($wsdl);
     }
     // Send the SOAP request
     $params['securityPassword'] = $this->wsdl_keys[$service];
     $client = new nusoap_client($wsdl, 'wsdl', FALSE, FALSE, FALSE, FALSE, 0, $timeout);
     $client->setDebugLevel(0);
     // 0 - 9, where 0 is off
     $client->useHTTPPersistentConnection();
     if ($service == 'DataAccess' && $method == 'ExecuteStoredProcedure') {
         /*
          * See http://www.codingforums.com/archive/index.php/t-85260.html
          * and http://users.skynet.be/pascalbotte/rcx-ws-doc/nusoapadvanced.htm
          * for how to thwart the "got wsdl error: phpType is struct, but value is not an array"
          * error returned by nusoap when processing the response from $client->call()
          *
          * */
         $request = $client->serializeEnvelope(vsprintf('<ExecuteStoredProcedure xmlns="http://ibridge.isgsolutions.com/%s/">
                   <securityPassword>%s</securityPassword>
                   <name>%s</name>
                   <parameters>%s</parameters>
                   </ExecuteStoredProcedure>', array($service, $params['securityPassword'], $params['name'], $params['parameters'])));
         $response = $client->send($request, 'http://ibridge.isgsolutions.com/' . $service . '/' . $method, 0, $timeout);
     } else {
         $response = $client->call($method, $params);
     }
     $error = $client->getError();
     $debug = $client->getDebug();
     $client->clearDebug();
     // Check for SOAP errors
     if (!empty($error)) {
         $this->errors[] = $error;
         if ($debug) {
             $this->errors[] = '<pre>' . print_r($debug, TRUE) . '</pre>';
         }
         return FALSE;
     }
     // Process response
     $response = $response[$method . 'Result'];
     $data = NULL;
     if (strpos($response, '<') == 0) {
         // Some ISGweb methods return strings instead of XML
         libxml_use_internal_errors(TRUE);
         $response = preg_replace('/(<\\?xml[^?]+?)utf-16/i', '$1utf-8', $response);
         // Change encoding string to UTF8
         $response = utf8_encode($response);
         $response = $this->strip_invalid_xml($response);
         $obj = simplexml_load_string($response);
         $data = $response;
         $error = libxml_get_errors();
         // Check for XML parsing errors
         if (!empty($error)) {
             foreach ($error as $e) {
                 $this->errors[] = $e;
             }
             libxml_clear_errors();
             return FALSE;
         }
         $data = $this->object_to_array($obj);
         // Check for ISGweb errors (e.g. invalid data input, failure of service, etc.)
         if (array_key_exists('Errors', $data)) {
             $error = $data['Errors'];
             foreach ($error as $e) {
                 $this->errors[] = $e['@attributes']['Description'];
             }
             return FALSE;
         }
     } else {
         $data = $response;
     }
     return $data;
 }