2016-04-06 1 views
0

J'essaye de capturer un crochet de Web de test de Stripe on Grails (2.5.1). Je mets en place une ligne dans mes URLmappings qui, lorsque je vais directement à l'URL sur un navigateur sur mon ordinateur local en cours d'exécution, ngrok exécute la méthode du contrôleur ok. Je ne peux pas sembler obtenir la charge utile de Stripe au contrôleur cependant? Merci!Envoyer des Webhooks Stripe au contrôleur dans Grails

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

} 

    } 

Répondre

1

La bande de données webhook vient request.JSON si databinding à une chaîne comme ça ne marchera pas. Voici un exemple:

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

Et puis définissez le webhook à https://example.com/charge/webHook (note, il doit être accessible à entrelacer si localhost ne fonctionnera pas)

+0

Merci pour la pointe de request.JSON! Je ne suis pas tout à fait sûr de ce que vous voulez dire à propos du paramétrage du webhook sur example.com? (J'utilise ngrok et redirige vers localhost: 8080 alors peut-être que le problème est que ngrok ne transmet pas correctement.) –

+0

exemple.com est juste un exemple (utilisez votre domaine actuel) mais vous semble avoir retransmis. Vous pouvez toujours juste poster le crochet directement avec curl 'curl -H" Content-Type: application/json "-d '{webookdatahere}'' – erichelgeson

+0

Ahh ok. Merci! Je pense que je vais devoir faire ça. En cours d'obtention d'une erreur 302 sur l'écran ngrok donc va essayer de résoudre cela sinon aller avec l'option curl. Merci beaucoup! –