2016-04-06 28 views
0

我想從Grails(2.5.1)上的Stripe抓取測試Web鉤子。我在我的URL映射中設置了一行,當直接訪問運行ngrok的本地計算機上瀏覽器的URL時,會執行控制器方法。然而,我似乎無法將Stripe有效載荷傳遞給控制器​​?謝謝!在Grails中發送Stripe Webhooks到控制器

//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. 

} 

    } 

回答

1

條紋網絡掛接數據來自於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 
    } 
} 

,然後設置網絡掛接到https://example.com/charge/webHook(注意,它必須是accessable進行條帶化,以便本地主機無法正常工作)

+0

感謝request.JSON小費!我不是很確定您將webhook設置爲example.com的意思嗎? (我正在使用ngrok並轉發到localhost:8080,所以可能問題是ngrok沒有正確轉發。) –

+0

example.com就是這樣一個例子(使用您的實際域名),但聽起來像您轉發瞭解。你總是可以直接使用curl curl -H來發布鉤子。Content-Type:application/json「-d'{webookdatahere}'' – erichelgeson

+0

Ahh ok。謝謝!我想我必須這樣做。目前在ngrok屏幕上出現302錯誤,因此要試圖解決否則使用curl選項。非常感謝! –