Stripe.comと統合しようとしていますが、Webhook が問題を引き起こしています。
ストライプから 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.Financial.WebhooksController のメソッド 'System.Web.Mvc.JsonResult Stripe(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています'。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。
ストライプ チャットルームの 1 人のスタッフ メンバーによると、Webhook は次のようなもので送信されます。
curl -i -H "Host: mydomain.com" -H "Content-Type: application/json" -X POST http://{resolvedIP}/Financial/Webhooks/Stripe/4 -d '{big ol' json object}'
データのないリクエストが通過するときに、データのあるリクエストがルーティングで失敗するのはなぜですか?