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