Skip to content

Commit

Permalink
Update fidelite.php
Browse files Browse the repository at this point in the history
  • Loading branch information
hiboutik committed Jan 22, 2019
1 parent fcee846 commit 461d2e1
Showing 1 changed file with 37 additions and 52 deletions.
89 changes: 37 additions & 52 deletions examples/fidelite.php
Expand Up @@ -11,82 +11,67 @@
***********************************************************************************************************************
*
* Ce script permet de définir les points fidélité a la clôture d'une vente en fonction du prix des produits vendus selon la règle 1 euro = 1 point
* API Key & Email : SETTINGS -> USERS -> Click on the wrench symbol.
* API Key & Email : Cliquez sur le A en haut à droite de votre compte Hiboutik
*
*/

//error_reporting(E_ALL);

$account = ""; //libellé de votre compte | http://www.logiciel-caisse-gratuit.com/ou-trouver-mon-numero-de-compte-ainsi-que-le-libelle-de-mon-compte/
$user = ""; //adresse email
$key = ""; //clé d'accès à l'API

require __DIR__.'/../../HiboutikAPI/src/Hiboutik/HiboutikAPI/autoloader.php';

require 'vendor/autoload.php';
//API REST Hiboutik
$hiboutik_account = "";
$user = "";
$pass = "";

try {

//on vérifie qu'on récupère bien la variable order_id par POST (URL de callback sur ventes)
if (!isset($_POST['order_id'])) {throw new Exception("Please provide a valid order_id", 75009);} else {$order_id = $_POST['order_id'];}
$hiboutik = new \Hiboutik\HiboutikAPI($hiboutik_account, $user, $pass);

//est ce qu'on a tous les éléments permettant d'accéder à l'API ?
if (empty($account) OR empty($user) OR empty($key)) throw new Exception("Please provide a valid account, user & key", 75009);
if (!isset($_POST['sale_id'])) {print("Please provide a valid sale_id");exit;} else {$sale_id = $_POST['sale_id'];}

//instanciation de l'API Hiboutik
$hiboutik = new \Hiboutik\HiboutikAPI($account, $user, $key);
$result = $hiboutik->get("/sales/$sale_id");
if ($hiboutik->request_ok) {

//récupération des informations associées a la vente
$order_details = $hiboutik->getHiboutik("sales/$order_id");
//on récupère tous les produits de la vente
$line_items = $result[0]['line_items'];

//cas où il n'est pas possible d'accéder à l'API
if ($hiboutik->error)
//pour chaque ligne de la vente
foreach ($line_items as $valeur)
{
$hiboutik_response = $hiboutik->response;
throw new Exception("$hiboutik_response", 75009);
}

//on vérifie qu'on a bien un résultat pour notre appel à l'API
if (count($order_details) <> "1")
{
$hiboutik_response = "Should obtain only one result but we fond : " . count($order_details);
throw new Exception("$hiboutik_response", 75009);
}

$line_items = $order_details[0]->line_items;

//récupération des lignes de la vente
foreach ($line_items as $cle => $valeur)
{
$detail_commande_id = $valeur -> detail_commande_id;
$quantity = $valeur -> quantity;
$product_price = $valeur -> product_price;
$line_item_id = $valeur['line_item_id'];
$quantity = $valeur['quantity'];
$product_price = $valeur['product_price'];

//calcul des points | règle 1 euro = 1 point
$points = $quantity * $product_price;
//éventuellement gestion de l'arrondi car les points ne peuvent être que des entiers (integer)

$hiboutik = new \Hiboutik\HiboutikAPI($account, $user, $key);

//mise à jour des points des produits de la vente
$data = array(
"line_item_attribute" => "points",
"new_value" => $points,
);
$create_a_sale = $hiboutik->putHiboutik("sale_line_item/$detail_commande_id", $data);

}

} catch (Exception $e) {
$message_retour = $e->getMessage();
if ($e->getCode() === 75009) {
header("HTTP/1.1 500 $message_retour");
echo "Error : $message_retour";
} else {
error_log($message_retour, 0);
}
$update_points = $hiboutik->put("/sale_line_item/$line_item_id", $data);
}

header('Content-type: application/json; charset=utf-8');
$message_retour["alerte"] = "
<div class=\"alert alert-info alert-dismissable\">
<button aria-hidden=\"true\" data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>
<strong>Fidélité appliquée avec succès</strong>
</div>
";
echo json_encode($message_retour);
exit();



?>
}
else
{
print 'An error has occured';
if (isset($result['details']['error_description'])) {
print ': '.$result['details']['error_description'];
} else {
print ': '.$result['error_description'];
}
}

0 comments on commit 461d2e1

Please sign in to comment.