我一直试图通过Shopify管理部分设置Shopify webhook(documentation here)。到目前为止,我还没有能够使用多种方法获取测试webhook中发送的任何数据,但我知道它正在发送,因为我创建了一个Requestbin并且已经看到了数据。
我在Stackoverflow上找到了这段代码。
header('Access-Control-Allow-Origin: *');
$postdata = file_get_contents("php://input");
$file = "log.txt";
$current = file_get_contents($file);
$current .= $postdata;
file_put_contents($file, $current);
echo $current;
到目前为止,它是我能够用来实际看到任何JSON的唯一代码。但我不想把JSON写入" log.txt"每次触发webhook时都会生成文件。但是一旦我尝试删除或调整代码,我就不再看到任何JSON。似乎我必须将$postdata
写入文件,然后检索内容以获取数组。
是否可以访问JSON而无需先将其写入另一个文件?
答案 0 :(得分:0)
首先,我的基本思维过程对于webhook的工作方式存在缺陷。
header('Access-Control-Allow-Origin: *');
$postdata = file_get_contents("php://input");
$file = "log.txt";
$current = file_get_contents($file);
$current .= $postdata;
file_put_contents($file, $current);
echo $current;
此代码将file_get_contents("php://input")
的内容写入文本文件所需的原因是因为Shopify webhook发送的POST请求仅短暂点击页面。刷新页面后,您将丢失所有POST数据......我知道这似乎很明显。这就是说我需要一种方法来确定JSON Shopify发送的是否在我的服务器上工作正常。所以我创造了这个...
$json = json_decode(file_get_contents("php://input"));
file_put_contents('./realRequests.txt', $json->id . "\n", FILE_APPEND);
这样做是每次Shopify触发webhook时捕获订单的ID,并将其转换为请求文件中的新行。这样你知道你可以从shopify中恢复工作代码。