在php中接收JSON并使用数据

时间:2016-03-20 18:22:36

标签: php json shopify webhooks

我一直试图通过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而无需先将其写入另一个文件?

1 个答案:

答案 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中恢复工作代码。