我已经在chargify中配置了webhook url。此url用于webapi。
所以我在webapi中处理所有事件。但我想知道,我们如何才能从chargify获得请求参数。如果有人有一个例子,请给我。
以下是来自chargify webhook的一个事件的请求
您可以获得以下链接,该链接用于发送事件的webhook请求。https://docs.chargify.com/webhooks#signup-成功有效载荷
请帮我一下。
提前感谢。
我尝试了上面的解决方案,但它对我不起作用(可能是因为它是2015年的解决方案并且Chargify当时做了一些更改)。
对我有效的是:
[HttpPost]
[Route("test")]
[Consumes("application/x-www-form-urlencoded")]
public ActionResult Test([FromForm] RequestObject request)
如果我们将RequestObject
与ModelBinding一起使用,我们必须创建要使用的对象和变量的数据结构。
例如,对于signup_success
事件,对象Product、Customer和Customer Reference的数据结构为:
public class RequestObject
{
public string id { get; set; }
public Payload payload { get; set; }
}
public class Payload
{
public Subscription subscription { get; set; }
}
public class Subscription
{
public long id { get; set; }
public Product product { get; set; }
public Customer customer { get; set; }
}
public class Product
{
public long id { get; set; }
}
public class Customer
{
public long id { get; set; }
public string reference { get; set; }
}
由于它是作为表单参数提交到webhook url的,因此在MVC中,您的签名看起来类似于以下内容:
public ActionResult ReceiveWebhook(FormCollection webhookPayload, string signature_hmac_sha_256)
参数signature_hmac_sha_256
包含在查询字符串中,因此它被传递到这里。
然后,您可以使用event
:运行不同的逻辑
var eventName = webhookPayload["event"];