I've setup my first Webhook with WooCommerce so that it notifies my database server when a new order is placed. The Webhook is setup and being sent/received by my server - I'm not trying to write a PHP page that will parse the payload of the Webhook so I can write a new record into my CRM database with the order details.
I'm having trouble getting the content of the Webhook. According to the log for the Webhook inside WooCommerce the request details are (I've abbreviated the content JSON data):
Headers:
user-agent: WooCommerce/2.6.4 Hookshot (WordPress/4.6.1)
content-type: application/json
x-wc-webhook-source: http://example.com/
x-wc-webhook-topic: order.created
x-wc-webhook-resource: order
x-wc-webhook-event: created
x-wc-webhook-signature: xxxxxxxxxxxxxxxxxxx=
x-wc-webhook-id: 3233
x-wc-webhook-delivery-id: 94
Content:
{"order":{"id":3242,"order_number":3242,"order_key":"wc_order_57f1dbe5bcf03","created_at":"2016-10-03T04:17:41Z", .....
It's doing a POST request but I haven't been able to retrieve the POST data, e.g.
$postData = var_export($_POST, true);
error_log($postData, 0);
doesn't return any of the JSON data. I'm looking for assistance with:
This is what worked for me in the end:
$webhookContent = "";
$webhook = fopen('php://input' , 'rb');
while (!feof($webhook)) {
$webhookContent .= fread($webhook, 4096);
}
fclose($webhook);
<?php
while ( have_posts() ) : the_post();
$order = new WC_Order($order_id);
$product = new WC_Product($order_id);
foreach($order->get_items() as $item)
{
$json['items'][] = array (
'name' => $item['name'],
'quantity' => $item['qty']
}
endwhile;
echo $result = json_format($json);
return $result;
?>