Comment intercepter la requête HTTP POST envoyé par un Shopify Webhook
Je suis un peu un noob, et n'a pas peur d'admettre que je suis en train de travailler sur ce projet comme une expérience d'apprentissage pour obtenir mieux avec php et serverside script/ing manipulation.
J'essaie de trouver un moyen d'utiliser Shopify et, simultanément, de mettre à jour un serveur de base de données chaque fois qu'une commande est exécutée à partir de mon Shopify panier. Ainsi, par exemple, que quelqu'un achète quelque chose de ma boutique en ligne, je veux mettre à jour ma maison de bases de données d'inventaire pour montrer qu'il a maintenant moins un élément.
Je suis venu à la conclusion que la meilleure façon de le faire serait d'installation d'un webhook notification qui envoie une requête HTTP POST pour mon serveur, j'en serais mon serveur de capture de la POSTE et de l'analyser dans un fichier XML. Je vais donc lire le fichier XML via un script php qui va mettre à jour ma base de données.
Je n'ai pas de problème avec le php, mais ce que je n'arrive pas à comprendre, c'est comment attraper le webhook sur mon serveur. Webhook me demande une URL pour envoyer la requête POST, ma question est, quelle est l'url?
J'ai fait quelques recherches et trouvé que vous pouvez attraper le POSTE demande un certain nombre de façons, par le html, php, Access-Control-Allow-Origin, etc. Cependant, depuis que je suis encore nouveau à cela, je n'ai pas vraiment comprendre exactement comment faire cela. J'ai essayé avec un code HTML cachés forme d'action mais n'arrivais pas à obtenir pour attraper le XML.
Tout ce que je veux faire est d'avoir le webhook envoyer sa requête POST, et l'ont pris comme une .xml. Afin que je puisse lire le fichier xml à la fin de chaque journée, et mettre à jour la base de données en conséquence.
Si vous pouvez penser à une meilleure ou la plus simple façon de le faire, par tous les moyens s'il vous plaît, donnez-moi vos suggestions. J'aimerais que ce soit sécurisée, afin que les méthodes telles que Access-Control-Allow-Origin sont hors de question.
tl;dr:
Que dois-je faire sur mon serveur pour attraper un webhook de notification? Ce script que j'ai sur mon serveur pour donner à la webhook? Comment puis-je écrire le script de callback?
- Quel environnement/cadre êtes-vous travailler? Vous mentionnez PHP mais pas de précisions sur la webapp cadre (Gâteau, Zend, etc.)
- Shopify (qui est Ruby on Rails) et MySQL, j'ai littéralement veux juste un script pour créer un fichier xml que je peux lire à l'aide de php.
Vous devez vous connecter pour publier un commentaire.
Créer une URL publique à http://example.com/whatever.php, où example.com est votre nom de domaine et whatever.php est un fichier PHP que vous pouvez modifier.
Puis placez ce code dans whatever.php:
Puis dans le Shopify admin, vous pouvez créer un nouveau webhook et point à http://example.com/whatever.php, et lorsque vous cliquez sur "test webhook" dans la Shopify admin, Shopify sera publier sur votre script ci-dessus, qui devrait à son tour écrire le corps de la webhook de votre erreur PHP journal.
Désolé, je n'ai pas assez de réputation pour poster des commentaires, mais ici, c'est le contenu du lien mort d'Edward Ocampo-Gooding réponse:
Il semble que vous êtes plus familier avec le PHP, donc je vais répondre en fonction de cela.
Vous avez besoin d'un script PHP/page accessible comme une URL publique que peuvent prendre les données envoyées en POST HTTP Shopify vous envoie et la transformer en la forme de votre base de données veut.
Voici un exemple de ce qu'est le script PHP qui pourrait ressembler à: http://wiki.shopify.com/WebHook#PHP_Example_w.2F_SimpleXML_.28PHP_5.2B.29
Pour répondre à votre question à propos de l'URL, c'est le point de terminaison sur votre serveur qui va gérer la réception de la webhook. C'est assez simple à mettre en place avec la plupart des frameworks web, il faut juste gérer le demande et d'y répondre avec une réponse 200 OK.
Une fois que vous avez un point de terminaison installé sur votre serveur, vous pouvez créer le webhook sur shopify avec l'URL étant le point de terminaison sur le serveur web.
Shopify webhook n'a pas transmis de données à l'aide de la commune de requête GET ou POST méthode. Vous pouvez utiliser la méthode fopen() en PHP et passer dans le php://input stream.
Supposons que vous créez un webhook pour chariot de mise à jour et de définir des URL http://example.com/cart_update_hook.php puis placez le code suivant dans cart_update_hook.php pour obtenir les données envoyées par shopify webhook.