Gab*_*erg 15 php ruby-on-rails webhooks shopify
我有点像菜鸟,并且不怕承认,我正在研究这个项目作为学习经验,以便通过php和服务器端脚本/处理来改善.
我正试图想出一种方法来使用Shopify,并在每次从我的Shopify购物车完成订单时同时更新关闭服务器数据库.例如,有人从我的在线商店购买了一些东西,我希望它能够更新我的家庭数据库库存,以显示它现在少了一件商品.
我得出的结论是,最好的方法是设置一个webhook通知,将HTTP POST请求发送到我的服务器,然后我让我的服务器捕获POST并将其解析为XML.然后,我将通过将更新我的数据库的php脚本读取XML.
我没有问题的PHP,但我似乎无法弄清楚是如何抓住我的服务器上的webhook.Webhook要求我提供一个发送POST请求的URL,我的问题是你; 什么是网址?
我做了一些研究,发现你可以通过html,php,Access-Control-Allow-Origin等多种方式捕获POST请求.但是,由于我还是新手,我不知道真的明白如何做到这些.我尝试过使用HTML隐藏的动作表单,但似乎无法捕获XML.
我想要做的就是让webhook发送它的POST请求,并将其作为.xml捕获.这样我就可以在每天结束时读取xml,并相应地更新数据库.
如果您能想出更好或更简单的方法,请务必向我提出建议.我希望这是安全的,所以像Access-Control-Allow-Origin这样的方法是不可能的.
tl; dr:我在服务器上需要做什么来捕获webhook通知?我应该在服务器上使用什么脚本来提供给webhook?如何编写回调脚本?
Ben*_*lap 31
在http://example.com/whatever.php上创建公共URL ,其中example.com是您的域名,whatever.php是您可以编辑的PHP文件.
然后把这段代码放到whatever.php中:
<?php
$webhookContent = "";
$webhook = fopen('php://input' , 'rb');
while (!feof($webhook)) {
$webhookContent .= fread($webhook, 4096);
}
fclose($webhook);
error_log($webhookContent);
?>
Run Code Online (Sandbox Code Playgroud)
然后在Shopify管理员中,您可以创建一个新的webhook并将其指向http://example.com/whatever.php,当您点击Shopify管理员中的"测试webhook"按钮时,Shopify将POST到您上面的脚本,这应该反过来将webhook的主体写入PHP错误日志.