Webhooks: examples

In this section, you will find some code examples on how to consume webhook events. Every request made to your webhook endpoint will be of type POST.

An Azure function to connect to UPS and return their rates

Here are some basic examples :

PHP (5.0+)

$json = file_get_contents('php://input');
$body = json_decode($json, true);

if (is_null($body) or !isset($body['eventName'])) {
    // When something goes wrong, return an invalid status code
    // such as 400 BadRequest.
    header('HTTP/1.1 400 Bad Request');
    return;
}

switch ($body['eventName']) {
    case 'order.completed':
        // This is an order:completed event
        // do what needs to be done here.
        break;
}

// Return a valid status code such as 200 OK.
header('HTTP/1.1 200 OK');

C# ASP.NET MVC

using System.IO;
using System.Net;
using System.Web.Mvc;
using Newtonsoft.Json;

namespace MyApplication.Controllers
{
    public class WebhooksController : Controller
    {
        [HttpPost]
        public ActionResult Receive()
        {
            Request.InputStream.Position = 0;
            Request.InputStream.Seek(0, SeekOrigin.Begin);
            using(var reader = new StreamReader(Request.InputStream))
            {
                var json = reader.ReadToEnd();
                var body = JsonConvert.DeserializeObject<dynamic>(json);
                try
                {
                    switch ((string)body.eventName)
                    {
                        case "order.completed":
                            // This is an order:completed event
                            // do what needs to be done here.
                            break;
                    }
                    // Return a valid status code such as 200 OK.
                    return new HttpStatusCodeResult(HttpStatusCode.OK);
                }
                catch
                {
                    // When something goes wrong, return an invalid status code
                    // such as 400 BadRequest.
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
            }
        }
    }
}

Ruby (Rails)

class WebhookController < ApplicationController
    def event
        begin
            data = ActiveSupport::JSON.decode(request.body.read)
            case data[:eventName]
            when 'order.completed'
            # This is an order:completed event
            # do what needs to be done here.
            end
        rescue
            # When something goes wrong, return an invalid status code
            # such as 400 BadRequest.
            head :bad_request
        else
            # Return a valid status code such as 200 OK.
            head :ok
        end
    end
end

Was this article helpful?