Dit voorbeeld toont hoe je een SOAP client aanmaakt vertrekkend uit een PHP-site en gebruikmakend van MercatorWebService. Dit voorbeeld is onderworpen aan volgende regels:
- Het is geleverd als "as is" en zonder support
- Het moet exception-handling (try-catch-finally) bevatten, om te vermijden dat de webservice niet beschikbaar zou zijn.
Indien bij het uitvoeren van de PHP-client code de foutmelding "Fatal error: Class 'SoapClient' not found" verschijnt, volstaat het om de ; te verwijderen, dit bevindt zich voor "extension=php_soap.dll" in het php.ini-bestand.
Een factuur aanmaken in het Factu-journal:
<?php
class SecurityInfo
{
public $SecureKey;
public function __construct($key)
{
$this->SecureKey = $key;
}
}
$sha1 = ... ;
$url = "http://testws.mercator.eu/MercatorWebService.asmx?wsdl";
$client = new SoapClient($url, array("trace" => 1, "exception" => 0));
$auth = new SecurityInfo($sha1);
$header = new SoapHeader("http://mercator.eu/", "SecurityInfo", $auth, false);
$result = $client->__soapCall("BillingEngineInitNew", array(array('typeVA' => "V", 'type' => 1, 'journal' => "Factu")), NULL, $header);
if ($result->BillingEngineInitNewResult->LastError<>null)
{
echo "BillingEngineInitNew : " . $result->BillingEngineInitNewResult->LastError;
return;
}
// à partir d'ici, il est obligatoire d'appeler la méthode BillingEngineClose
$uniqueId = $result->BillingEngineInitNewResult->Value;
$result = $client->__soapCall("BillingEngineApplyCustomerSupplier", array(array('uniqueId' => $uniqueId, 'id_cli_or_fou' => "INEO52209")));
if ($result->BillingEngineApplyCustomerSupplierResult->LastError<>null)
{
echo "BillingEngineApplyCustomerSupplier : " . $result->BillingEngineApplyCustomerSupplierResult->LastError;
}
else
{
$result = $client->__soapCall("BillingEngineAppendLine", array(array('uniqueId' => $uniqueId)));
if ($result->BillingEngineAppendLineResult->LastError<>null)
{
echo "BillingEngineAppendLine : " . $result->BillingEngineAppendLineResult->LastError;
}
else
{
$rowIndexLigne = $result->BillingEngineAppendLineResult->Value;
$result = $client->__soapCall("BillingEngineInsertItem2", array(array('uniqueId' => $uniqueId, 'idItem' => "03102001", 'rowIndexLigne' => $rowIndexLigne, 'defaultQ' => 5)));
if ($result->BillingEngineInsertItem2Result->LastError<>null)
{
echo "BillingEngineInsertItem2 : " . $result->BillingEngineInsertItem2Result->LastError;
}
else
{
$result = $client->__soapCall("BillingEngineUpdateAmounts", array(array('uniqueId' => $uniqueId)));
if ($result->BillingEngineUpdateAmountsResult->LastError<>null)
{
echo "BillingEngineUpdateAmounts : " . $result->BillingEngineUpdateAmountsResult->LastError;
}
else
{
$result = $client->__soapCall("BillingEngineSave", array(array('uniqueId' => $uniqueId)));
if ($result->BillingEngineSaveResult->LastError<>null)
{
echo "BillingEngineSave : " . $result->BillingEngineSaveResult->LastError;
}
else
{
$result = $client->__soapCall("BillingEngineSavedNumber", array(array('uniqueId' => $uniqueId)));
if ($result->BillingEngineSavedNumberResult->LastError<>null)
echo "BillingEngineSavedNumber : " . $result->BillingEngineSavedNumberResult->LastError;
else
echo "La vente Factu " . $result->BillingEngineSavedNumberResult->Value . " a été créée !";
}
}
}
}
}
$result = $client->__soapCall("BillingEngineClose", array(array('uniqueId' => $uniqueId)));
if ($result->BillingEngineCloseResult->LastError<>null)
echo "BillingEngineClose : " . $result->BillingEngineCloseResult->LastError;
?>