Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Client de MercatorWebService sur base de PHP

0000002266     -      03/12/2016

Cet exemple montre comment créer un client SOAP à partir d'un site écrit en PHP et utilisant MercatorWebService. Cet exemple est soumis aux réserves suivantes :

  • il est fourni "as is" et sans support
  • il convient d'y ajouter une gestion des exceptions (try catch) afin de gérer les cas où le web service n'est pas ou plus disponible.

Si, lors de l'exécution du code du client PHP, l'erreur "Fatal error: Class 'SoapClient' not found" survient, il suffit de retirer les ; se trouvant devant "extension=php_soap.dll" dans le fichier php.ini.


Créer une facture dans le journal Factu :

 

<?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;
?>