条带webhooks失败,参数'id'为空条目

时间:2012-08-30 13:48:54

标签: c# asp.net-mvc stripe-payments webhooks

我正在尝试与stripe.com集成,而且webhooks正在给我一个问题。

我已经创建了一个控制器和一个动作来接受和解析stripe中的webhook:

public class WebhooksController : AbstractController
{
    public JsonResult Stripe(int id)
    {
        // some parsing code
    }
}

这是通过

路由的
routes.MapRoute("webhooks", "Financial/Webhooks/{action}/{id}", new { "Webhooks", "Index", id = "" }, new string[] { "MyApp.Controllers.Financial" });

我可以通过浏览器或

轻松点击此路线
curl -i -H "Host: mydomain.com" -H "Content-Type: application/json" -X POST http://{resolvedIP}/Financial/Webhooks/Stripe/4

但是,当我尝试使用“测试webhook”功能从条纹仪表板触发webhook时,我得到了500:

  

参数字典包含'Drg.M3.Client.Controllers中方法'System.Web.Mvc.JsonResult Stripe(Int32)'的非可空类型'System.Int32'的参数'id'的空条目。 Financial.WebhooksController”。可选参数必须是引用类型,可空类型,或者声明为可选参数。

根据条纹聊天室的一名工作人员的说法,webhooks发送的内容如下:

curl -i -H "Host: mydomain.com" -H "Content-Type: application/json" -X POST http://{resolvedIP}/Financial/Webhooks/Stripe/4 -d '{big ol' json object}'

当没有数据的请求通过时,为什么在路由时数据请求会失败?

1 个答案:

答案 0 :(得分:1)

解决。

事实证明,当MVC看到内容类型为application/json时,它会尝试将数据自动绑定到您的操作参数。

由于json对象Stripe发送包含

{
  "id" : "evt_0000000000",
  ...
}

id参数设置为evt_0000000000而不是4