Last modified on October 21, 2013 at 5:54 pm
<?php
function getSignature($stringToSign, $key) {
$binary_hmac = pack(“H40”, hash_hmac('sha1', trim($stringToSign), $key));
return base64_encode($binary_hmac);
}
$hostname = '[your virtual host].digitalchalk.com';
$service_name = 'v4';
$operation_name = 'doesUserExist';
// Get these 2 values from DigitalChalk
$public_key = '[your DC public key for API]';
$secret_key = '[your DC secret key for API]';
$timestamp = gmdate('c'); // RFC 8601 date format
// Fix for some PHP's that use +00:00 for GMT
$timestamp = str_replace('+00:00', 'Z', $timestamp);
$to_sign = $service_name . $operation_name . $timestamp;
$signature = getSignature($to_sign, $secret_key);
echo 'To Sign is now ' . $to_sign . '<br/>';
echo 'Timestamp is now ' . $timestamp . '<br/>';
echo 'Signature is now ' . $signature . '<br/>';
$auth = array(
'accessKey' => $public_key,
'timestamp' => $timestamp,
'signature' => $signature
);
$wsdl_opts = array(
'ssl' => array( 'allow_self_signed' => true ),
'trace' => 1,
'exceptions' => 1
);
$wsdl_url = 'https://' . $hostname . '/dc/api/v4.wsdl';
echo 'Using wsdl url of <a href=”' . $wsdl_url . '”>' . $wsdl_url . '</a></br>';
echo 'Calling operation “<b>' . $operation_name . '</b>”</br>';
$client = new SoapClient($wsdl_url, $wsdl_opts);
try {
$result = $client->doesUserExist(array('username' => '[username to check]', 'auth' => $auth));
# If the call had been getAvailableOfferings, it might have looked like this:
# $result = $client->getAvailableOfferings(array('auth' => $auth));
echo '<br/>RESULT</br>';
var_dump($result);
} catch(SoapFault $soapFault) {
echo '<br/>FAULT<br/>';
var_dump($soapFault);
$lastRequest = $client->__getLastRequest();
echo '<br/>LAST REQUEST</br>';
echo htmlentities($lastRequest);
echo '<br/>LAST RESPONSE</br>';
echo htmlentities($client->__getLastResponse());
}
echo '<br/>FUNCTIONS</br>';
var_dump($client->__getFunctions());
?>