I couldn’t find any reliable C# examples on how to create a webhook using BigCommerce’s API so I thought I’d share my solution. The example code below will create a webhook when an order is created in your BigCommerce store.
//BigCommerce Authorization
string clientID = "<your_client_id>";
string token = "<your_token>";
string storeHash = "<your_store_hash>";
string resourcePath = "hooks";
string baseURL = "https://api.bigcommerce.com/stores/" + storeHash + "/v2/" + resourcePath;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(baseURL);
req.AllowAutoRedirect = true;
req.ContentType = "application/json";
req.Accept = "application/json";
req.Method = "POST";
req.Headers.Add("X-Auth-Client", clientID);
req.Headers.Add("X-Auth-Token", token);
//send scope and destination as json
using (var streamWriter = new StreamWriter(req.GetRequestStream()))
{
string json = "{\"scope\":\"store/order/created\"," +
"\"destination\":\"https://app.example.com/orders\"}";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
string jsonResponse = null;
using (WebResponse resp = req.GetResponse())
{
if (req.HaveResponse && resp != null)
{
using (var reader = new StreamReader(resp.GetResponseStream()))
{
jsonResponse = reader.ReadToEnd();
}
}
}
Response.Write(jsonResponse);
2 Comments
What does your listener look like?
Listener is a .NET web service.
[WebMethod]
public void orders()
{
Context.Request.InputStream.Position = 0;
string payload = new System.IO.StreamReader(Context.Request.InputStream).ReadToEnd();
//process payload
}