Shopify : créer une application et utiliser l’API REST sur sa boutique

Shopify est maintenant bien installé et connu pour sa simplicité de mise en place. Une fois que votre boutique est en ligne, c’est très simple à utiliser surtout si vous souhaitez vraiment vous concentrer sur vos produits et pas la maintenant de votre serveur. De plus, vous n’avez pas besoin de vous occuper de la sécurité et des mises à jour du CMS comme c’est par exemple le cas avec PrestaShop ou WooCommerce.

Bon bien évidemment tout cela a un coût, mais pour quelqu’un qui veut se lancer facilement dans le e-commerce, c’est un avantage non-négligeable pour commencer. Vous pouvez directement vous concentrer sur le contenu de votre boutique et l’amélioration de vos produits. Pas besoin de penser à installer la mise à jour de PHP et de votre serveur sous Linux. C’est la tranquillité au prix d’un abonnement mensuel et d’un pourcentage de commission sur votre chiffre d’affaires.

Si vous êtes arrivés ici, c’est que vous connaissez de toute façon déjà très bien Shopify et on va pouvoir passer au vif du sujet. Comment démarrer avec l’API Shopify pour récupérer les données de votre boutique ? Dans ce tutoriel, je vais rester très simple avec du basique, mais c’est une bonne base pour débuter avec l’API de Shopify. Elle permet de faire beaucoup de choses et dans certains contextes ou besoin cette API sera très utile.

La documentation de l’API Shopify

La première chose à faire est donc d’aller faire un tour sur la documentation de l’API Shopify qui est, je trouve, vraiment bien faite. C’est d’autant plus important que cette API est très fournie en termes de fonctionnalités et de possibilités donc pour s’y retrouver, c’est bien d’avoir cette documentation complète sous le coude. Chose à savoir, au moment où j’écris ces lignes, pour éviter les erreurs 429 Too Many Requests, l’api REST de Shopify est limitée à 40 appels par application, par boutique et par minute.

J’ai choisi d’utiliser l’API REST de Shopify que je vais utiliser avec Curl comme ça, c’est facile à transposer dans un autre langage de programmation. Ici je vais bien sûr utiliser PHP et Laravel mais ce sera facile de le faire un Python par exemple le concept restera le même pour se connecter et récupérer les données avec Curl. D’ailleurs, avec ce que nous allons faire dans ce tutoriel, la réponse renvoie sur certains endpoint énormément de choses. En-tout-cas de ce côté-là, rien à redire, c’est facile de s’y retrouver avec les exemples de réponse donc merci aux équipes de Shopify. J’ai vu bien pire. N’oubliez pas que vous pouvez profiter de l’offre Shopify 1€ pour démarrer votre ecommerce tranquillement !

Activer l’API via une application sur votre boutique Shopify

Pour accéder aux données de notre boutique Shopify via l’API REST il va falloir créer une application. Le chemin pour atteindre le menu qui nous intéresse est le suivant :

Paramètres > Applications et canaux de vente > Développeurs d’applications > Créer une application

On commence par lui donner un nom et je vous conseille d’en faire un explicite pour ne pas vous perdre si vous créez plusieurs applications avec des droits différents sur l’API. Une fois que vous avez renseigné le nom en dessous vous avez normalement l’identité et le mail de l’un des administrateurs de la boutique qui est automatiquement rempli.

Une fois dans votre application après avoir validé le formulaire précédent allez dans Identifiants d’API. Dans cette partie, il va falloir récupérer deux informations :

  • La Clé API
  • La Clé secrète de l’API

Faites attention de bien garder ces deux clés API dans un lieu sûr. Il ne faut surtout pas les exposer à l’extérieur dans le futur pour des questions de sécurité comme vous en doutez sûrement. Maintenant, on va pouvoir créer la troisième partie de notre accès à l’API via une application Shopify avec un Jeton d’accès.

Il faut maintenant cliquer sur Configurer les champs de l’API Admin. Cette nouvelle étape va vous permettre d’octroyer des droits sur ce jeton d’accès. Il y a une gestion très fine des droits et je préfère vous le dire tout de suite, prudence. Vu que Shopify vous donne cette possibilité de gérer finement les droits sur les accès et possibilités de l’API, profitez en. Il faut limiter les autorisations à ce que vous avez vraiment besoin. Si c’est juste de la récupération de données que vous voulez faire pour par exemple les envoyer vers un CRM qui centralise tout votre business, n’activez pas les write pour rien. Faites donc bien attention à ce que vous cochez pour limiter le périmètre d’action de votre clé API. Si vos clés API venaient à fuiter dans la nature, l’attaquant ne pourra pas directement détruire votre boutique via l’API …

Une fois que vous avez fait votre choix sur les autorisations que vous accordez à cette clé API Shopify, vous pouvez sauvegarder. Tout est presque prêt et vous pouvez alors cliquer sur Installer l’application.

Une fois que c’est fait vous allez alors arriver sur une nouvelle page qui va vous donner un avertissement par rapport aux autorisations que vous avez donné. Vous avez bien compris les droits que vous avez donné à cette clé API et vous pouvez alors valider. Pour en terminer avec cette partie, vous devez cliquer sur le lien suivant dans le menu : Jeton d’accès à l’API de l’interface administrateur. Cette page devrait alors vous afficher la chose suivante :

Attention, comme le message l’indique, vous ne pourrez voir ce jeton qu’une seule fois donc mettez le bien en lieu sûr, sinon il faudra tout recommencer le processus que nous avons fait juste au-dessus. Maintenant que l’on a toutes les informations nécessaires du côté de Shopify, on est prêt pour faire nos premiers appels à l’API. Dans ce tutoriel, je vais faire un script dans une commande Laravel dans un nouveau projet pour me simplifier la vie.

Utiliser l’API REST de Shopify avec Curl et PHP

Comme je vous le disais au début de cet article, l’avantage d’utiliser l’API REST et Curl, c’est que vous pouvez transposer ça facilement dans n’importe quel langage de programmation. Ici, je vais le faire en PHP, mais si vous voulez le faire en Python ou Node.js ça ne sera pas très difficile à adapter, car le processus de connexion est le même et la réponse de l’API aussi. Il faudra juste adapter l’implémentation dans votre langage de programmation favori.

Avant de vous donner du code, il faudra récupérer un dernier élément sur votre boutique Shopify. il s’agit de l’URL interne quand vous venez de créer votre boutique et qui est utilisé dans l’administration de celle ci. Il faut récupérer une information dans cette URL que je vais vous mettre en gras, il y a deux manière de l’avoir facilement :

https://admin.shopify.com/store/boutiquezonetuto
https://boutiquezonetuto.myshopify.com

Cette partie va nous être utile pour se connecter à l’API de Shopify. Pour la suite, je vais volontairement faire du code simple qu’il faudra bien sûr optimiser dans une belle mise en production, mais c’est pour que tout le monde puisse bien comprendre directement comment faire facilement un appel à l’API de Shopify avec un GET. Je vais partir du principe que vous voulez récupérer les dernières commandes de votre boutique.

Si vous voulez faire autre chose, il faudra simplement changer l’endpoint, mais la connexion à l’API se déroulera exactement de la même façon. Tout est dans la documentation de l’API Shopify que je vous ai mis au début de cet article. Je commence donc par renseigner les valeurs que l’on vient de créer dans mon script PHP :

$apiKey = 'zdRV2HBsMD5BtTBczbcoxde1rY4G';
$apiSecret = 'cn3yr51I2vsDXKu40KtjcRPBdl1d';
$accessToken = 'shpat_l8fpiciBnNdO1p7PMJxUanptKzIX';
$shopName='boutiquezonetuto';

Une fois que nos variables sont bien en place on peut maintenant se connecter très simplement à l’API de Shopify avec Curl :

$url = "https://{$shopName}.myshopify.com/admin/api/2023-10/orders.json?status=any";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
 	'Content-Type: application/json',
'X-Shopify-Access-Token: ' . $accessToken,
));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$ordersArray = json_decode($response, true);
curl_close($ch);

Pour ceux qui débutent et se demandent ce qu’il se passe dans ce script voici le détail :

  1. Définition de l’URL de l’API :
    • $url = "https://{$shopName}.myshopify.com/admin/api/2023-10/orders.json?status=any";
    • Cette ligne crée une URL pour accéder à l’API des commandes de Shopify, en utilisant le nom de la boutique ($shopName). L’URL cible l’API version 2023-10 et demande toutes les commandes (status=any).
  2. Initialisation de cURL :
    • $ch = curl_init($url);
    • Cette ligne initialise une nouvelle session cURL avec l’URL de l’API Shopify.
  3. Configuration des options cURL :
    • curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'X-Shopify-Access-Token: ' . $accessToken,));
    • Cette ligne configure les en-têtes HTTP nécessaires pour la requête. Elle inclut le type de contenu (JSON) et le jeton d’accès Shopify ($accessToken) pour l’authentification.
  4. Configuration du retour de la réponse :
    • curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    • Cette ligne indique à cURL de retourner la réponse au lieu de l’afficher directement.
  5. Exécution de la requête cURL :
    • $response = curl_exec($ch);
    • Exécute la requête cURL et stocke la réponse dans $response.
  6. Décodage de la réponse JSON :
    • $ordersArray = json_decode($response, true);
    • Cette ligne convertit la réponse JSON en un tableau PHP. L’option true indique que le JSON doit être converti en tableau associatif.
  7. Fermeture de la session cURL :
    • curl_close($ch);
    • Cette ligne ferme la session cURL pour libérer les ressources.

J’ai envie de vous faciliter un peu la vie donc voici comment exploiter très facilement les données de ce tableau renvoyé par l’API de Shopify avec un foreach dans PHP :

foreach ($ordersArray['orders'] as $order) {
    // Informations de base de la commande
    echo "Date de création: " . $order['created_at'] . "\n";
    echo "Dernière mise à jour: " . $order['updated_at'] . "\n";
    echo "Statut financier: " . $order['financial_status'] . "\n";
    echo "Statut d'exécution: " . $order['fulfillment_status'] . "\n";
    echo "Prix total: " . $order['total_price'] . "\n";

    // Adresse de livraison
    echo "Nom du destinataire: " . $order['shipping_address']['name'] . "\n";
    echo "Adresse principale: " . $order['shipping_address']['address1'] . "\n";
    echo "Ville: " . $order['shipping_address']['city'] . "\n";
    echo "Code postal: " . $order['shipping_address']['zip'] . "\n";
    echo "Pays: " . $order['shipping_address']['country'] . "\n";

    // Détails des produits
    foreach ($order['line_items'] as $item){
        echo "Nom du produit: " . $item['name'] . "\n";
        echo "Quantité: " . $item['quantity'] . "\n";
        echo "Prix unitaire: " . $item['price'] . "\n";
        echo "SKU: " . $item['sku'] . "\n";
        echo "Fournisseur: " . $item['vendor'] . "\n";
    }

    foreach ($order['discount_codes'] as $discount) {
        echo "Code de réduction: " . $discount['code'] . "\n";
        echo "Montant de la remise: " . $discount['amount'] . "\n";
    }
}

Vous savez maintenant comment créer des clés et appeler l’API de Shopify avec Curl. Nous verrons dans un prochain tutoriel comment gérer la pagination, car l’API ne va pas vous renvoyer directement toutes les commandes en un seul appel pour des questions de performances. Il va donc falloir gérer cela, mais ce sera pour un prochain tutoriel !

Laisser un commentaire