将 Stripe Webhooks 发送到 Grails 中的控制器

Sending Stripe Webhooks to Controller in Grails

我正在尝试从 Stripe on Grails(2.5.1) 捕获测试 Web 挂钩。我在我的 URL 映射中设置了一行,当直接转到本地计算机 运行 浏览器上的 URL 时,ngrok 执行控制器方法 ok。但是,我似乎无法将 Stripe 有效负载发送到控制器?谢谢!

 //UrlMappings.groovy
class UrlMappings {

  static mappings = {

    "/stripe-demo" (controller: 'charge', action: 'respond')

    "/$controller/$action?/$id?(.$format)?"{
        constraints {
            // apply constraints here
        }
    }


    "/"(view:"/index")
    "500"(view:'/error')


     }
 }



//Controller
package stripe.demo

class ChargeController {

def respond(String payload){

//capture the payload sent by Stripe and do something, also respond with 200.

 }

  }

条带 webhook 数据来自 request.JSON,因此将其数据绑定到这样的字符串是行不通的。这是一个例子:

class ChargeController {
    def webHook() {
        if(request.JSON) {
            // do something with it, eg:
            switch(request.JSON.type) { }
        }
        render '' // sends nothing back but a http 200
    }
}

然后将 webhook 设置为 https://example.com/charge/webHook(请注意,它必须可以访问,以便 localhost 无法工作)