Accès au Webservice

L'API Webservice AquaO se base sur une API Rest avec authentification JWT.
Une SDK est fournie pour faciliter votre intégration.
Celle-ci sera mise à jour régulièrement et sera disponible sur cet espace.

Télécharger la SDK
Version 0.2.0 du 28/02/2017

Wiki

Utilisation

Initialisation

INPUT :



        require_once 'AquaoWebservice.php';

        $AqW = new AquaoWebservice('http://topbiz.fr/', 'API_USER', 'API_PWD');

        

OUPUT :

En cas d'échec d'authentification retour "false"

Récupération des produits

INPUT :



        $AqW->getProducts();

        

OUTPUT :


   (
    [products] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [productid] => AQ123654 // Le champ va être renommé SKU
                    [name] => Forfait soin 2 heures
                    [body] => Loremipsum
                    [active] => 1
                    [is_present] => 1
                    [months_validity] => 0
                    [prices] => Array
                        (
                            [0] => Array
                                (
                                    [price] => 10
                                    [product_id] => 1
                                    [availability_start_date] => 2017-01-10T00:00:00+00:00
                                    [availability_end_date] => 2017-01-10T00:00:00+00:00
                                )

                        )

                )

            [1] => Array
                (
                    [id] => 2
                    [productid] => AQ123656 // Le champ va être renommé SKU
                    [name] => Forfait soin 3 heures
                    [body] => Loremipsum
                    [active] => 1
                    [is_present] => 1
                    [months_validity] => 0
                    [prices] => Array
                        (
                            [0] => Array
                                (
                                    [price] => 25
                                    [product_id] => 2
                                    [availability_start_date] => 2017-01-01T00:00:00+00:00
                                    [availability_end_date] => 2017-06-10T00:00:00+00:00
                                )

                            [1] => Array
                                (
                                    [price] => 20
                                    [product_id] => 2
                                    [availability_start_date] => 2017-06-10T00:00:00+00:00
                                    [availability_end_date] => 2017-12-10T00:00:00+00:00
                                )

                        )

                )

        )

)
    

Envoi des commandes

INPUT :



$orders = [

        'orders'=>[[

            'orderid' => '123456',
            "date"=>"2016-01-05T00:00:00",
            "siteid"=>"123",
            "price"=>10,
            "lines" =>	[
                            [

                                "price"=>10,
                                "productid"=>"123456789", // Le champ va être renommé SKU
                                "barcode"=>"W12541W2654ADF" // Le format doit-être normé

                            ]
                        ]
        ]
        ]

    ];


        $AqW->postOrders($orders);

        

OUTPUT :


   (
    [OrderResponse] => Array
        (
            [123456] => Array
                (
                    [0] => success
                )

        )

    )
    

En cas d'erreurs, un descriptif pour chaque commande est renvoyé
Le lien entre commandes et clients est en cours de développement.

Récupération des dictionnaires de données

INPUT :



        $AqW->getDictionaries('paiements'); // Valeurs possibles définies en dessous

    

Dictionnaires disponibles :

  • paiements : liste des modes de paiments
  • civilities : liste des civilités
  • countries : liste des payes au format ISO

OUTPUT :


 Array
(
    [dictionaries] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [active] => 1
                    [entity] => paiements
                    [code] => CB
                    [label] => Carte bleue
                )

        )

)
    

SDK fournie



/* --------------------------------------------------- *\
			AquaO Webservice
			Release : 0.2.0
			Date	: 16-01-2016
			Author	: AquaO - Topbiz Software
\* --------------------------------------------------- */

class AquaoWebservice{

	private $token;
	private $url;
	private $username;
	private $password;

	private $internal_url = [

		'auth'          	=>	'api/users/token',
		'getProducts'   	=>	'api/products',
		'postOrders'    	=>	'api/orders/post',
		'getDictionaries'   =>	'api/dictionaries',

	];



	public function __construct( $url , $username, $password ){

		$this->url      =	$url;
		$this->username	=	$username;
		$this->password	=	$password;

		$this->auth();

        return($this->token?true:false);

	}

	/* --------------------------------------------------- *\
					Authentification
				INPUT : [ username, password ]
				OUPUT : Jeton (Format : eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImV4cCI6MTQ4NDczMzMzN_VCGCe030.zAYYM6yPrhjvXLQkUhYdxC5mx1fQT0Fpl7Pg)
	\* --------------------------------------------------- */
	private function auth(){


		$headerHttp = [

			'Accept: application/json',
			'Content-Type: application/json',
		];

		$aParameters = [
			'username' => $this->username ,
			'password' => $this->password ,

		];



		$response	=	$this->curl(__FUNCTION__, $headerHttp, $aParameters);

		if($response && $response['success'] == true){

			$this->token = $response['data']['token'];

		}



	}


	/* --------------------------------------------------- *\
					Liste de tous les produits
			disponibles pour la société de l'utilisateur

			AUTHORIZATION 	: Jeton
			ACCEPT			: application/json
			CONTENT TYPE	: application/json

			INPUT 			: None
			OUPUT			: PHP Array

	\* --------------------------------------------------- */

	public function getProducts(){

			$aParameters = false;


		$headerHttp = [
				'Authorization: Bearer '.$this->token,
				'Accept: application/json',
				'Content-Type: application/json',
		];

		$response	=	$this->curl(__FUNCTION__, $headerHttp, $aParameters);


		return $response;

	}

	/* --------------------------------------------------- *\
			Liste des valeurs définies en dictionnaires

			AUTHORIZATION 	: Jeton
			ACCEPT			: application/json
			CONTENT TYPE	: application/json

			INPUT 			: Type d'entité (Valeurs possibles : 'paiements','countries','civilities')
			OUPUT			: PHP Array

	\* --------------------------------------------------- */

	public function getDictionaries($entity){

			$aParameters = false;


		$headerHttp = [
				'Authorization: Bearer '.$this->token,
				'Accept: application/json',
				'Content-Type: application/json',
		];

		$response	=	$this->curl(__FUNCTION__ , $headerHttp, $aParameters, $entity );


		return $response;

	}


	/* --------------------------------------------------- *\
					Poster une commande


			AUTHORIZATION 	: Jeton
			ACCEPT			: application/json
			CONTENT TYPE	: application/json

			INPUT 			: PHP Array (1 ou plusieurs commandes)
			OUPUT			: PHP Array -> Erreur ou success /Commandes

	\* --------------------------------------------------- */

	public function postOrders($aParameters){

		$response = false;

		if($aParameters && is_array($aParameters)){
			$headerHttp = [
					'Authorization: Bearer '.$this->token,
					'Accept: application/json',
					'Content-Type: application/json',
			];
			echo json_encode($aParameters);
			$response	=	$this->curl(__FUNCTION__, $headerHttp, $aParameters);

		}
		return $response;



	}

	/* --------------------------------------------------- *\
					GENERIQUE CURL
	\* --------------------------------------------------- */
	private function curl( $action, $headerHttp = false, $postFields =false, $paramsGet = false){


		$ch = curl_init();
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_URL, $this->url . (substr($this->url,0,-1)=='/'?'':'/') .$this->internal_url[ $action ] . ($paramsGet ? '/' . $paramsGet : '') );
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		if($headerHttp)
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headerHttp);
		curl_setopt($ch, CURLOPT_POST, 1);
		if($postFields)
			curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields) );
		curl_setopt($ch, CURLOPT_HEADER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,  false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  false);
		$response = curl_exec($ch);
		curl_close($ch);

		return (is_array(json_decode($response, true))?json_decode($response, true):false);

	}



}