2016-03-20 16 views
0

Shopifyの管理セクションでShopifyウェブフック(documentation here)を設定しようとしています。これまでは、複数のメソッドを使用してテストWebHookで送信されたデータを取得することはできませんでしたが、Requestbinを作成してデータが送信されているため送信しています。PHPでJSONを受け取ってデータを使用する

私はこのコードをここに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でも見ることができる唯一のコードです。しかし、Webhookが起動するたびにJSONを "log.txt"ファイルに書きたくないのです。しかし、いったんコードを削除または調整しようとすると、JSONは表示されなくなります。私は$postdataをファイルに書き込んだ後、内容を取得して配列を取得しなければならないようです。

JSONに別のファイルに書き込むことなくJSONにアクセスできますか?

+0

'$ data = json_decode(file_get_contents( 'php:// input'));'はJSONを受け取るために必要なものでなければなりません。その場合、 'var_dump($ data);'は正しい情報を表示していませんか? – drew010

+0

'$ data = json_decode(file_get_contents( 'php:// input')););' – Brendin

+0

json_decodeを削除するとどうなりますか? PHPから入力されるものは何でも//入力?一部のリクエストにデータが含まれていないか、別のフォーマットで処理されているのだろうかと思います。 – drew010

答えて

0

私の根本的な思考プロセスは、ウェブフックの仕組みには欠陥がありました。

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; 

Shopifyのウェブフックにより送信されたPOST要求は、短時間だけのページを打つため、テキストファイルにfile_get_contents("php://input")の内容を書くために必要な、このコードだった理由。あなたがページをリフレッシュするとすぐに、あなたはすべてのPOSTデータを失う...私は分かっているようだ。つまり、JSON Shopifyが送信しているかどうかを判断する方法が必要でした。サーバー上で問題なく動作しています。だから私はこれを作成した...これは何

$json = json_decode(file_get_contents("php://input")); 
file_put_contents('./realRequests.txt', $json->id . "\n", FILE_APPEND); 

はShopifyはウェブフックを発射するために毎回のIDをキャプチャし、要求ファイルに新しい行にそれをwrties。そうすれば、あなたはshopifyから作業コードを受け取ることができます。